Hadoop YARN

YARN的基本原理是,将资源管理和作业调度/监控的功能分离成独立的守护进程。也就是说,有一个全局的ResourceManager(RM),以及每个应用有一个ApplicationMaster(AM)。一个应用可以是单个的作业,也可以是一个作业有向无环图。

ResourceManager和NodeManager组成数据计算框架。在系统中,所有应用的资源分配由ResourceManager负责。每台机器是一个NodeManager,它负责监控container的资源使用(cpu,内存,磁盘,网络),并向ResourceManager/Scheduler报告。

实际上,每个应用的ApplicationMaster是一个特定库的框架,负责与ResourceManager协商资源,并监控和协调NodeManager执行任务。

Hadoop YARN_第1张图片

ResourceManager有两个主要的组成部分:Scheduler和ApplicationsManager。

Scheduler负责分配资源,Scheduler不监控或追踪应用的状态。所以,它也不负责重启由于应用失败或硬件错误导致的失败任务。Scheduler基于应用的资源请求来执行分配功能。它是基于Container来分配内存、cpu、磁盘和网络等资源。

Scheduler有一个插拔式的策略,这个策略是,在各种队列、应用中,能够对集群资源进行分区。当前支持的插拔的调度有CapacityScheduler和FairScheduler。

ApplicationsManager负责接收作业提交请求,协调指定执行应用的第一个container为ApplicationMaster,并在失败的时候,提供重启ApplicationMaster的服务。每个应用的ApplicationMaster有责任从Scheduler协商获取资源container,并追踪这些container的状态信息。

通俗来讲:
1、客户端(client)有个作业需要提交,找到ResourceManager,然后ResourceManager告诉client,我有两个小弟,Scheduler和ApplicationsManager,Scheduler负责资源调度,ApplicationsManager负责作业请求;
2、然后,client找到ApplicationsManager,ApplicationsManager接受了作业请求,并找其老大要了一个container来执行作业,并把这个container作为ApplicationMaster;
3、最后,ApplicationMaster会负责作业新的container的申请,及作业的监控。

参考文献:

  1. http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html

你可能感兴趣的:(Hadoop,yarn)