HDFS在哪里存储它的文件

时间:2015-12-30 17:55:23

标签: hadoop hdfs

这可能非常基础。单个节点HDFS在哪里存储文件相对于实际的文件系统?

我正在使用Cloudera VM来学习Hadoop。

例如:/ home / cloudera中名为sample.txt的文件可以使用

复制到HDFS
hadoop fs -copyFromLocal /home/cloudera/sample.txt hdfs://localhost/user/cloudera/sample.txt

如果我实际上使用Linux搜索/ user / cloudera目录,则没有这样的目录。

现在假设我更改了/home/cloudera/sample.txt的内容,而这些更改未反映在存储在HDFS中的文件中。

我有两个问题:

  • 单个节点HDFS在哪里存储文件相对于 实际文件系统?
  • 为什么不对原始文件进行更改 反映到HDFS上的文件。

2 个答案:

答案 0 :(得分:1)

HDFS数据块存储在 $ {dfs.data.dir}默认指向$ {hadoop.tmp.dir} / dfs / data。在Linux系统中,hadoop.tmp.dir的值是/ tmp。检查你的 hdfs-default.xml文件,如果要覆盖默认值。

我不确定您所说的更改是什么意思"没有反映到HDFS中的文件"。这些文件只是您无法读取的数据块,并且在通过hdfs访问时期望与文件具有相同的内容:// ...

答案 1 :(得分:1)

当您从本地文件系统将数据加载到HDFS时(如您的示例所示),HDFS将其内容拆分为数据块,这些数据块存储在dfs.datanode.data.dir(来自hdfs-default.xml config file的选项)中每台运行数据节点守护进程的机器。元数据(包括每个文件的名称,时间戳等)由Name节点守护程序在单独的数据库中管理。您可以在datanode数据dir中看到的文件结构与实际的HDFS文件系统结构无关。

当您更改刚刚上传到HDFS的原始文件时,此更改显然对存储在HDFS卷中的数据没有影响。它就像你将文件从usb闪存驱动器复制到你的主目录一样,然后在usb上更改原始文件,想知道为什么更改没有在你的homedir中传播。