HDFS Block Split

Pra*_*raj 3 hadoop hdfs

我的Hadoop知识是4周大.我正在使用带有Hadoop的沙箱.

根据该理论,当文件被复制到HDFS文件系统时,它将被分成128 MB块.然后将每个块复制到不同的数据节点,然后复制到数据节点.

题:

  1. 当我将数据文件(~500 MB)从本地文件系统复制到HDFS(put命令)时,整个文件仍然存在于HDFS(-ls命令)中.我期待看到128 MB块.我在这做错了什么?

  2. 如果假设,我设法在HDFS中拆分和分发数据文件,有没有办法将原始文件组合并检索回本地文件系统?

Kee*_*gan 8

  1. 您不会从-ls命令中看到各个块.这些是在Linux ls或Windows资源管理器中未显示的硬盘驱动器上的块的逻辑等效物.您可以在命令行上执行此操作hdfs fsck /user/me/someFile.avro -files -blocks -locations,也可以使用NameNode UI查看哪些主机具有文件块,以及每个块在哪些主机上进行复制.
  2. 当然.您只需hdfs dfs -get /user/me/someFile.avro使用HUE或NameNode UI 执行类似操作或下载文件.所有这些选项都会将适当的块流式传输给您,以便将逻辑文件重新组合在一起.

  • 您不在单个节点上创建文件或文件夹.您告诉HDFS创建一个文件,并在它认为合适的节点上创建该文件.默认情况下,您的操作将在3个节点上复制(如果可能,在单独的机架中至少有1个节点)以进行故障转移.HDFS为您提供了一个逻辑文件系统,您最终用户不知道或控制数据的物理位置.这就是这个系统的美妙之处,它全部都是为你而抽象的. (2认同)