Hadoop 由四部分组成

  • Hadoop HDFS:(hadoop distribute File System)一个高可靠、高吞吐量的分布式文件存储系统。
  • Hadoop MapReduce:分布式离线计算框架
  • Hadoop Yarn:任务调度和集群资源管理的框架
  • Hadoop common:⽀持其他模块的⼯具模块(Configuration、RPC、序列化机制、⽇志操作)

HDFS

HDFS如名所示,Hadoop的分布式文件系统,但是已经可以说是整个大数据环境下的文件存储系统。
Hadoop存储文件采用分治的思想,即将一个大文件分成许多的块分别备份存储,默认的存储块大小是128mb。
总的来说,存储一个文件的过程分三步:数据切割、制作副本、分散存储
HDFS有三个后台线程:
Hadoop重要组成概述 - 图1

图中涉及几个角色,这里一一介绍:

  • NameNode(nn):存储⽂件的元数据,⽐如⽂件名、⽂件⽬录结构、⽂件属性(⽣成时间、副本
    数、⽂件权限),以及每个⽂件的块列表和块所在的DataNode等。
  • SecondaryNameNode(2nn):辅助NameNode更好的⼯作,⽤来监控HDFS状态的辅助后台程
    序,每隔⼀段时间获取HDFS元数据快照。
  • DataNode(dn):在本地⽂件系统存储⽂件块数据,以及块数据的校验。

MapReduce

Hadoop的分布式离线计算框架
MapReduce = Map + Reduce
如上等价公式所示,MapReduce分工明确。Map阶段并行地计算分片上的数据,再将结果发送给进行Reduce的节点,进行结果汇总输出的阶段。
Hadoop重要组成概述 - 图2

Yarn

任务调度和集群资源管理框架
Yarn中有如下⼏个主要⻆⾊,同样,既是⻆⾊名、也是进程名,也指代所在计算机节点名称。

  • ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资
    源分配与调度;
  • NodeManager(nm):单个节点上的资源管理、处理来⾃ResourceManager的命令、处理来⾃
    ApplicationMaster的命令;
  • ApplicationMaster(am):为应⽤程序申请资源,并分配给内部任务、负责任务的监控与容错。
    申请资源是一个动态的过程,并不是在任务开始的时候申请资源便不再改变。
  • Container:对任务运⾏环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运
    ⾏相关的信息。
    ResourceManager是⽼⼤,NodeManager是⼩弟,ApplicationMaster是应用的抽象集合。

Hadoop重要组成概述 - 图3