Yarn详解 1.Yarn架构设计(mr的提交到Yarn的流程)
RM:调度器 + APPS Manager
NM:
Container(容器):
1个NM --> 多个容器 --> 只能运行一个task
APP Master | map task | reduce task
1台机器64G内存16核 --> 8个容器 --> 8G + 2核1台机器64G内存:DN + NM = 64*(75%~85%)
数据本地化
生产:
DN:4G
NM:50G
2.调优
NM:
yarn.nodemanager.resource.memory-mb:50 * 1024MB(生产调)
container:memory+cpu
Memory:
任务计算最小是1024MB:
yarn.scheduler.minimum-allocation-mb:1024 1G-->2G-->3G(生产调)
任务计算最多是8192MB,如果超过就kill:
yarn.scheduler.maximum-allocation-mb:8192<=50G(生产调)
每次增加2048M,默认是1024MB:
yarn.scheduler.increment-allocation-mb: 2048(CDH平台)
增加到最大时执行kill,默认为true;
yarn.nodemanager.pmem-check-enabled:trueyarn.nodemanager.vmem-pmem-ratio2.1使用1G内存 2.1虚拟内存
yarn.nodemanager.vmem-check-enabled trueSWAP:硬盘做的,说白了,就是拿一个比如20G的盘作为内存
参数:http://blog.csdn.net/javastart/article/details/51375287高度计算
1.不允许计算慢,允许挂掉:swap 没有
2.允许计算慢,不允许任务挂掉:swap 有vm.swappiness=0-100
0:不是禁用,说明调用swap的积极性是最差的
10:调用swap的积极性是稍微好点
100:太积极生产:选择2+vm.swappiness=10
CPU:
yarn.nodemanager.resource.cpu-vcores-1
yarn.scheduler.minimum-allocation-vcores1
yarn.scheduler.maximum-allocation-vcores4<=32(生产调)vcore:虚拟核
1个物理核为2个虚拟核CDH有个参数,一般默认就行http://blog.itpub.net/30089851/viewspace-2127851/
http://blog.itpub.net/30089851/viewspace-2127850/
JVM系列:
http://blog.itpub.net/30089851/cid-180723-abstract-1/
3.Yarn的常用命令
yarn application -list
yarn application -kill application_1513862674371_0003(App的id)
4.queue:队列 见CDH (补充)
需求:
1.项目:
开发
测试开发/测试队列
部署生产生产队列 就是一套集群环境
2.多个项目:
项目1生产队列1 资源少点
项目2生产队列2 资源多点
就是一套集群环境开发和测试就是另外一套
默认:default调度:
计算调度
公平调度 Fair (生产)
http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-fair-scheduler/
【Yarn详解】【来自@若泽大数据】