点击标题下「蓝色微信名」可快速关注
一、yarn简介
YARN是一个通用的资源管理模块,可以为各类应用程序进行资源管理和调度。基本思想是将资源管理和作业调度/监视的功能拆分为多带带的守护程序。这个想法是拥有一个全局ResourceManager(RM)和每个应用程序ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的DAG。
在最早的HadoopMapReduce计算架构中,进行作业调度时使用FIFOScheduler。FIFO是指,所有用户的作业都被提交到一个队列中,然后按照作业的优先级,再按照作业提交时间的先后顺序选择将被执行的作业。Hadoop中只有一个作业队列,被提交的作业按照先后顺序在作业队列中排队,新来的作业插入到队尾。一个作业运行完成后,总是从队首取下一个作业运行。这种调度策略的优点是简单、易于实现,同时也减轻了JobTracker的负担。缺点是,它没有考虑到作业的紧迫程度,另外对小作业的运行不利。因此,逐渐衍生出可以分配资源的SuperiorScheduler和CapacityScheduler。
YARN模型主要由ResourceManager、ApplicationMaster和NodeManager组成
ResourceManager:负责集群中所有资源的统一管理和分配。接收来自各个节点(NodeManager)的资源汇报信息,并根据收集的资源按照一定的策略分配给各个应用程序。
ApplicationMaster:即图中的AppMstr,负责一个Application生命周期内的所有工作。包括:与RM调度器协商以获取资源;将得到的资源进一步分配给内部任务(资源的二次分配);与NM通信以启动/停止任务;监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
NodeManager(NM)是YARN中每个节点上的代理,管理Hadoop集群中单个计算节点,包括与ResourceManger保持通信,监督Container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliaryservice)。
1. 首先由客户端生成Application信息,提交给ResourceManager。
2. ResourceManager为Application分配第一个Container(ApplicationMaster),并在该Container上启动Driver。
3. ApplicationMaster向ResourceManager申请资源以运行Container(容器)。
ResourceManager分配Container给ApplicationMaster,ApplicationMaster和相关的NodeManager通讯,在获得的Container上启动Executor,Executor启动后,开始向Driver注册并申请Task。
4. Driver分配Task给Executor执行。
5. Executor执行Task并向Driver汇报运行状况。
通过yarnweb UI查询集群资源总量,Yarn配置文件yarn-site.xml配置文件
1. 配置ResourceManager属性(集群)
根据集群和节点物理CPU及内存配置设置参数
2. 配置NodeManager属性(节点)
yarn.nodemanager.resource.cpu-vcores”设置当前节点上NodeManager可使用的虚拟CPU核数,建议按节点实际逻辑核数的1.5到2倍配置
“yarn.nodemanager.resource.memory-mb”设置当前节点上NodeManager可使用的物理内存大小,建议按节点实际物理内存大小的75%配置
3. 配置Scheduler属性(容器)
(1)设置容器最小最大内存
yarn.scheduler.maximum-allocation-mb
yarn.scheduler.minimum-allocation-mb
(2)设置容器最小最大CPU
yarn.scheduler.minimum-allocation-vcores
yarn.scheduler.maximum-allocation-vcores
注:yarn.scheduler.maximum-allocation-vcores。不能高于maxResources。该属性对于根队列无效。
4. 配置MapReduce属性
MapReduce向YARN请求三种不同的容器:应用程序主容器,地图容器和reduce容器。对于每种容器类型,都有一组对应的属性可用于设置请求的资源。
5. 资源故障处理
当调度资源运行出错时,NodeManager进程出现“java.lang.OutOfMemoryError:Direct buffermemory”的错误;查询NodeManager的日志,看是否存在错误日志“OutOfMemoryError”报错。
运行任务前按照实际需要配置NodeManager的相关内存参数
堆外内存(MB)=(Spark单个Stagetask的最大数量/可用的NodeManager数量)*32 * 机器核数/1024/1024
堆内内存(MB)=(Spark单个Stagetask的最大数量/可用的NodeManager数量)*512/1024/1024
参考:https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceModel.html
https://support.huawei.com/hedex/hdx.do?docid=EDOC1100094387&lang=zh&idPath=22658044%7C7919788%7C9856606%7C21110924
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130038.html
摘要:包括等,它们共同维护了一个事件与事件处理器的映射表,用来处理各个事件。例如内部包含一个中央异步调度器,并注册了等一系列事件事件处理器,由中央异步调度器统一管理和调度。当状态机转换到最终状态时,则退出。 大数据梦工厂( 0011 - YARN核心设计解析)1 - YARN RPC架构设计YARN RPC Serv...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4100·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3597·2023-01-11 13:20