yarn & mapreduce 配置引數總結
阿新 • • 發佈:2019-01-03
配置
設定nodemanager 總記憶體大小為32G,在yarn-site.xml 增加如下內容:
<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>32768</value> </property>
container記憶體按照預設大小配置,即為最小1G,最大8G
<property> <name>yarn.scheduler.minimum-allocation-mb</name> <value
每個任務最大jvm heap 大小為1000M,在mapred-site.xml 增加如下內容:
<property> <name>mapred.child.java.opts</name> <value
FairScheduler排程器配置,在yarn-site.xml 增加如下內容:
<property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
日誌聚合功能,在yarn-site.xml 增加如下內容:
<property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/var/log/hadoop-yarn/apps</value> <description>Where to aggregate logs to.</description> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>86400</value> </property>
開啟jobhistory服務
- 在yarn-site.xml 增加如下內容:
<property> <name>yarn.log.server.url</name> <value>http://master:19888/jobhistory/logs/</value> </property>
- 在mapred-site.xml 增加如下內容:
<property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property>
設定yarn heap 大小,在yarn-env.sh 增加如下內容:
YARN_HEAPSIZE=6000
設定hadoop heap 大小,在hadoop-env.sh 增加如下內容:
# The maximum amount of heap to use, in MB. Default is 1000. export HADOOP_HEAPSIZE=6000
設定namenode jvm heap 大小,在hadoop-env.sh 增加如下內容:
export HADOOP_NAMENODE_OPTS="-Xmx60000m -Dcom.sun.management.jmxremote -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:/home/stark_summer/logs/hadoop-hdfs/gc-$(hostname)-hdfs.log $HADOOP_NAMENODE_OPTS"
設定datanode jvm heap 大小(繼承HADOOP_HEAPSIZE引數配置),在hadoop-env.sh 增加如下內容:
export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS" export HADOOP_DATANODE_OPTS="$JMX_BASE -Dcom.sun.management.jmxremote.port=26003 $HADOOP_DATANODE_OPTS" export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS"
設定secondarynamenode jvm heap 大小,在hadoop-env.sh 增加如下內容:
export HADOOP_SECONDARYNAMENODE_OPTS="-Xms58320m -Xmx58320m -XX:-UseGCOverheadLimit -Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS" export HADOOP_SECONDARYNAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_SECONDARYNAMENODE_OPTS"
引數調優
設定 map & reduce 的container分配記憶體大小
-D mapreduce.map.memory.mb="1500" \ -D mapreduce.reduce.memory.mb="1500" \
設定 map & reduce 的 jvm heap 大小
-D mapreduce.map.java.opts="-Xms1600M -Xmx1600M -Dfile.encoding=UTF8 -XX:-UseGCOverheadLimit" \ -D mapreduce.reduce.java.opts="-Xms2500M -Xmx2500M -Dfile.encoding=UTF8 -XX:-UseGCOverheadLimit" \ 等價於 -D mapred.map.child.java.opts="-Xms1600M -Xmx1600M -Dfile.encoding=UTF8 -XX:-UseGCOverheadLimit" \ -D mapred.reduce.child.java.opts="-Xms2500M -Xmx2500M -Dfile.encoding=UTF8 -XX:-UseGCOverheadLimit" \
設定shuffle比例,預設shuffle比例是0.70,可降低這個比例
-D mapreduce.reduce.shuffle.input.buffer.percent=0.4 \