资讯专栏INFORMATION COLUMN

Hadoop常见YARN资源调优

IT那活儿 / 2171人阅读
Hadoop常见YARN资源调优

点击标题下「蓝色微信名」可快速关注


一、yarn简介

YARN是一个通用的资源管理模块,可以为各类应用程序进行资源管理和调度。基本思想是将资源管理和作业调度/监视的功能拆分为多带带的守护程序。这个想法是拥有一个全局ResourceManager(RM)和每个应用程序ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的DAG。

在最早的HadoopMapReduce计算架构中,进行作业调度时使用FIFOScheduler。FIFO是指,所有用户的作业都被提交到一个队列中,然后按照作业的优先级,再按照作业提交时间的先后顺序选择将被执行的作业。Hadoop中只有一个作业队列,被提交的作业按照先后顺序在作业队列中排队,新来的作业插入到队尾。一个作业运行完成后,总是从队首取下一个作业运行。这种调度策略的优点是简单、易于实现,同时也减轻了JobTracker的负担。缺点是,它没有考虑到作业的紧迫程度,另外对小作业的运行不利。因此,逐渐衍生出可以分配资源的SuperiorScheduler和CapacityScheduler。


二、yarn结构


YARN模型主要由ResourceManager、ApplicationMaster和NodeManager组成


ResourceManager:负责集群中所有资源的统一管理和分配。接收来自各个节点(NodeManager)的资源汇报信息,并根据收集的资源按照一定的策略分配给各个应用程序。

ApplicationMaster:即图中的AppMstr,负责一个Application生命周期内的所有工作。包括:与RM调度器协商以获取资源;将得到的资源进一步分配给内部任务(资源的二次分配);与NM通信以启动/停止任务;监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

NodeManager(NM)是YARN中每个节点上的代理,管理Hadoop集群中单个计算节点,包括与ResourceManger保持通信,监督Container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliaryservice)。


三、yarn-cluster运行原理



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汇报运行状况。


四、Yarn资源优化配置



通过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


END











文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130038.html

相关文章

  • cdh调优

      CDH(Cloudera Distribution Including Apache Hadoop)是一个用于在企业中部署和管理Apache Hadoop生态系统的分发版本。CDH包含了Hadoop核心组件,如HDFS、YARN和MapReduce,以及许多其他工具,如Apache Hive、Apache Pig、Apache Spark和Apache HBase。  在CDH中进行调优的...

    白马啸西风 评论0 收藏0
  • 0011 - YARN核心设计解析

    摘要:包括等,它们共同维护了一个事件与事件处理器的映射表,用来处理各个事件。例如内部包含一个中央异步调度器,并注册了等一系列事件事件处理器,由中央异步调度器统一管理和调度。当状态机转换到最终状态时,则退出。 大数据梦工厂( 0011 - YARN核心设计解析)1 - YARN RPC架构设计YARN RPC Serv...

    KoreyLee 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<