Hadoop / MR临时目录

时间:2013-12-17 21:10:06

标签: hadoop mapreduce

我一直在努力让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,而不是我在配置文件中设置的数据挂载。

4 个答案:

答案 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。

重启行为错误的节点为我修好了。