HDFS在哪里存储它的文件



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

我正在使用Cloudera虚拟机学习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上的文件

HDFS数据块存储在${dfs.data.dir},默认情况下指向${hadoop.tmp.dir}/dfs/data。在Linux系统中,hadoop.tmp.dir的值为/tmp。检查您的hdfs-default.xml文件。

我不知道你所说的"没有反映到HDFS中的文件"是什么意思。这些文件只是数据块,您不能只读取这些数据块,并且在通过hdfs://...

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

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

相关内容

最新更新