Hadoop有配置参数hadoop.tmp.dir
,根据文档,它是`“其他临时目录的基础。”我认为,这条路径指的是本地文件系统。
我将此值设置为/mnt/hadoop-tmp/hadoop-${user.name}
。格式化namenode并启动所有服务后,我看到在HDFS上创建的路径完全相同。
这是否意味着,hadoop.tmp.dir
是指 HDFS上的临时位置?
答案 0 :(得分:31)
令人困惑,但hadoop.tmp.dir
用作本地临时目录的基础,也用于 HDFS 。该文档不是很好,但mapred.system.dir
默认设置为"${hadoop.tmp.dir}/mapred/system"
,这定义了 HDFS 上的路径,其中Map / Reduce框架存储系统文件。
如果您希望不将它们捆绑在一起,则可以编辑mapred-site.xml
,以便mapred.system.dir的定义与${hadoop.tmp.dir}
答案 1 :(得分:25)
让我再补充一下kkrugler的答案:
有三个HDFS属性,其值
中包含hadoop.tmp.dir
dfs.name.dir
:namenode存储其元数据的目录,默认值为${hadoop.tmp.dir}/dfs/name
。dfs.data.dir
:存储HDFS数据块的目录,默认值为${hadoop.tmp.dir}/dfs/data
。fs.checkpoint.dir
:辅助名称节点存储其检查点的目录,默认值为${hadoop.tmp.dir}/dfs/namesecondary
。这就是格式化namenode后在HDFS中看到/mnt/hadoop-tmp/hadoop-${user.name}
的原因。
答案 2 :(得分:3)
仔细查看有关此信息的信息。我唯一想到的就是Amazon Elastic MapReduce Dev Guide上的这篇文章:
在hadoop-site.xml中,我们设置了 hadoop.tmp.dir to 到/ mnt在/ var / lib中/ Hadoop的/ tmp目录。 / mnt在哪里 我们安装“额外”的EC2卷, 它可以包含更多的数据 默认音量。 (确切的数额 取决于实例类型。)Hadoop RunJar.java(解压缩的模块 输入JARs)解释 hadoop.tmp.dir作为Hadoop文件系统 路径而不是本地路径,所以它 写入HDFS中的路径而不是 本地路径。 HDFS安装在 / mnt(具体而言 到/ mnt在/ var / lib中/的Hadoop / DFS /。所以你可以 写了很多数据。