YARN(YetAnother Resource Negotiator)
来源:互联网 发布:js和java哪个好 编辑:程序博客网 时间:2024/04/29 23:08
YARN(YetAnother Resource Negotiator)
YARN:针对MapReduce在扩展性和多框架支持方面的不足(扩展性受限、单点故障、难以支持MR之外的计算),提出了全新的资源管理框架YARN,它将JobTracker中的资源管理和作业控制功能分开,分别由两个不同进程ResourceManager和ApplicationMaster实现,其中ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅仅负责管理一个应用程序。
MapReduce框架的问题主要集中在:
(1) JobTracker是MapReduce的集中处理点,存在单点故障;
(2) JobTracker完成了太大的任务,造成了过多的资源消耗:当MapReduce job非常多的时候,会造成很大的内存开销,也就增加了JobTracker fail的风险(MapReduce只能支持4000节点主机的上限!);
(3) TaskTracker端:以MapReduce task的数目为资源的表示过于简单,没有考虑到cpu/内存的占用情况,如果两个大内存消耗的task被调度在一起,很容易发生内存溢出错误;
(4) 在TaskTracker端把资源强制划分为map task slot和reduce task slot,如果当系统中只有map task或者只有reduce task时会造成资源浪费;
(5) 源代码层面分析:一个类做了太多事情,代码量多大3000多行,造成类的任务不清晰,增加bug修复和版本维护的难度等
MR:离线计算框架;Storm:实时计算框架;Spark:内存计算框架!
YARN基本结构(Container是Yarn作资源隔离所用)
ResourceManager:管理和分配集群的资源,是集群的一个单点,通过zookeeper来保存状态以便failover(容错)。RM主要包含两个功能组件:Applications Manager(AM)和Resource Scheduler(RS),其中AM负责接收client的作业提交的请求,为AppMaster请求Container,并且处理AM的fail;RS负责在多个application之间分配资源,存在queue capacity的限制,RS调度的单位是Resource Container,一个Container是memory,cpu,disk,network的组合。Yarn支持可插拔的调度器!(处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度)
NodeManager:部署在每个节点上的slave,负责启动container,并且检测进程组资源使用情况。NodeManager上可以搭载一些简单的service,比如shuffle service。(单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令)
ApplicationMaster:每个application的master,负责和Resource Manager协商资源,将相应的Task分配到合适的Container上,并监测Task的执行情况。在和RM协商资源的时候可以加上资源偏好,比如MapReduceMaster为了本地化会将InputSplit的信息转化成对应的资源请求。ApplicationMaster将其history文件持久化存储在HDFS上,并在AM出问题的时候,回放history文件,进行断点重启。(数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错)
Yarn模块架构(Yarn:下一代MapReduce!)
过程:(1)用户通过JobClient向RM提交作业;(2)RM为AM分配Container,并请求NM启动AM;(3)AM启动后向RM协商Task的资源;(4)获得资源后AM通知NM启动Task;(5)Task启动后向AM发送心跳,更新进度、状态和出错信息。
Yarn采用基于事件驱动进制的异步编程模型:一方面使得处理逻辑更加清晰,另一方面较好地改善了并发性。EventHandler对事件的处理过程通过状态机来描述,handler接受到一个事件后跳转到另外一个状态,同时触发一个动作(通常是产生一个其他类型的event,形成一个事件处理流)。
如下图RMAppAttempt的状态机所示,比如在SCHEDULED状态,接收到CONTAINER_ALLOCATED事件,会跳转到ALLOCATED状态,表示已经为对应的AM分配了Container,同时会触发一个LAUNCH AM的事件,RM接到该事件会请求NM启动AM Container。
Yarn采用事件驱动的模式,下面通过对一个作业提交、启动、执行的分析来说明JobClient、ResourceManager、AppMaster、NodeManager的功能模块组织和事件处理流程。
JobClient模块图
JobClient通过ClientRMProtocol和RM通信,向其提交作业;作业成功启动后通过MRClientProtocol和MRAppMaster通信,查询作业和任务的状态进度信息,作业完成后通过MRClientProtocol和JobHistoryServer通信查询历史信息。
ResourceManager:在RM上一个RMApp对象代表一个application,和task类似,application也引入attempt的概念,一个application因为机器故障等原因application master失败,RM会重新分配一个AM继续尝试。
作业提交到RM后,RM事件流图
MRAppMaster事件流图
NodeManager模块和事件流图
运行在YARN上的软件
- YARN(YetAnother Resource Negotiator)
- YARN(YetAnother Resource Negotiator)
- # Apache Hadoop Yarn: Yet Another Resource Negotiator论文解读
- 论文阅读笔记《Apache Hadoop YARN:Yet Another Resource Negotiator》
- YARN-Philosophy behind YARN Resource Management
- yarn-resource.java阅读笔记
- yarn LocalResourcesTrackerImpl remove resource Error
- YARN的 Resource Manager的作用
- Hadoop YARN 框架 Resource Management 详解
- Best Practices for YARN Resource Management
- HDP学习--YARN Resource Management(00)
- HDP学习--YARN Resource Management(01)
- HDP学习--YARN Resource Management(02)
- YARN/MRv2 Resource Manager深入剖析—RM总体架构
- YARN/MRv2 Resource Manager深入剖析—AM管理
- YARN/MRv2 Resource Manager深入剖析—AM管理
- YARN/MRv2 Resource Manager深入剖析—RM总体架构
- hadoop2.2.0 yarn-site.xml--Resource Manager Configs
- Spark:一个高效的分布式计算系统
- LeetCode: Linked List Cycle
- poi报表实现,导出到excel文件
- vs2010 快捷键大全
- Apache软件基金会相关项目
- YARN(YetAnother Resource Negotiator)
- LeetCode: Linked_List_Cycle II
- VC6.0快捷键 与 Visual Assist X 快捷键
- 每日一编C-2
- jxl实现excel文件变成java集合
- 总结Java常见面试题和答案
- Warning: World-writable config file '/data0/mysql/3306/my.cnf' is ignored
- uva 10271 DP
- ZOJ 1151(单词反转)