yarn-架构
原文:https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.htmlk
- 在hadoop-0.23,MapReduce经历了撤底的改造,现在我们称做MapReduce2.0(MRv2)或者YARN
- MRv2基本的想法是分离JobTracker两个主要的功能,资源管理(resource management)和作业调度或监控(job scheduling/monitoring),分离守护进程,想法是有一个全局资源管理器(ResourceManager(RM))和每个应用的应用主(ApplicationMaster(Am)).
- 应用程序(application)是经典的Map-Reduce中的单个job,或是jobs的一个DAG
- 资源管理器(ResourceManager)每一个节点从属,节点管理器(NodeManager(Nm)),形成数据计算框架,资源管理器(ResourceManager) 是仲裁在系统中的所有应用的资源的最终权力
- 每一个应用(per-application),应用主(ApplicationMaster),实际上是一个标准的计算框架库,任务是和资源管理器(ResourceManager)协商资源,工作是和节点管理器(NodeManager(s))执行和监控任务
资源管理器(ResourceManager)
- 有两个主要的组件:调度器(Scheduler)和应用程序管理器(ApplicationsManager)
调度器(Scheduler)
- 调度器(Scheduler)是负责分配资源, 对许多运行的应用常见的容量,对列等等的约束
- 调度器(Scheduler)是纯碎的调度,执行的应用(application)是没有监控和状态追踪
- 提供无法保证重新开启到期的应用程序故障或硬件故障的失败任务(tasks),
- 调度器(Scheduler)执行调度应用程序基本的资源需求,基于资源集装箱(resource Container)抽像的概念,包含的元素例如,内存,cpu,磁盘,网络配置,在早期版本,只有内存是支持的
- 调度器(Scheduler)有一个可插拔插件方针,负责分割集群资源在很多队列,应用程序配置,当前的Map-Reduce调度器(schedulers)例如容量调度器(CapatityScheduler),平衡调度器(FairScheduler),一些插件示例
容量调度器(CapatityScheduler)
- 支持分层队列允许更多的可预言的集群资源共享
应用程序管理器(ApplicationsManager)
- 负责接收作业提交(job-submissions)
- 协商第一个资源 执行标准的应用程序主(ApplicationMaster)的应用程序(application)
- 提供重启服务应用程序主资源失败
节点管理器 NodeManager
- 每台机器框架代理人负责容器,监控资源使用 (cpu, memory, disk, network) ,报告给 ResourceManager/Scheduler.
应用程序主 ApplicationMaster
- ApplicationMaster和调度器(Scheduler)协凋合适的资源容量
- 追踪和监控程序的状态
MRV2
- MRV2保持与以前的稳定版本(Hadoop的1.x的)API兼容性。
- 这意味着所有的map-reduce作业还是没有改变
- 只需重新编译。