我试图了解hadoop在HDFS中存储数据的位置.我指的是配置文件即:core-site.xml
和hdfs-site.xml
我设置的属性是:
在core-site.xml
:
hadoop.tmp.dir /hadoop/tmp
在hdfs-site.xml
:
dfs.namenode.name.dir file:/hadoop/hdfs/namenode dfs.datanode.data.dir file:/hadoop/hdfs/datanode
通过上述安排,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所建议的目录中.
有没有人有类似的经历?
hdfs文件的数据将存储在指定的目录中dfs.datanode.data.dir
,并且/dfs/data
不会附加在默认值中看到的后缀.
如果编辑hdfs-site.xml
,则必须重新启动DataNode服务才能使更改生效.还要记住,更改该值将消除DataNode服务提供存储在先前位置的块的能力.
最后,上面指定了您的值,file:/...
而不是file://...
.文件URI确实需要额外的斜杠,因此可能导致这些值恢复为默认值.