HDFS文件塊大小(重點)


HDFS中的文件在物理上是分塊存儲(Block),塊的大小可以通過配置參數(dfs.blocksize)來規定,默認大小在Hadoop2.x版本中是128M,老版本中是64M。

那么,問題來了,為什么一個block的大小就是128M呢?

默認為128M的原因,基於最佳傳輸損耗理論

不論對磁盤的文件進行讀還是寫,都需要先進行尋址!

最佳傳輸損耗理論:在一次傳輸中,尋址時間占用總傳輸時間的1%時,本次傳輸的損耗最小,為最佳性價比傳輸!
目前硬件的發展條件,普通磁盤寫的速率大概為100M/S, 尋址時間一般為10ms!

10ms / 1% = 1s
1s * 100M/S=100M

塊在傳輸時,每64K還需要校驗一次,因此塊大小,必須為2的n次方,最接近100M的就是128M!

如果公司使用的是固態硬盤,寫的速度是300M/S,將塊大小調整到 256M
如果公司使用的是固態硬盤,寫的速度是500M/S,將塊大小調整到 512M

為什么塊的大小不能設置太小,也不能設置太大?

不能太大:
當前有文件a, 1G
128M一塊 1G存8塊 , 取第一塊
1G一塊 1G存1塊 , 取第一塊
只需要讀取a文件0-128M部分的內容
①在一些分塊讀取的場景,不夠靈活,會帶來額外的網絡消耗
②在上傳文件時,一旦發生故障,會造成資源的浪費

不能太小:
文件a,128M
1M一塊: 128個塊,生成128個塊的映射信息
128M一塊, 1個塊,一個塊的映射信息
①塊太小,同樣大小的文件,會占用過多的NN的元數據空間
②塊太小,在進行讀寫操作時,會消耗額外的尋址時間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM