Hadoop2.X中的描述
一,Hadoop 2.x产生背景
1,Hadoop 1.0中HDFS和MapReduce在高可用、扩展性等方面存在问题
2,HDFS存在的问题NameNode单点故障,难以应用于在线场景
NameNode压力过大,且内存受限,影响系统扩展
3,MapReduce存在的问题JobTracker单点故障
JobTracker访问压力大,影响系统扩展性
难以支持除MapReduce之外的计算框架,比如Spark、Storm等
二,Hadoop 2.x架构
1,Hadoop 1.x到Hadoop 2.x架构的改变
HDFS:NN Federation、HA
MapReduce:运行在YARN上的MR
YARN:资源管理系统
三,Hadoop2.x中的HDFS的变化
1,解决HDFS 1.0中单点故障和内存受限问题。2,解决单点故障
HDFS HA:通过主备NameNode解决
如果主NameNode发生故障,则切换到备NameNode上
3,解决内存受限问题
HDFS Federation(联邦)
水平扩展,支持多个NameNode
每个NameNode分管一部分目录
所有NameNode共享所有DataNode存储资
4,2.x仅是架构上发生了变化,使用方式不变,对HDFS使用者透明,HDFS 1.x中的命令和API仍可以使用
四,Hadoop2.x中的HDFS中的HA
1,架构图如下2,描述
2.1,主备NameNode2.2,解决单点故障
主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换
所有DataNode同时向两个NameNode汇报数据块信息
2.3,两种切换选择
手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合
自动切换:基于Zookeeper实现
2.4,基于Zookeeper自动切换方案
Zookeeper Failover Controller:监控NameNode健康状态,并向Zookeeper注册NameNode
NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC锁的NameNode变为active
3,Federation
3.1,描述通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使到namenode/namespace可以通过增加机器来进行水平扩展
能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中
3.2,架构图
四,YARN
1,YARN:Yet Another Resource Negotiator
2,Hadoop 2.x新引入的资源管理系统,直接从MRv1演化而来的2.1,核心思想:将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现
2.2,ResourceManager:负责整个集群的资源管理和调度
2.3,ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等
3,YARN的引入,使得多个计算框架可运行在一个集群中3.1,每个应用程序对应一个ApplicationMaster
3.2,目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等
五,MapReduce On YARN
1,MapReduce On YARN:MRv2,将MapReduce作业直接运行在YARN上,而不是由JobTracker和TaskTracker构建的MRv1系统中
2,基本功能模块2.1,YARN:负责资源管理和调度
2.2,MRAppMaster:负责任务切分、任务调度、任务监控和容错等
2.3,MapTask/ReduceTask:任务驱动引擎,与MRv1一致
3,每个MapRduce作业对应一个MRAppMaster3.1,MRAppMaster任务调度
3.2,YARN将资源分配给MRAppMaster
3.3,MRAppMaster进一步将资源分配给内部的任务
4,MRAppMaster容错4.1,失败后,由YARN重新启动
4.2,任务失败后,MRAppMaster重新申请资源