我一直在努力让Hadoop和Map / Reduce开始使用单独的临时目录而不是我的根目录上的/ tmp。
我已将以下内容添加到我的core-site.xml配置文件中:
<property>
<name>hadoop.tmp.dir</name>
<value>/data/tmp</value>
</property>
我已将以下内容添加到我的mapreduce-site.xml配置文件中:
<property>
<name>mapreduce.cluster.local.dir</name>
<value>${hadoop.tmp.dir}/mapred/local</value>
</property>
<property>
<name>mapreduce.jobtracker.system.dir</name>
<value>${hadoop.tmp.dir}/mapred/system</value>
</property>
<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>${hadoop.tmp.dir}/mapred/staging</value>
</property>
<property>
<name>mapreduce.cluster.temp.dir</name>
<value>${hadoop.tmp.dir}/mapred/temp</value>
</property>
无论我运行什么工作,它仍然在/ tmp目录中完成所有中间工作。我一直在看它通过df -h做它,当我进去时,它创建了所有临时文件。
我错过了配置中的内容吗?
这是在运行2.1.0.2.0.6.0 Hadoop / Yarn Mapreduce的10节点Linux CentOS群集上。
编辑: 经过一些进一步的研究后,设置似乎正在我的管理和命名节点/辅助名称节点框上工作。仅在数据节点上,这不起作用,并且只有mapreduce临时输出文件仍在我的根驱动器上的/ tmp,而不是我在配置文件中设置的数据挂载。
答案 0 :(得分:1)
如果您正在运行Hadoop 2.0,那么您需要更改的配置文件的正确名称是mapred-site.xml
,而不是mapreduce-site.xml
。
可以在Apache站点上找到一个示例:http://hadoop.apache.org/docs/r2.3.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
并使用mapreduce.cluster.local.dir
属性名称,默认值为${hadoop.tmp.dir}/mapred/local
尝试将mapreduce-site.xml
目录中的mapred-site.xml
文件重命名为/etc/hadoop/conf/
,看看是否能修复它。
如果您使用 Ambari ,您应该可以使用&#34;添加属性&#34;在MapReduce2 / Custom mapred-site.xml部分按钮,输入&#39; mapreduce.cluster.local.dir&#39;对于属性名称,以及要使用的逗号分隔的目录列表。
答案 1 :(得分:0)
我认为您需要在hdfs-site.xml而不是core-site.xml中指定此属性。尝试在hdfs-site.xml中设置此属性。我希望这能解决你的问题
答案 2 :(得分:0)
mapreduce属性应该在mapred-site.xml中。
答案 3 :(得分:-1)
我遇到了类似的问题,其中一些节点不会遵守配置中设置的hadoop.tmp.dir。
重启行为错误的节点为我修好了。