我试图理解hadoop在hdfs中存储数据的位置。我指的是配置文件,即: core-site.xml
以及 hdfs-site.xml
我设置的属性是:
在 core-site.xml
:
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
在 hdfs-site.xml
:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/hdfs/datanode</value>
</property>
按照上面的安排 dfs.datanode.data.dir
,数据块应存储在此目录中。是这样吗?
我提到了apache hadoop链接,从中我看到: core-default.xml
: hadoop.tmp.dir
-->其他临时目录的基。
hdfs-default.xml dfs.datanode.data.dir
-->确定dfs数据节点应在本地文件系统上的何处存储其块。
此属性的默认值为-> file://${hadoop.tmp.dir}/dfs/data
因为我显式地提供了 dfs.datanode.data.dir
( hdfs-site.xml
),是否意味着数据将存储在该位置?如果是,是否将dfs/data添加到 ${dfs.datanode.data.dir}
,具体来说会变成-> /hadoop/hdfs/datanode/dfs/data
?
但是我没有看到这个目录结构被创建。
我在env中看到的一个观察:
我看到在我运行了一些mapreduce程序之后,这个目录被创建了,即: /hadoop/tmp/dfs/data
正在创建。
因此,不确定数据是否按照属性dfs.datanode.data.dir的建议存储在目录中。
有没有人有类似的经历?
1条答案
按热度按时间toiithl61#
hdfs文件的数据将存储在中指定的目录中
dfs.datanode.data.dir
,和/dfs/data
在默认值中看到的后缀将不会被追加。如果你编辑
hdfs-site.xml
,您必须重新启动datanode服务才能使更改生效。还要记住,更改该值将消除datanode服务提供存储在上一个位置的块的能力。最后,在上面用指定值
file:/...
而不是file://...
. 文件uri确实需要额外的斜杠,所以这可能会导致这些值恢复为默认值。