hadoop 分片 分割槽概念

2021-09-12 02:54:33 字數 1074 閱讀 7054

輸入分片(input split):在進行map計算之前,mapreduce會根據輸入檔案計算輸入分片(input split),每個輸入分片(input split)針對乙個map任務,輸入分片(input split)儲存的並非資料本身,而是乙個分片長度和乙個記錄資料的位置的陣列。

hadoop 2.x預設的block大小是128mb,hadoop 1.x預設的block大小是64mb,可以在hdfs-site.xml中設定dfs.block.size,注意單位是byte。

分片大小範圍可以在mapred-site.xml中設定,mapred.min.split.size mapred.max.split.size,minsplitsize大小預設為1b,maxsplitsize大小預設為long.max_value = 9223372036854775807

那麼分片到底是多大呢?

minsize=max 

maxsize=mapred.max.split.size

splitsize=max}

我們再來看一下原始碼

所以在我們沒有設定分片的範圍的時候,分片大小是由block塊大小決定的,和它的大小一樣。比如把乙個258mb的檔案上傳到hdfs上,假設block塊大小是128mb,那麼它就會被分成三個block塊,與之對應產生三個split,所以最終會產生三個map task。我又發現了另乙個問題,第三個block塊裡存的檔案大小只有2mb,而它的block塊大小是128mb,那它實際占用linux file system的多大空間?

答案是實際的檔案大小,而非乙個塊的大小。

有大神已經驗證這個答案了

(1)預設map個數

如果不進行任何設定,預設的map個數是和blcok_size相關的。

default_num = total_size / block_size;

結論1.如果想增加map個數,則設定mapred.map.tasks 為乙個較大的值。

2.如果想減小map個數,則設定mapred.min.split.size 為乙個較大的值。

3.如果輸入中有很多小檔案,依然想減少map個數,則需要將小檔案merger為大檔案,然後使用準則2。

原文: 

hadoop 分片 分割槽概念

參考部落格 輸入分片 input split 在進行map計算之前,mapreduce會根據輸入檔案計算輸入分片 input split 每個輸入分片 input split 針對乙個map任務,輸入分片 input split 儲存的並非資料本身,而是乙個分片長度和乙個記錄資料的位置的陣列。had...

mysql分片 分割槽 mysql分割槽 分片

range分割槽案例 按照日期的年分表,通過year函式獲取分割槽鍵的具體年份,values less 表示少於1991年的放入p0,類推 時間函式,to days和 to seconds 我當前版本5.5支援 可以讓你更精確的分到天甚至秒.partition p3 values less than...

分割槽和分片的區別 MySQL分割槽與分片的差異

要了解分割槽與分片之間的差異,首先我們需要知道什麼是分片與分割槽。分片 分片sharding 不是一門新技術,而是乙個相對簡樸的軟體理念。眾所周知,mysql 5 之後才有了資料表分割槽功能,那麼在此之前,很多 mysql 的潛在使用者都對 mysql 的擴充套件性有所顧慮,而是否具備分割槽功能就成...