在执行hdfs dfs -ls命令时,我想知道结果是存储在集群中的所有文件,还是只是执行它的节点中的分区。 我是hadoop的新手,我在每个节点中划分分区时遇到了一些问题。
谢谢
答案 0 :(得分:0)
问题:“......如果结果是存储在群集中的所有文件或......”
您从ls
命令中看到的是群集中存储的所有文件。更具体地说,您看到的是一堆文件路径和名称。这些信息是命名空间的一部分,由Namenode管理。
“......只是执行它的节点中的分区..”
如果您认为hdfs在此节点上保留了一些文件,而在另一个节点上保留了一些文件。你误会了。没有这样的事情。 NameNode保留命名空间和blocksMap的轨迹。实际上,文件由块组成。 NameNode知道文件有多少个块以及哪些数据块保存在哪个DataNode上。 NameNode决定了块的保存位置,它对用户是透明的。默认情况下,每个块都有3个复制,每个复制都在一个DataNode上。因此,假设一个文件有2个块,它可以位于最多6个DataNode上,No DataNode保留完整的文件(在本例中为true。因为在另一个常见情况下,当一个小文件只有1个块时,每个复制都是一个完整的文件)。
有关详细信息,请查看Hdfs Design
的官方文档