Hadoop HDFS中的資料塊和Map任務的分片

2021-07-12 01:52:55 字數 1002 閱讀 1111

hdfs的資料塊

磁碟資料塊是磁碟進行資料讀/寫的最小單位,一般是512位元組,

而hdfs中也有資料塊,預設為64mb。所以hdfs上的大檔案被分為許多個chunk.而hdfs上的小檔案(小於64mb)的檔案不會佔據整個塊的空間。

hdfs資料塊設定大的原因是減少定址開銷,資料備份也是以塊為單位的。

用hadoop fsck / -files -blocks 命令可以檢查hdfs根目錄(/)下所有檔案,塊的健康狀況:

map任務的分片:

為什麼推薦map任務的分片尺寸和hdfs基本塊的大小一致為最佳呢?

因為有3個因素:

a.map任務數=輸入檔案總大小/分片尺寸,所以分片越大,map任務數越少,從而系統執行開銷越小。

b.管理分片的開銷:顯然是分片越大,則分片數量越少,越容易管理。

從a,b因素來看,貌似是分片越大越好。

c.網路傳輸開銷

但是,如果分片太大以至於乙個分片要跨越多個hdfs塊,則乙個map任務必須要由多個塊通過網路傳輸,所以分片大小的上限是hdfs塊的大小。

綜上所述,map任務時的分片大小設定為hdfs塊的大小是最佳選擇。

hadoop上的時間計算

hadoop上的計算時間 = hadoop框架自身耗時 + 資料單機處理時間 / 計算併發度。

其中,hadoop框架自身耗時大約在10s左右,如果引數設定的不好,可能會比較長,不過最多估計也就半分鐘左右。

計算併發度取決於兩個因素:

1. 資料占用的分塊數取決於你的檔案在hadoop上存放時設定的塊大小,預設是64m,你看一下是不是這麼大,分塊數量=檔案大小/塊大小。

2. hadoop設定的最大並行任務數,你看一下jobtracker上執行時某個時刻running狀態的task數量就是了,通常這個值是比較穩定的。

更多hadoop相關資訊見hadoop 專題頁面 

Hadoop HDFS中的資料塊和Map任務的分片

日期 2012 05 26 linux 社群supercharles 字型 大 中小 hdfs 的資料塊 磁碟資料塊是磁碟進行資料讀 寫的最小單位,一般是 512位元組,而hdfs 中也有資料塊,預設為 64mb 所以hdfs 上的大檔案被分為許多個 chunk.而hdfs 上的小檔案 小於 64m...

Hadoop HDFS中的資料塊和Map任務的分片

hdfs的資料塊 磁碟資料塊是磁碟進行資料讀 寫的最小單位,一般是512位元組,而hdfs中也有資料塊,預設為64mb。所以hdfs上的大檔案被分為許多個chunk.而hdfs上的小檔案 小於64mb 的檔案不會佔據整個塊的空間。hdfs資料塊設定大的原因是減少定址開銷,資料備份也是以塊為單位的。用...

Hadoop HDFS 檔案塊大小

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