Hadoop 1.0两大核心组件MapReduce和HDFS,均在不断发展中遇到了自身的局限性和不足,因此都有2.0进行优化发展。

一、MapReduce的优化发展

MapReduce 1.0,主要由job tracker和task tracker组成,既要负责计算框架,又要负责资源的调度与分配,主要有以下几个问题:

hadoop控件 hadoop1.0组件_hadoop控件

1、存在单点故障,由于Job tracker是单点部署,没有高可用手段,存在单点故障风险,影响整体平台可用性。

2、Job tracker工作职责太多,整体性能收到影响。既要负责计算框架,又要负责资源调度分配,性能受到影响,集群规模受限。

3、容易出现内存溢出,在map task和reduce task资源分配时,没有监控和限制手段,容易导致内存分配过多,导致内存溢出。

4、资源划分不合理,job tracker在资源分配时是以slot为单位,map task与reduce task分别分配资源,即使reduce task节点空闲,资源也不能给map task使用。

MapReduce的演进:

将原有MapReduce中资源调度和分配的功能剥离出来,提出YARN架构,将原有job tracker的资源管理、任务调度、任务监控功能进行拆分,形成新的组件。MapReduce 2.0则是运行在YARN上的纯粹的计算框架,由YARN提供资源调度管理服务。

YARN是纯粹的资源调度管理框架,而不是计算框架,三大组件:

Resource Manager:负责资源管理,主要负责处理客户端请求,启动监控application master,监控node manager,资源分配与调度;

Application Master:负责任务调度、管理、容错,资源监控,为应用程序申请资源,并分配给内部任务(map task、reduce task);

Node Manager:负责单个节点上的资源管理,处理来自resource manager和application master的命令,完成任务的执行。

YARN框架相比MapReduce 1.0的优势:

1、极大减少了resource manager的资源消耗;

2、使用application master来完成需要大量消耗资源的任务调度和监控;

3、多个作业使用不同的application master来进行监控,实现了监控的分布化;

4、MapReduce 1.0只能为MapReduce进行资源调度,YARN可以支持多种不同的计算框架(如spark、storm、impala等);

二、HDFS的优化发展

HDFS主要由NameNode和DataNode组成:

NameNode存储元数据,元数据保存在内存中,保存文件,block,DataNode之间的映射关系;

DataNode存储文件内容,文件内容保存在磁盘,维护了block id到DataNode本地文件的映射关系;

HDFS 1.0存在的问题:

1、namenode 单点故障问题

2、不可以水平扩展,纵向扩展受限于内存大小,不能扩展namespace;

3、系统整体性能受限于单个名称节点的吞吐量

4、单个名称节点难以提供不同程序之间的隔离性

5、HDFS HA是热备份,无法提供扩展性

HDFS HA(高可用):

1、部署NameNode active和NameNode standby,实现热备份,解决单点故障问题。通过zookeeper集群检测主备名称节点的心跳,监控健康状态。

2、Editlog通过共享存储系统进行同步,同步到主备名称节点中(active和standby)。

3、元数据映射表是通过底层DataNode不断分别向active和standby NameNode上报信息来实现同步的。

HDFS federation(联盟/集群)

hadoop控件 hadoop1.0组件_hadoop控件_02

部署多个名称节点来实现集群的扩展,通过federation设计可以解决单名称节点存在的各种问题:

1、HDFS集群扩展性;

2、性能更高效;

3、具备良好的隔离性;

4、federation并非是高可用的集群,可以采用HDFS federation+HA部署来实现高可用集群。