Hadoop中Block和Split的區(qū)別

1 Block

當我們把文件上傳到HDFS時埃仪,文件會被分塊,這個是真實物理上的劃分佩脊。每塊的大小可以通過hadoop-default.xml里配置選項進行設置润梯。系統(tǒng)也提供默認大小,其中Hadoop 1.x中的默認大小為64M社牲,而Hadoop 2.x中的默認大小為128M粪薛。每個Block分別存儲在多個DataNode上(默認是3個),用于數(shù)據(jù)備份進而提供數(shù)據(jù)容錯能力和提高可用性搏恤。?

在很多分布式文件系統(tǒng)中我們都可以看到Block的存在汗菜,這種設計的優(yōu)點是:

存儲的文件大小可以大于集群中任意一個磁盤的容量。這很好理解挑社,文件被劃分到多個Block中存儲,對磁盤透明巡揍;

使用Block抽象而非整個文件作為存儲單元痛阻,可以極大簡化存儲子系統(tǒng)的設計。因為Block size是統(tǒng)一的腮敌,因此一個節(jié)點上可以存儲多少Block就是可以推算的阱当;

Block 非常適合用于數(shù)據(jù)備份俏扩,進而提供數(shù)據(jù)容錯能力和可用性。

同樣在磁盤中弊添,每個磁盤都有默認的數(shù)據(jù)塊大小录淡,這是磁盤進行數(shù)據(jù)讀/寫的最小單位,磁盤塊一般為512字節(jié)油坝。但是在分布式文件系統(tǒng)中數(shù)據(jù)塊一般遠大于磁盤數(shù)據(jù)塊的大小嫉戚,并且為磁盤塊大小的整數(shù)倍,例如HDFS Block size默認為64MB澈圈。

分布式存儲系統(tǒng)中選擇大Block size的主要原因是為了最小化尋址開銷彬檀,使得磁盤傳輸數(shù)據(jù)的時間可以明顯大于定位這個塊所需的時間。然而瞬女,在HDFS中Block size也不好設置的過大窍帝,這是因為MapReduce中的map任務通常一次處理一個塊中的數(shù)據(jù),因此如果Block太大诽偷,則map數(shù)就會減少坤学,作業(yè)運行的并行度就會受到影響,速度就會較慢报慕。

如果一個HDFS上的文件大小(file size) 小于塊大小(block size) 深浮,那么HDFS會實際占用Linux file system的多大空間??

答案是實際的文件大小卖子,而非一個塊的大小略号。

2 Split

split 是邏輯意義上的split。 通常在 M/R 程序或者其他數(shù)據(jù)處理技術上用到洋闽。根據(jù)你處理的數(shù)據(jù)量的情況玄柠,split size是允許用戶自定義的。?

split size 定義好了之后诫舅,可以控制 M/R 中 Mapper 的數(shù)量羽利。如果M/R中沒有定義 split size , 就用默認的HDFS配置作為 input split刊懈。?

輸入分片(Input Split):在進行map計算之前这弧,mapreduce會根據(jù)輸入文件計算輸入分片(input split),每個輸入分片(input split)針對一個map任務虚汛,輸入分片(input split)存儲的并非數(shù)據(jù)本身匾浪,而是一個分片長度和一個記錄數(shù)據(jù)的位置的數(shù)組。

通常一個split就是一個block(FileInputFormat僅僅拆分比block大的文件)卷哩,這樣做的好處是使得Map可以在存儲有當前數(shù)據(jù)的節(jié)點上運行本地的任務蛋辈,而不需要通過網(wǎng)絡進行跨節(jié)點的任務調(diào)度。

通過mapred.min.split.size,?mapred.max.split.size,?block.size來控制拆分的大小冷溶。

如果mapred.min.split.size大于block size渐白,則會將兩個block合成到一個split,這樣有部分block數(shù)據(jù)需要通過網(wǎng)絡讀取逞频。

如果mapred.max.split.size小于block size纯衍,則會將一個block拆成多個split,增加了Map任務數(shù)苗胀。

先獲取文件在HDFS上的路徑和Block信息襟诸,然后根據(jù)splitSize對文件進行切分(splitSize = computeSplitSize(blockSize, minSize, maxSize)),默認splitSize 就等于blockSize的默認值(64m)柒巫。

3 總結

block是物理上的數(shù)據(jù)分割励堡,而split是邏輯上的分割。

如果沒有特別指定堡掏,split size 就等于 HDFS 的 block size 应结。

用戶可以在M/R 程序中自定義split size。

一個split 可以包含多個blocks泉唁,也可以把一個block應用多個split操作鹅龄。

有多少個split,就有多少個mapper亭畜。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扮休,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拴鸵,更是在濱河造成了極大的恐慌玷坠,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劲藐,死亡現(xiàn)場離奇詭異八堡,居然都是意外死亡,警方通過查閱死者的電腦和手機聘芜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門兄渺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汰现,你說我怎么就攤上這事挂谍。” “怎么了瞎饲?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵口叙,是天一觀的道長。 經(jīng)常有香客問我嗅战,道長庐扫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮形庭,結果婚禮上,老公的妹妹穿的比我還像新娘厌漂。我一直安慰自己萨醒,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布苇倡。 她就那樣靜靜地躺著富纸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旨椒。 梳的紋絲不亂的頭發(fā)上晓褪,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音综慎,去河邊找鬼涣仿。 笑死,一個胖子當著我的面吹牛示惊,可吹牛的內(nèi)容都是我干的好港。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼米罚,長吁一口氣:“原來是場噩夢啊……” “哼钧汹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起录择,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤拔莱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后隘竭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體塘秦,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年货裹,在試婚紗的時候發(fā)現(xiàn)自己被綠了嗤形。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡弧圆,死狀恐怖赋兵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搔预,我是刑警寧澤霹期,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站拯田,受9級特大地震影響历造,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一吭产、第九天 我趴在偏房一處隱蔽的房頂上張望侣监。 院中可真熱鬧,春花似錦臣淤、人聲如沸橄霉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姓蜂。三九已至,卻和暖如春医吊,著一層夾襖步出監(jiān)牢的瞬間钱慢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工卿堂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留束莫,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓御吞,卻偏偏與公主長得像麦箍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陶珠,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350