这可能非常基础。单个节点HDFS在哪里存储文件相对于实际的文件系统?
我正在使用Cloudera VM来学习Hadoop。
例如:/ home / cloudera中名为sample.txt的文件可以使用
复制到HDFShadoop fs -copyFromLocal /home/cloudera/sample.txt hdfs://localhost/user/cloudera/sample.txt
如果我实际上使用Linux搜索/ user / cloudera目录,则没有这样的目录。
现在假设我更改了/home/cloudera/sample.txt的内容,而这些更改未反映在存储在HDFS中的文件中。
我有两个问题:
答案 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中传播。