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: true
yarn.nodemanager.vmem-pmem-ratio 2.1 使用1G内存 2.1虚拟内存
yarn.nodemanager.vmem-check-enabled true
SWAP:硬盘做的,说白了,就是拿一个比如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-vcores 1
yarn.scheduler.maximum-allocation-vcores 4<=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/
【来自@若泽大数据】