我了解 HDFS 中的块系统是底层文件系统之上的逻辑分区。但是当我发出cat
命令时如何检索文件。
假设我有一个 1 GB 的文件。我的默认HDFS
块大小是 64 MB。
我发出以下命令:
hadoop -fs copyFromLocal my1GBfile.db input/data/
上面的命令将文件my1GBfile.db
从我的本地机器复制到输入/数据目录HDFS:
我有 16 个要复制和复制的块( 1 GB / 64 MB ~ 16 )。
如果我有 8 datanodes
,则单个数据节点可能没有所有块来重新构建文件。
当我发出以下命令时
hadoop -fs cat input/data/my1GBfile.db | head
现在会发生什么?
文件是如何重组的?虽然块只是逻辑分区,但 1 GB 的文件是如何物理存储的。它存储在 HDFS 上。每个数据节点是否获取文件的某些物理部分。因此,通过将输入的 1GB 文件分成 64 MB 的块,我们可能会在记录级别(比如在行之间)打破一些东西。这是如何处理的?
我签入了我的数据节点,我确实看到了一个blk_1073741825
,当在编辑器中打开它时,它实际上显示了文件的内容。
那么,生成的文件块是否不合逻辑但真实partition
的数据发生了?
请帮助澄清这一点