Hadoop分布式文件系统中的块是否存储多个小文件,或块是否只存储1个文件?小文件和HDFS块
回答
多个文件不存储在一个块中。顺便说一句,单个文件可以存储在多个块中。文件和block-id之间的映射被保存在NameNode中。
按照Hadoop : The Definitive Guide
不同于单个磁盘文件系统,HDFS中的文件比单块小不占用底层存储的整个数据块的价值。
HDFS旨在处理大型文件。如果有太多的小文件,那么NameNode可能会被加载,因为它存储了HDFS的名称空间。检查此article如何缓解太多小文件的问题。
那么你可以使用HAR(Hadoop Archive)文件系统来尝试将多个小文件打包到由HAR文件系统管理的特殊部分文件的HDFS块中。
块将存储单个文件。如果你的文件大于BlockSize(64/128/..),那么它将被分成多个块,并且分别具有BlockSize。
主要点需要在HDFS理解,file is partioned into blocks based on size
且不会有在存储器中,存储文件的某些块(这是误解)
基本上多个文件不存储在单个块(除非它是档案或Har文件)。
Hadoop块大小是Hadoop存储概念。每次当您将文件存储在Hadoop中时,它将被划分为块大小,并且基于复制因子和数据局部性,它将分布在群集中。
有关详情:
当你推HDFS上的文件时,它将被划分成块。每个块就像块大小所描述的具有最大大小的单个文件。
每个块都会包含一个.meta文件,以便在Hadoop上存储该块的元数据信息。
如果文件非常小,那么整个文件将在一个块中,并且块(存储文件)将具有与文件和元文件相同的大小。
一些命令:
- 连接到群集上的任何数据节点[如果你有机会;)。然后转到该节点的存储目录,您可以看到存储在数据节点上的实际块如下所示。
(DIR的是按我的簇 -/DATA2/DFS/DN /):
块大小:1 GB
坎德拉/数据/ DFS/DN - >电流 - >最终确定 - > subDir0 - >(这里是黄金)
块只使用KB的存储对于小文件或者文件大小是我的块大小+一些KB的
012可能是-rw-R - R-- 1个HDFS HDFS 91K年09月13十六时19 blk_1073781504
-rw-R - R-- 1个HDFS HDFS 19K年09月13 16时21 blk_1073781504_40923.meta
当文件更大然后是块大小的块看起来像的东西,如下
-RW-R - R-- 1个HDFS HDFS 1.0G 8月31日12:03 blk_1073753814
-RW -r - r-- 1 hdfs hdfs 8.1M Aug 31 12:04 blk_1073753814_12994.meta
我希望它能解释块存储的东西。如果您想知道您的文件如何存储块中的细节,然后运行
HDFS的fsck -blocks -locations
让我知道如果我在这里漏掉了什么。
- 1. HDFS块大小和文件大小的问题,文件小于块大小
- 2. HDFS块大小和复制
- 3. HDFS上的文件块
- 4. HDFS块大小vs实际文件大小
- 5. HDFS小文件设计
- 6. HDFS块大小混乱
- 7. HDFS - 块大小相关
- 8. 在小文件大小的情况下HDFS块大小会发生什么
- 9. Hadoop HDFS最大文件大小
- 10. HBase + HDFS - 缺少hdfs块
- 11. Hadoop HDFS数据文件:显示数据结点和块
- 12. 为什么“每HDFS文件1分HDFS块”是在地板公文更好
- 13. 实木复合地板分区和HDFS文件大小
- 14. HDFS块问题
- 15. HDFS块重启
- 16. HDFS块创建
- 17. HttpUrlConnection块大小和视频文件
- 18. Xfs文件大小,inode大小和块大小
- 19. HDFS不复制块
- 20. 文件系统块大小
- 21. Hadoop块大小和文件大小问题?
- 22. HDFS如何在CopyFromLocal中分发新的块或文件
- 23. 用Python获取文件名和扩展名为hdfs的文件
- 24. 覆写HDFS文件/目录
- 25. 何处上传hdfs文件?
- 26. 读入csv文件从HDFS
- 27. 2 Hdfs文件比较
- 28. IOException写入文件到Hdfs
- 29. 更新hadoop HDFS文件
- 30. Hdfs文件存储查询
你知道如何找到块到文件的映射吗? 'hadoop fsck/-files -blocks -locations -racks'给出文件来阻止映射,但是并没有说实际文件系统上的哪个目录是位于哪个块(即它在子目录9或子目录61中)。 – Eugen 2011-12-19 15:39:58
'dfs.datanode.data.dir'属性决定了本地文件系统上DFS数据节点应该存储其块的位置。如果这是以逗号分隔的目录列表,则数据将存储在所有已命名的目录中,通常位于不同的设备上。不存在的目录被忽略。 – 2011-12-19 16:33:14
不,我的意思是当物理块被存储时,它们可以存储在'dfs.datanode.data.dir'或者该目录下的子目录中(由Datanode创建)。有没有办法找到哪个块存储在哪里(作为顶级文件或在某个子目录中)? – Eugen 2011-12-19 22:22:14