【问题标题】:Where HDFS stores dataHDFS 存储数据的位置
【发布时间】:2014-03-21 17:11:44
【问题描述】:

我试图了解 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.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吗?

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

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

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

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

有人有类似经历吗?

【问题讨论】:

    标签: hadoop configuration hdfs


    【解决方案1】:

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

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

    最后,上面的值是用file:/... 而不是file://... 指定的。文件 URI 确实需要那个额外的斜杠,所以这可能会导致这些值恢复为默认值。

    【讨论】:

    • 感谢您的回复。当我进行更改(例如添加额外的“/”)时,在格式化文件系统时出现异常。 22 年 14 月 3 日 00:18:27 致命的 namenode.NameNode:在 org.apache.hadoop.hdfs.server.namenode.NNStorage 的 java.io.File.(File.java:423) 处的 namenode 加入异常.getStorageDirectory(NNStorage.java:324) 如果我遗漏了其他内容,请告诉我。谢谢,维平
    • 我相信我们必须使用 file:/// 而不是 file://。
    • 你说得对,一个文件需要 3 个斜杠:URI。没有意识到format 有空间容纳主机名。即file://&lt;host&gt;/&lt;path&gt;(并且'host'部分是可选的,3个斜杠不是。)
    • 我看到/hadoop/tmp/dfs的原因是dfs.namenode.checkpoint.dir(DFS二级名称节点)使用file://${hadoop.tmp.dir} /dfs/namesecondary 默认情况下,我没有更改它。
    • 如何改变这个目录的位置,并保留DataNode提供存储在原始位置的块的能力?我想仅将原始文件夹的内容复制到新文件夹是不够的,因为 hdfs 现在不会对其索引进行此更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多