HDFS存储数据的位置

时间:2014-03-21 17:11:45

标签: hadoop configuration hdfs

我试图了解hadoop在HDFS中存储数据的位置。我指的是配置文件,即core-site.xmlhdfs-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.xmlhadoop.tmp.dir - &gt;其他临时目录的基础。

  • hdfs-default.xml dfs.datanode.data.dir - &gt;确定本地文件系统上DFS数据节点应存储其块的位置。

    此属性的默认值为 - &gt; file://${hadoop.tmp.dir}/dfs/data

由于我明确提供了dfs.datanode.data.dirhdfs-site.xml)的值,是否意味着数据将存储在该位置?如果是这样,dfs / data会被添加到目录${dfs.datanode.data.dir},特别是它会变成 - &gt; /hadoop/hdfs/datanode/dfs/data

但是我没有看到这个目录结构被创建。

我在环境中看到的一个观察结果:

我在运行一些 MapReduce 程序后看到了这个目录,即: /hadoop/tmp/dfs/data正在创建。

因此,不确定数据是否存储在dfs.datanode.data.dir属性所建议的目录中。

有没有人有类似的经历?

1 个答案:

答案 0 :(得分:14)

hdfs文件的数据将存储在dfs.datanode.data.dir中指定的目录中,并且不会附加您在默认值中看到的/dfs/data后缀。

如果您修改hdfs-site.xml,则必须重新启动 DataNode 服务才能使更改生效。另请记住,更改该值将消除 DataNode 服务提供存储在先前位置的块的能力。

最后,您可以在上方使用file:/...而不是file://...指定您的值。文件URI确实需要额外的斜杠,因此可能导致这些值恢复为默认值。