Hadoop 框架对比
1.框架简介
Hadoop1.0即第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中HDFS由一个NameNode和多个DateNode组成,MapReduce由一个JobTracker和多个TaskTracker组成。
Hadoop2.0即第二代Hadoop,由分布式存储系统HDFS、MapReduce和YARN三个系统组成,其中YARN是一个资源管理系统,负责集群资源管理和调度,MapReduce则是运行在YARN上的离线处理框架,称为MRv2(MapReduce的第二版)。Yarn作为Hadoop2.0中的资源管理系统,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)实现。并且Yarn是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度,不仅限于MapReduce一种框架,也可以为其他框架使用,如Tez、Spark、Storm等。
2.二者区别
hadoop1.0中的JobTracker和TaskTracker在hadoop2中被ResourceManager、ApplicationMaster、NodeManager三个部分替代。JobTracker一分为二,对应于ResourceManager和ApplicationMaster;TaskTracker对应于NodeManager。
- ResourceManager(RM) 代替集群资源管理器
- ApplicationMaster(AM) 代替一个专用且短暂的 JobTracker(任务管理)
- NodeManager(NM) 代替 TaskTracker
- 一个分布式应用程序代替一个 MapReduce作业
重点:JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控。
hadoop 1.0和2.0优缺点
1.hadoop 1.0
JobTracker必须不断跟踪所有TaskTracker和所有map、reduce任务,因为TaskTracker上的任务都是JobTracker来分配的。
2.hadoop 2.0 优点
- 良好的扩展性、高可用(多个应用作业资源隔离互不影响)
- 对多种类型、多版本的应用进行统一管理和调度
- 自带了多种用户调度器FIFO(先进先出,默认的调度器),Faire公平调度器(所有job共享集群资源,保证Job可以执行),适合共享集群环境
- 相比传统模式,提高了资源利用率、降低运维成本和数据共享成本
如下图,左边是hadoop 1.0的作业过程,右边是hadoop 2.0的作业过程。hadoop1.0是分配的slot资源单位,一个slot类似于是cpu和内存资源的一个打包,是资源分配的基础单位,hadoop2.0是一个对应的AppMaster(也是一个普通的Container容器)和由AM向RM申请然后在NM上分配的Container容器执行进程,完成作业任务。
Yarn 组件
ResourceManager
- RM处理客户端请求,接收JobSubmitter提交的作业,(按照作业的上下文(Context) 信息run.sh提交的参数,以及从
NodeManager(NM) 收集来的状态信息),启动调度过程,分配一个 Container作为AppMaster。 - RM拥有为系统中所有应用资源分配的决定权,是中心服务,做的事情就是调度、启动每一个Job所属的Application、另外监控Application的存在情况
- 与运行在每个节点上的NM进程交互,通过心跳通信,达到监控NM的目的
- RM 包括Scheduler任务调度和Application Manager(监控App Master,并负责重启)
- RM有一个可插拔的调度器组件Scheduler,Scheduler是一个纯粹的调度器,不负责应用程序的监控和状态跟踪(AM负责),不保证应用程序失败或硬件失败的情况下对Task的重启(AM负责)
Yarn提交过程
客户端向hadoop主节点上的RM提交任务,RM先在一个NodeManager上面启动AM对接客户端Job,AM再根据实际需要向RM申请更多Container资源,在对应的从节点启动Container并执行相关进程(Spark在container里则是线程,MR为一个进程包含map和reduce进程)。
Yarn的容错
RM:避免单点故障,基于ZooKeeper实现HA高可用,通过配置备用RM,主提供服务,备同步主的信息,一旦主挂掉,则立即切换继续进行服务。
NM:NM节点本身就不止一个,当一个挂掉后,会通过心跳方式通知RM,RM的AppManager会进一步处理上面的AM。
AM:若挂掉,RM负责重启,RM的AppManager保存了已经完成的task,若重启AM,无需重新运行已完成的task。
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 21, 2018 at 09:36 pm