Hadoop1.0中的状况
- JobTracker必须是不断跟踪所有的taskTracker和所有的map,reduce任务,taskTracker上的任务都是JobTracker来分配的
- 2.0 优化的方向
- 我们减少了单个JobTracker的职责,将部分职责委派给taskTracker(AM),因为集群中有多taskTracker,在新的设计中,这个概念通过将JobTracker的双重职责(RM集群资源管理和任务协调(AM))分开为俩中不同类型的进程来反映
- 不在拥有JobTracker,引入资源管理器(RM),赋值跟踪集群中的活动节点和可用资源,并将它们分配给任务
- 对于提交给集群的每个作业,会启动一个专用的,短暂的JobTracker(AM)来控制改作业中任务的执行,短暂的JobTracker由在从属节点(NodeManager)上运行的taskTracker启动
Hadoop2.0中的设计
- ResourceManager(RM)代替集群管理器
- ApplicationMaster(AM)代替一个专用且短暂的JobTracker
- NodeManger(NM)代替了taskTracker
- 一个分布式的应用程序代替了一个MapReduce作业
- 重构的根本思想:将JobTracker俩个主要的功能跟历程单独的组件,这俩个功能是 资源管理(RM)和任务调度/监控(AM)
Hadoop1.0跟2.0的对比
对比- slot的大小是固定的,container的大小是动态的
- yarn中任务都成为了一个应用程序(AM)
- AM挂了,这个作业就挂了,在1.0中相当于JobTracker挂掉,这个集群挂掉, yarn中只是单独一个AM挂掉,然后RM会重新启动一个AM
yarn的整个架构
整个架构- yarn类似的相当于一个操作系统
- MapReduce成为了yarn上的一种应用框架,相当于spark,hive,storm
Yarn相对于旧的MapReduce框架的优势
- 减少了JobTracker(现在的RM)的资源消耗,并且让监测每一个job子任务(tasks)状态的程序分布式化了,更安全,更优美
- AM是一个可变更的部分,用户可以对不同的编程模型写自己的AM,让更多类型的编程模型能够泡在Hadoop急群众
- 对资源的标识以内存为单位,比之前以剩余slot数据更合理
- 老的框架中,JobTracker一个很大的负担就是监控job下的tasks的运行状况,现在,这个部分就扔给了ApplicationMaster做了
- 资源表示成内存量,那就没有了之前的map slot /reduce slot分开造成集群资源闲置的尴尬情况
Yarn的容错能力
- RM挂掉:单点故障,新版本可以基于Zookeeper实现HA高可用集群,可通过配置 进行设置准备RM,主提供服务,备同步主的信息,一单主挂掉,备立即做切换阶梯进行服务
- NM挂掉: 不止一个,当一个挂掉,会通过心跳方式通知RM,RM将情况通知对应AM, AM作进一步处理
- AM挂掉: 若挂掉,RM负责重启,其实RM上有一个RMApplicationMaster,是AM的AM,上面保存已经完成的task,若重启AM,无需重新运行已经完成的task
网友评论