hadoop(1):hadoop概述

hadoop概述

hadoop是 Doug CuttingLucene
之后的一个项目
主要用于 计算
是一个 开源,可靠,可扩展 的分布式计算框架
主要有

  • hdfs
    • 也就是 hadoop 的 dfs(Distributed File System)
  • MapReduce
    • 也就是核心想法(先Map,再reduce)
    • java8 里面也看见对应的方法,感觉如果数据量小,现在用别的也可以实现,只是时间会长很多
  • yarn
    • 分布式资源调度

当然,hadoop1 和 hadoop2 的一些名词有变化
但是,对应的实现,是没有太大区别的
好处是,可以多台机器同时处理,通过心跳去及时获取计算结果

hadoop的场景

一般可以用于

  • 日志分析
  • 海量数据的计算
  • 复杂算法
  • 搜索引擎
  • dsp获取的个人数据以及为行为分析提供数据

对应的hadoop生态圈

《hadoop(1):hadoop概述》 hadoop生态图

  • Zookeeper
    • 分布式协作服务
  • HBase
    • 一个实时的nosql
    • sql(关系型数据库) 和 nosql(非关系型数据库)
      • mysql, Oracle、SQLServer、DB2 都是关系型数据库(当数据量不是太大的时候,有又是)
      • MongoDB(很常见的nosql), Redis(很常见的内存数据库),Vertica(很少人用,原来公司用过,很强大),HBase
  • Hive
    • 数据仓库
    • 存储数据用
  • Pig
    • 数据流处理
  • Mahout
    • 数据挖掘库
    • 哎,超级难
    • 感觉数学要好,算法要好
  • MapReduce
    • 计算的核心
  • HDFS
    • hadoop的 dfs(Distributed File System)分布式文件系统
    • 感觉记住几个命令就行了
  • Flume
    • 日志收集
  • Sqoop
    • 数据库ETL,转换数据(Hive -> HBase, HBase -> Hive 等)
    • 没了解过

Hadoop核心

Hadoop Common

  • 很多项目都有common模块
  • 常用的基础,都放在里面
    Hadoop HDFS
  • hadoop的 dfs(Distributed File System)分布式文件系统
    Hadoop MapReduce
  • 分布式离线并行计算框架
  • 也就是核心想法(先Map,再reduce)
    Hadoop YARN
  • 新的MapReduce框架, 任务调度,资源管理

hdfs相关

namenode

  • Metadata存储一些信息
    • 比如, name名字, replicas备份数,路径等等
    • 记得,android的apk也有META-INF, html一般头部也有 meta 信息
  • 分开块处理信息
    • hadoop2, 默认128m一个块
    • hadoop1, 默认64m一个块

datanode

  • 存储信息
  • namenode分块后,信息分别会存储在datanode中

secondnamenode

  • namenode的副手吧
  • 最好和namenode不在一个服务器上,当namenode倒掉后,secondnamenode会跟上

yarn Architecture构架图

yarn (Yet Another Resource Negotiator,另一种资源协调者)
整个集群的资源调度,同时监控
比如,一个任务需要的cpu,内存等
这里ResourceManager是总的管理者,所有nodemanager的都由它管理
nodemanager一般都在不同的机器上

《hadoop(1):hadoop概述》

一般流程

  • client 给 ResourceManager 一个请求
  • 会转换成一个Task(上图有, MapTask, ReduceTask,MPI Task)
  • Task会交给AppMaster,创建一个进程,获取信息,做对应的操作
  • 同时, AppMaster会给 ResourceManager 对应的信息返回,告诉需要的资源
  • ResourceManager 会根据对应的情况,分配资源
  • 外部所有的Container,由AppMaster统一管理

hadoop核心 MapReduce

Map任务

  • 读取输入内存, 解析成 key,value 键值对
  • 重写map方法, 编写业务输出的key, value
  • 对 key,value 进行分区 (Partitioner类)
  • 将键值对排序,分组。相同key放入同一个集合

Reduce任务

  • 多个map输入, 按照不同的分区,copy到不同的 reduce节点
  • 对多个map任务进行合并,排序。根据逻辑,得到新的 key,value输出
  • 把reduce的输出,保存在文件中
    原文作者:dodo_lihao
    原文地址: https://www.jianshu.com/p/372dba4f988d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞