我试图了解hadoop在HDFS中存储数据的位置。我引用配置文件,即:core-site.xml和hdfs-site.xml
我设置的属性是:
core-site.xml hadoop.tmp.dir /hadoop/tmp中hdfs-site.xml dfs.namenode.name.dir文件中:/hadoop/hdfs/namenode dfs.datanode.data.dir文件:/hadoop/hdfs/dfs.namenode.name.dir按照上面的安排,像dfs.datanode.data.dir一样,数据块应该存储在这个目录中。这是正确的吗?
我引用了apache链接,从中我看到了以下内容:
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的建议存储在目录中。
有没有人有过类似的经历?
发布于 2014-03-21 18:34:26
hdfs文件的数据将存储在dfs.datanode.data.dir中指定的目录中,您在默认值中看到的/dfs/data后缀将不会追加。
如果编辑hdfs-site.xml,则必须重新启动DataNode服务才能使更改生效。还请记住,更改值将消除DataNode服务提供存储在前一个位置的块的能力。
最后,上面用file:/...而不是file://...指定了您的值。文件URI确实需要额外的斜杠,这样可能会导致这些值恢复到默认值。
https://stackoverflow.com/questions/22565200
复制相似问题