YARN分析
1.YARN描述
YARN作为一个公共的资源管理平台,实现hadoop集群的资源共享,任何满足规则的计算引擎都可以在上面执行,YARN不仅仅支持MapReduce,还支持Spark、Flink等计算引擎;
2.YARN架构分析
YARN分为2个部分,ResourceManager、NodeManager;
YARN主要负责集群资源的管理和调度,支持主从架构,主节点最多可以有2个,从节点不限制;
ResourceManager:主节点主要负责集群资源的分配和管理;
NodeManager::从节点主要负责当前机器资源管理;
YARN主要管理CPU和内存的资源,NodeManager在启动的时候会向ResourceManager注册当前节点的CPU和内存信息;
yarn.nodemanager.resource.memory-mb:当前节点内存,默认8192MB(在yarn-site.xml中配置);
yarn.nodemanager.resource.cpu-vcores:当前节点虚拟cpu,默认8个(在yarn-site.xml中配置);
3.YARN中的调度器
3.1 FIFO Scheduler
先进先出队列形式的调度器;
3.2 Capacity Scheduler
FIFO多队列版本的调度器,Hadoop2.0默认的调度器,规划多个队列,每个队列规划好所占用资源的百分比,在程序中指定场景使用对应的队列(使用最多的一种调度器);
3.3 Fair Scheduler
多队列、多用户共享资源的调度器,当只有一个任务时会占用所有资源,当有新任务来到时当前正在执行的任务会释放掉一部分资源让新任务同时执行(新任务不会等待,会共享资源执行任务);
3.4 配置调度器以及资源
vi capacity-scheduler.xml
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>default,fast,slow</value>
<description>队列列表</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.capacity</name>
<value>70</value>
<description>default队列资源70%.</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.fast.capacity</name>
<value>20</value>
<description>fast队列资源20%.</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.slow.capacity</name>
<value>10</value>
<description>slow队列资源10%.</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
<value>70</value>
<description>default队列最大资源70%.</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.fast.maximum-capacity</name>
<value>20</value>
<description>fast队列最大资源20%.</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.slow.maximum-capacity</name>
<value>10</value>
<description>fast队列最大资源10%.</description>
</property>