目录 所有者 权限 默认路径 yarn.nodemanager.local-dirs yarn:yarn drwxr-xr-x ${hadoop.tmp.dir}/nm-local-dir yarn.nodemanager.log-dirs yarn:yarn drwxr-xr-x ${yarn.log.dir}/userlogs yarn.nodemanager.remote-app-log-dir hdfs://cdh1:8020/var/log/hadoop-yarn/apps
故在 /etc/hadoop/conf/yarn-site.xml 文件中添加如下配置:
<property> <name>yarn.nodemanager.local-dirs</name> <value>/data/yarn/local</value> </property> <property> <name>yarn.nodemanager.log-dirs</name> <value>/data/yarn/logs</value> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/yarn/apps</value> </property>
创建 yarn.nodemanager.local-dirs 和 yarn.nodemanager.log-dirs 参数对应的目录:
$ mkdir -p /data/yarn/{local,logs} $ chown -R yarn:yarn /data/yarn
在 hdfs 上创建 yarn.nodemanager.remote-app-log-dir 对应的目录:
$ sudo -u hdfs hadoop fs -mkdir -p /yarn/apps $ sudo -u hdfs hadoop fs -chown yarn:mapred /yarn/apps $ sudo -u hdfs hadoop fs -chmod 1777 /yarn/apps
在 /etc/hadoop/conf/mapred-site.xml 中配置 MapReduce History Server:
<property> <name>mapreduce.jobhistory.address</name> <value>cdh1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>cdh1:19888</value> </property>
此外,确保 mapred、yarn 用户能够使用代理,在 /etc/hadoop/conf/core-site.xml 中添加如下参数:
<property> <name>hadoop.proxyuser.mapred.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.mapred.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.yarn.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.yarn.hosts</name> <value>*</value> </property>
配置 Staging 目录:
<property> <name>yarn.app.mapreduce.am.staging-dir</name> <value>/user</value> </property>
并在 hdfs 上创建相应的目录:
$ sudo -u hdfs hadoop fs -mkdir -p /user $ sudo -u hdfs hadoop fs -chmod 777 /user
可选的,你可以在 /etc/hadoop/conf/mapred-site.xml 设置以下两个参数:
mapreduce.jobhistory.intermediate-done-dir,该目录权限应该为1777,默认值为 ${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate
mapreduce.jobhistory.done-dir,该目录权限应该为750,默认值为 ${yarn.app.mapreduce.am.staging-dir}/history/done
然后,在 hdfs 上创建目录并设置权限:
$ sudo -u hdfs hadoop fs -mkdir -p /user/history $ sudo -u hdfs hadoop fs -chmod -R 1777 /user/history $ sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history
设置 HADOOP_MAPRED_HOME,或者把其加入到 hadoop 的配置文件中
$ export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce
3.4 验证 HDFS 结构:$ sudo -u hdfs hadoop fs -ls -R /
你应该看到如下结构: