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