首页 > 代码库 > hadoop概述

hadoop概述

一、hadoop的起源
Apache Lucene
  开源的高性能全文检索工具包
Apache Nutch
  开源的web搜索引擎
google的三篇论文
  GFS -> HDFS
  MapReduce -> MapReduce
  BigTable -> HBase
Apache Hadoop
  大规模数据处理

二、hadoop的发展
* Common
  工具、服务
hadoop1.x
  * MapReduce
      对海量数据的处理
      分布式
      思想:分而治之
         大数据集分为小的数据集
         每个数据集,进行逻辑业务处理(map)
         合并统计数据结果(reduce)
  * HDFS
      存储海量数据
      分布式
      数据安全性
        副本数据(3份)

      数据是以block的方式进行存储的

      NameNode

        * 内存

        * 本地磁盘

          * fsimage:镜像文件

          * edites:编辑日志

hadoop2.x
      * YARN
          分布式资源管理框架
          * 管理整个集群的资源(内存、CPU核数)
          * 分配调度集群的资源
三、hadoop模块
Hadoop项目主要包括一下四个模块:
Hadoop Common:
  为其他Hadoop模块提供基础设施
Hadoop HDFS:
  一个高可靠、高吞吐量的分布式文件系统
Hadoop MapReduce:
  一个分布式的离线并行计算框架
Hadoop YARN:
  一个新的MapReduce框架,任务调度与资源管理

四、HDFS系统架构

技术分享

主节点:NameNode

  用它来存储文件的元数据(文件目录、文件属性、每个文件的块列表和块所在DataNode等)

从节点:DataNode

  在本地文件系统存储文件块数据,以及数据块的校验和

Secondary NameNode

  辅助Namenode,获取HDFS元数据的快照(合并fsimage和edites文件)

 

五、YARN架构图

技术分享

ResourceManager 资源管理

  * 处理客户端请求

  * 启动/监控ApplicationMaster

  * 监控NodeManager

  * 资源分配与调度

NodeManager 节点资源管理

  * 单个节点上的资源管理

  * 处理来自ResourceManager的命令

  * 处理来自ApplicationMaster的命令

ApplicationMaster 应用的管理者

  * 数据切分  

  * 为应用程序申请资源,并分配给内部的任务

  * 任务监控与容错

Container  资源容器

 

六、离线计算框架 MapReduce

计算分两个阶段:

  * Map  处理

  * Reduce 汇总

shuffle(洗牌)连接Map和Reduce两个阶段

  * Map Task 将数据写到本地磁盘

  * Reduce Task 从每个Map Task上读取一份数据

仅适合离线批处理

  * 具有很好的容错性和扩展性

  * 适合简单的批处理任务

缺点明显

  * 启动开销大、过多使用磁盘导致效率低下等

七、MapReduce在YARN上执行的原理图

技术分享

 

hadoop概述