我的Hadoop知识是4周大。我正在使用带有Hadoop的沙箱。
根据理论,当文件被复制到HDFS文件系统时,它将被分成128 MB块。然后将每个块复制到不同的数据节点,然后复制到数据节点。
问题:
当我将数据文件(~500 MB)从本地文件系统复制到HDFS(put命令)时,整个文件仍然存在于HDFS(-ls命令)中。我期待看到128 MB块。我在这做错了什么?
如果想的话,我设法拆分&在HDFS中分发数据文件,有没有办法将原始文件组合并检索回本地文件系统?
答案 0 :(得分:8)
-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下载文件。所有这些选项都会将适当的块流式传输给您,以便将逻辑文件重新组合在一起。