HDFS檔案塊大小(重點)

2022-06-05 20:06:07 字數 1007 閱讀 8671

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的元資料空間

②塊太小,在進行讀寫操作時,會消耗額外的定址時間

HDFS 檔案塊大小

hdfs中的檔案在物理上是分塊儲存 block 塊的大小可以通過配置引數 dfs.blocksize 來規定,預設大小在hadoop2.x版本中是128m,老版本中是64m。思考 為什麼塊的大小不能設定太小,也不能設定太大?1 hdfs的塊設定太小,會增加定址時間,程式一直在找塊的開始位置 2 如果...

HDFS資料塊大小設計策略

hdfs中的檔案在物理上是分塊儲存 block 預設大小在hadoop2.x版本中是128m,老版本中是64m。原因 檔案塊越大,分割數越少,定址時間越短,但磁碟傳輸時間越長 檔案塊越小,分割數越多,定址時間越長,但磁碟傳輸時間越短 目的 盡可能保持使定址時間僅佔傳輸時間的1 如果定址時間約為10m...

Hadoop HDFS 檔案塊大小

hdfs檔案塊大小 hdfs中的檔案在物理上是分塊儲存 block 塊的大小可以通過配置引數 dfs.blocksize 來規定,預設大小在hadoop2.x版本中是128m,老版本中是64m hdfs的塊比磁碟的塊大,其目的是為了最小化定址開銷。如果塊設定得足夠大,從磁碟傳輸資料的時間會明顯大於定...