1. Contaniner
1.1 含义
一个虚拟的概念,表示YARN的资源抽象
封装了某节点的多维度资源(内存、CPU、磁盘、网络等资源),
当Application Master向Resource Manager申请资源时, Resouce Manager 为Application Master返回资源
2. Yarn常用命令
2.1 yarn jar
等于 hadoop jar
2.1.1 Exapmle
bin/yarn jar /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /user/hadoop/input /user/hadoop/output3
执行wordcount
2.2 yarn application
2.2.1 yarn application -list 显示当前运行的application信息
Total number of applications (application-types: [] and states: [SUBMITTED, ACCEPTED, RUNNING]):0
Application-Id Application-Name Application-Type User Queue State Final-State Progress Tracking-URL
2.2.2 yarn application -kill <Application ID> kill掉某个application
2.2.3 与mapred常用命令对比
mapred 常用命令:
mapred job -list
mapred jon -kill <Application ID>
mapred命令与yarn命令功能一样,但是spark和hive命令也能运行在yarn上,所以使用yarn命令能管理spark和hive程序。
- Yarn调优
yarn.nodemanager.resource.memory-mb
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
如果机器有48G的内存,25%给linux,剩下的75%(36G)给大数据进程。
正常来说,DataNode(4G)与NodeManager(3G)部署在同一台机器上(原因: 数据本地化,DN计算后传回给NodeManager速度最快)
如何增加DataNode内存
在$HADOOP_HOME/etc/hadoop下的hadoop-env.sh
修改
export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS"
为
export HADOOP_DATANODE_OPTS="-Xms2048m -Xmx2048m -Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS"
如何增加NodeManager内存
在$HADOOP_HOME/etc/hadoop下的yarn-env.sh
增加
YARN_OPTS="$YARN_OPTS -Xms2048m -Xmx2048m"
注: 修改之后都需要重启进程
YARN和HDFS默认内存是1000M
剩下29G是留给container
所以设置yarn.nodemanager.resource.memory-mb为29G
yarn.scheduler.minimum-allocation-mb(单个容器最小内存): 官方是1G,生产上推荐2G
yarn.scheduler.maximum-allocation-mb(单个容器最大内存): 官方是8G,生产上就是与yarn.nodemanager.resource.memory-mb,防止内存暴增,但是容器还有内存的情况下出现OOM
yarn.nodemanager.pmem-check-enabled(使用内存超出最大内存,会自动kill内存,其任务也会被kill) true
yarn.nodemanager.vmem-check-enabled true
yarn.nodemanager.vmem-pmem-ratio 2.1(1m 虚拟内存相当于2.1m的物理内存)
网友评论