这可能是非常非常基本的。相对于实际的文件系统,单节点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.dir
(hdfs-default.xml
配置文件中的选项)中。元数据(包括每个文件的名称、时间戳等)由name节点守护进程在单独的数据库中管理。您可以在datanode-data-dir中看到的文件结构与实际的HDFS文件系统结构无关。
当您更改刚上传到HDFS的原始文件时,这种更改显然对HDFS卷中存储的数据没有影响。这就像您将文件从usb闪存驱动器复制到主目录中,然后更改usb上的原始文件,想知道为什么更改没有在您的主目录中传播一样。