我对Hadoop的了解仅有4周。我正在使用一个Hadoop沙盒。
根据理论,当一个文件被复制到HDFS文件系统中时,它将会被分割成128MB的块。每个块然后会被复制到不同的数据节点上并且被复制到其他数据节点上。
问题:
当我将一个数据文件(~500MB)从本地文件系统复制到HDFS(put命令)时,整个文件仍在HDFS中(-ls命令)。我原本期望看到128MB的块。我做错了什么?
如果我设法将数据文件分割并分发到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 下载该文件。所有这些选项都将流式传输适当的块给您以组装逻辑文件。