27

Hadoop 具有配置参数hadoop.tmp.dir,根据文档,它是“其他临时目录的基础”。我想,这个路径是指本地文件系统。

我将此值设置为/mnt/hadoop-tmp/hadoop-${user.name}. 格式化名称节点并启动所有服务后,我看到在 HDFS 上创建的路径完全相同。

这是否意味着, hadoop.tmp.dir指的是HDFS上的临时位置?

4

3 回答 3

33

它令人困惑,但hadoop.tmp.dir用作本地临时目录的基础,也用于HDFS。该文档不是很好,但mapred.system.dir默认设置为"${hadoop.tmp.dir}/mapred/system",它定义了HDFS上 Map/Reduce 框架存储系统文件的路径。

如果您希望这些不被捆绑在一起,您可以编辑您的mapred-site.xml这样 mapred.system.dir 的定义是不相关的东西${hadoop.tmp.dir}

于 2011-05-20T22:10:54.113 回答
27

让我在 kkrugler 的回答中添加更多内容:

三个 HDFS 属性包含hadoop.tmp.dir在它们的值中

  1. dfs.name.dir: namenode 存储其元数据的目录,默认值为${hadoop.tmp.dir}/dfs/name
  2. dfs.data.dir:存储HDFS数据块的目录,默认值为${hadoop.tmp.dir}/dfs/data
  3. fs.checkpoint.dir: 二级名称节点存储其检查点的目录,默认值为${hadoop.tmp.dir}/dfs/namesecondary.

这就是为什么您/mnt/hadoop-tmp/hadoop-${user.name}在格式化 namenode 后在 HDFS 中看到 的原因。

于 2013-01-25T22:38:23.397 回答
3

环顾四周以获取有关此信息的信息。我唯一能想到的就是Amazon Elastic MapReduce 开发指南上的这篇文章:

在 hadoop-site.xml 中,我们将 hadoop.tmp.dir 设置为 /mnt/var/lib/hadoop/tmp。/mnt 是我们挂载“额外”EC2 卷的位置,它可以包含比默认卷更多的数据。(具体数量取决于实例类型。)Hadoop 的 RunJar.java(解压输入 JAR 的模块)将 hadoop.tmp.dir 解释为 Hadoop 文件系统路径而不是本地路径,因此它改为写入 HDFS 中的路径的本地路径。HDFS 挂载在 /mnt 下(特别是 /mnt/var/lib/hadoop/dfs/。因此,您可以向其写入大量数据。

于 2010-03-02T04:11:56.317 回答