Yarn调优

1 什么是yarn
Yarn是Hadoop2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster,其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。
在这里插入图片描述

Yarn主要由ResouceManager,NodeManager,ApplicationMaster,Container等几个组件构成。

Yarn总体上还是master/slave架构,ResourceManager是master,NodeManager是slave。ResourceManager负责对各个NodeManager上的资源进行统一的调度和管理。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个应用程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此,他们之间不会互相影响。

YARN作为一个资源调度器,应该考虑到集群里面每一台机子的计算资源,然后根据application申请的资源进行分配Container。Container是YARN里面资源分配的基本单位,具有一定的内存以及CPU资源,是资源的抽象。

在YARN集群中,平衡内存、CPU、磁盘的资源的很重要的,根据经验,每两个container使用一块磁盘以及一个CPU核的时候可以使集群的资源得到一个比较好的利用。

生产推荐

a 内存配置

举例说明
如一台机器的内存为48G,那么
25%留给Linux及其它程序 12G
75%给大数据进程 36G ->
datanode: 4G
(修改文件 hadoop-env.sh,添加

export HADOOP_DATANODE_OPTS="-Xms4096m -Xmx4096m $HADOOP_DATANODE_OPTS"

Xms是最小内存
Xmx是最大内存
设置好后,重启生效
)

nodemanager: 2G
(修改文件yarn_env.sh,添加

YARN_OPTS="$YARN_OPTS -Xms2048m -Xmx2048m"

重启生效)

正常情况下,计算nodemanager与存储datanode都是部署在同一个节点上。数据本地化。不用走网络拉数据。

一共还剩下30G是给容器的
内存参数配置:
yarn.nodemanager.resource.memory-mb 30G
yarn.scheduler.minimum-allocation-mb (容器 最小) 2G
yarn.scheduler.maximum-allocation-mb (容器 最大) 30G

限制容器参数,如果超出则杀死进程

yarn.nodemanager.pmem-check-enabled true
yarn.nodemanager.vmem-check-enabled true

pmem:物理内存
vmem:虚拟内存

默认是true

yarn.nodemanager.vmem-pmem-ratio 2.1

物理内存:虚拟内存 = 2.1

b CPU配置
yarn上面有个vcore的概念,这是虚拟core,是yarn引入的新概念,这是考虑到不同机器的CPU的计算能力不同。一般在spark中使用。
正常情况下 1 core : 2 vcore
举例:
如果有8个core ————》 16个vcore
那么我们预留2core ----> 4vcore
剩下的6core ---->12vcore给yarn
那么参数配置为
yarn.nodemanager.resource.cpu-vcores 12
yarn.scheduler.minimum-allocation-vcores 1
yarn.scheduler.maximum-allocation-vcores 12

更详细的参数调优请参考:
http://blog.itpub.net/30089851/viewspace-2127851/

猜你喜欢

转载自blog.csdn.net/qq_34382453/article/details/83381691
今日推荐