Hadoop/MR临时目录

Hadoop/MR临时目录,hadoop,mapreduce,Hadoop,Mapreduce,我一直在努力让Hadoop和Map/Reduce开始使用一个单独的临时目录,而不是根目录上的/tmp 我已将以下内容添加到我的core-site.xml配置文件中: <property> <name>hadoop.tmp.dir</name> <value>/data/tmp</value> </property> <property> <name>mapreduce.clu

我一直在努力让Hadoop和Map/Reduce开始使用一个单独的临时目录,而不是根目录上的/tmp

我已将以下内容添加到我的core-site.xml配置文件中:

<property>
    <name>hadoop.tmp.dir</name>
    <value>/data/tmp</value>
</property>
<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>

hadoop.tmp.dir
/数据/tmp
我已将以下内容添加到我的mapreduce-site.xml配置文件中:

<property>
    <name>hadoop.tmp.dir</name>
    <value>/data/tmp</value>
</property>
<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>

mapreduce.cluster.local.dir
${hadoop.tmp.dir}/mapred/local
mapreduce.jobtracker.system.dir
${hadoop.tmp.dir}/mapred/system
mapreduce.jobtracker.staging.root.dir
${hadoop.tmp.dir}/mapred/staging
mapreduce.cluster.temp.dir
${hadoop.tmp.dir}/mapred/temp
不管我运行什么作业,它仍然在/tmp目录中执行所有中间工作。我一直在看着它通过df-h来实现,当我进入其中时,它会创建所有的临时文件

我是不是在配置中遗漏了什么

这是在运行Hadoop/Mapreduce的2.1.0.2.0.6.0的10节点Linux CentOS群集上

编辑:
经过进一步研究,这些设置似乎对我的管理和namednode/secondarynamed nodes框起作用。这仅在数据节点上不起作用,并且只有mapreduce临时输出文件仍将在我的根驱动器上的/tmp上运行,不是我在配置文件中设置的my data mount。

我认为您需要在hdfs-site.xml而不是core-site.xml中指定此属性。请尝试在hdfs-site.xml中设置此属性。我希望这能解决您的问题

mapreduce属性应该在mapred site.xml中。

如果您运行的是Hadoop 2.0,那么您需要更改的配置文件的正确名称是
mapred site.xml
,而不是
mapreduce site.xml

可以在Apache站点上找到一个示例:

它使用
mapreduce.cluster.local.dir
属性名,默认值为
${hadoop.tmp.dir}/mapred/local

尝试将
/etc/hadoop/conf/
目录中的
mapreduce site.xml
文件重命名为
mapred site.xml
,看看是否可以修复它


如果您使用的是Ambari,您应该能够使用MapReduce2/Custom mapred-site.xml部分上的“添加属性”按钮,输入“mapreduce.cluster.local.dir”作为属性名称,还有一个逗号分隔的目录列表。

我遇到了一个类似的问题,一些节点不支持配置中设置的hadoop.tmp.dir


错误节点的重新启动为我修复了它。

其中有一系列目录设置,但是,hadoop.tmp.dir没有在此页面中作为有效属性列出:我认为您应该尝试将其添加到hdfs-site.xml中,然后检查它是否尝试添加。Mapreduce作业仍然使用主/tmp目录,而不是配置中的目录。不过谢谢。我认为您应该尝试重新启动守护程序服务,并检查它是否工作。您是否在每个配置文件(在每个节点中)中进行了更改?节点选择自己的配置文件,而不是主节点文件。我们使用Ambari管理集群,它负责将更改从管理节点推送到所有其他节点。在进行更改后,我验证了所有节点core-site.xml和mapred-site.xml文件都具有相同的配置更改。