Linux HDFS块中的数据是如何存储的?
我正在阅读有关HDFS的文章,想知道是否有任何特定的格式可以用来排列块中的数据 假设有一个265MB的文件被复制到Hadoop集群,HDFS块大小为64MB。因此,文件分为5个部分—64MB+64MB+64MB+64MB+9MB,并分布在数据节点之间。对吗Linux HDFS块中的数据是如何存储的?,linux,hadoop,hdfs,Linux,Hadoop,Hdfs,我正在阅读有关HDFS的文章,想知道是否有任何特定的格式可以用来排列块中的数据 假设有一个265MB的文件被复制到Hadoop集群,HDFS块大小为64MB。因此,文件分为5个部分—64MB+64MB+64MB+64MB+9MB,并分布在数据节点之间。对吗 我怀疑存储数据的64MB块中是否存在任何格式 如果数据块中存储有任何格式/结构,则存储的数据应小于64 MB,因为数据结构/头等本身可能会占用一些空间 由于HDFS数据节点是一个逻辑文件系统(它在linux上运行,HDFS没有单独的分区),所
hdfs fsck/-文件-块-位置
-rw-r--r--. 1 hdfs hadoop 134217728 Jan 12 09:17 blk_1073741825
-rw-r--r--. 1 hdfs hadoop 1048583 Jan 12 09:17 blk_1073741825_1001.meta
-rw-r--r--. 1 hdfs hadoop 134217728 Jan 12 09:18 blk_1073741826
-rw-r--r--. 1 hdfs hadoop 1048583 Jan 12 09:18 blk_1073741826_1002.meta
-rw-r--r--. 1 hdfs hadoop 134217728 Jan 12 09:18 blk_1073741827
-rw-r--r--. 1 hdfs hadoop 1048583 Jan 12 09:18 blk_1073741827_1003.meta
-rw-r--r--. 1 hdfs hadoop 134217728 Jan 12 09:18 blk_1073741828
-rw-r--r--. 1 hdfs hadoop 1048583 Jan 12 09:18 blk_1073741828_1004.meta
-rw-r--r--. 1 hdfs hadoop 134217728 Jan 12 09:19 blk_1073741829
-rw-r--r--. 1 hdfs hadoop 1048583 Jan 12 09:19 blk_1073741829_1005.meta
-rw-r--r--. 1 hdfs hadoop 134217728 Jan 12 09:19 blk_1073741830
-rw-r--r--. 1 hdfs hadoop 1048583 Jan 12 09:19 blk_1073741830_1006.meta
-rw-r--r--. 1 hdfs hadoop 87776064 Jan 12 09:19 blk_1073741831
-rw-r--r--. 1 hdfs hadoop 685759 Jan 12 09:19 blk_1073741831_1007.meta
感谢0x0FFF,我执行了您指定的命令“hadoop fsck/-files-blocks-locations”,它给出了一个很长的结果和这样的行-/user/vpathak/testData/u.item 236344字节,1个块:OK 0。但是,如何知道块“blk_7097388478926784482_1004 len=236344 repl=1[127.0.0.1:50010]在我的Linux文件系统上存储在哪里?您可以对单个文件而不是整个文件系统执行此命令:
hdfs fsck/user/vpathak/testData/u.item-files-blocks-locations
。从输出中可以看到,文件位于[127.0.0.1:50010]
,它是存储块的数据节点的IP和端口。转到此datanode上的hdfs site.xml
文件,查看参数dfs.datanode.data.dir
——它是存储物理块的目录(或目录列表)。现在您已经知道了目录和块名,您可以很容易地找到它了,谢谢。我想知道的另一件事是Map/Reduce框架为每个块创建的if-inputspilt的数量。框架如何决定要创建的输入拆分数量?(a)当设置属性telling Map and Reduce tasks count时。简言之,它完全取决于您使用的InputFormat类。在TextInputFormat最简单的情况下,一个HDFS数据块的一个输入拆分,除非整个文件使用不可拆分的algo(如Gzip文本文件)进行压缩,在这种情况下,整个文件的一个输入拆分很好,但是否可以在一个节点上从一个块创建多个输入拆分?