HDFS 块拆分
HDFS Block Split
我的 Hadoop 知识只有 4 周了。我正在使用带有 Hadoop 的沙箱。
根据理论,当一个文件被复制到HDFS文件系统时,它会被分割成128MB的块。然后每个块将被复制到不同的数据节点,然后再复制到数据节点。
问题:
当我将数据文件 (~500 MB) 从本地文件系统复制到 HDFS(put 命令)时,整个文件仍然存在于 HDFS(-ls 命令)中。我期待看到 128 MB 块。我在这里做错了什么?
如果假设,我设法在 HDFS 中拆分和分发数据文件,有没有办法合并原始文件并将其检索回本地文件系统?
- 您不会看到来自
-ls
命令的各个块。这些逻辑等同于硬盘驱动器上的块未显示在 Linux 的 ls
或 Windows 资源管理器中。您可以在命令行上执行此操作,例如 hdfs fsck /user/me/someFile.avro -files -blocks -locations
,或者您可以使用 NameNode UI 查看哪些主机具有文件块,以及每个块在哪些主机上被复制。
- 当然可以。您只需执行
hdfs dfs -get /user/me/someFile.avro
之类的操作或使用 HUE 或 NameNode UI 下载文件。所有这些选项都会将适当的块流式传输给您,以 assemble 将逻辑文件重新组合在一起。
我的 Hadoop 知识只有 4 周了。我正在使用带有 Hadoop 的沙箱。
根据理论,当一个文件被复制到HDFS文件系统时,它会被分割成128MB的块。然后每个块将被复制到不同的数据节点,然后再复制到数据节点。
问题:
当我将数据文件 (~500 MB) 从本地文件系统复制到 HDFS(put 命令)时,整个文件仍然存在于 HDFS(-ls 命令)中。我期待看到 128 MB 块。我在这里做错了什么?
如果假设,我设法在 HDFS 中拆分和分发数据文件,有没有办法合并原始文件并将其检索回本地文件系统?
- 您不会看到来自
-ls
命令的各个块。这些逻辑等同于硬盘驱动器上的块未显示在 Linux 的ls
或 Windows 资源管理器中。您可以在命令行上执行此操作,例如hdfs fsck /user/me/someFile.avro -files -blocks -locations
,或者您可以使用 NameNode UI 查看哪些主机具有文件块,以及每个块在哪些主机上被复制。 - 当然可以。您只需执行
hdfs dfs -get /user/me/someFile.avro
之类的操作或使用 HUE 或 NameNode UI 下载文件。所有这些选项都会将适当的块流式传输给您,以 assemble 将逻辑文件重新组合在一起。