Haddop:Mapreduce

Hadoop的核心思想之一是mapreduce(分布式計算框架)
Compute:計算層(處理層)
HDFS:分治

一彬呻、What? 什么是MR

1灵妨、過濾性別為0的
循環(huán)處理每行記錄解阅,切割性別列,進行過濾
2泌霍、轉換碼值為字典值
read line货抄,切割性別列述召,進行轉換
3、展開字段為復合值
read line蟹地,切割性別列积暖,進行轉換

簡單概括:
MAP:以一條記錄為單位做映射。
REDUCE:以一組記錄為單位做計算怪与。
什么叫一組夺刑?分組!
分組依賴一種數(shù)據(jù)格式:key:value
k,v的實現(xiàn):MAP實現(xiàn)的

1分别、思考:為啥叫MapReduce?

  • Map
    映射遍愿、變換、過濾
    一進N出
  • Reduce
    分解耘斩、縮小沼填、歸納
    一組進N出
  • (KEY,VAL)
    鍵值對的鍵劃分數(shù)據(jù)分組

2、MapReduce邏輯架構

MapReduce邏輯架構

1)藍色框(方法)
2)虛線框(任務task)
3)part分區(qū)(包含若干組)
4)Split分片:邏輯劃分括授,不包含具體數(shù)據(jù)坞笙,只包含這些數(shù)據(jù)的位置信息,一個Split只會包含一個File的block荚虚,不會跨文件

塊薛夜、切片、map版述、reduce梯澜、組、分區(qū)的關系:

1)bloock:split=1:1,1:N,N:1,
2)split:map=1:1
3)map:reduce=N:1,1:1,N:N,1:N
4)group(key):partiton=1:1,N:1,N:N

總結:

MR:數(shù)據(jù)以一條記錄為單位院水,經(jīng)過map方法映射成kv鍵值對腊徙,相同的key為一組,這一組數(shù)據(jù)調用一次reduce方法檬某,在方法內迭代計算一組數(shù)據(jù)撬腾。(迭代器模式)

經(jīng)驗:數(shù)據(jù)集一般是用迭代計算的方式

詳情:map到reduce線性發(fā)展順序關系。map并行度恢恼,由計算層切片split的數(shù)量決定(可調的窗口機制民傻,split默認=Block(文件),一般不會調)场斑,split與map為1:1的關系漓踢,切片split里面要格式化format出一條記錄,以一條記錄為單位調用一次map方法(map方法以記錄為單位調用)漏隐,map的輸出是k,v(kv完成分組的事情喧半,相同的k為一組,一組數(shù)據(jù)調用一次reduce方法青责,一組數(shù)據(jù)不能被破壞)挺据,每個reduce拉取屬于自己的分區(qū)的數(shù)據(jù)(一個reduce任務一個分區(qū)取具,每個分區(qū)包含若干組),reduce的個數(shù)由人決定(reduce并行度)扁耐。

1.一個map只會處理一個Split
2.map處理完的數(shù)據(jù)會分成不同的partition
3.一類partition對應一個reduce
那么一個mr程序中 map的數(shù)量是由split的數(shù)量決定的暇检,reduce的數(shù)量是由partiton的數(shù)量決定的。

3婉称、MapReduce執(zhí)行過程

MapReduce執(zhí)行過程

1块仆、input split:切片會格式化出記錄,以記錄為單位調用map方法
2王暗、map:map的輸出映射成kv悔据,kv會參與一次分區(qū)計算,拿著key算出P分區(qū)號瘫筐,最終輸出k,v,p(相同的k蜜暑,p是一樣的)
3铐姚、buffer內存緩沖區(qū):默認為100M策肝,分區(qū)排序,內部有序外部無序隐绵,先快速排序后歸并排序
4之众、內存緩沖區(qū)溢寫磁盤時做一個2次排序,分區(qū)有序依许,且分區(qū)內key有序棺禾,未來相同的一組key會相鄰的排在一起。一次寫入(一次用戶態(tài)與內核態(tài)的切換)
5峭跳、map Task的輸出是一個文件膘婶,存在本地文件系統(tǒng)中
6、reduce的歸并排序其實可以和reduce方法的計算同時進行蛀醉,盡量減少IO悬襟,因為有迭代器模式的支持。

迭代器模式是批量計算中非常優(yōu)美的實現(xiàn)形式拯刁。

Mapreduce的執(zhí)行步驟:

MapReduce的執(zhí)行過程主要包含是三個階段:Map階段脊岳、Shuffle階段、Reduce階段

一垛玻、Map任務處理
1)讀取HDFS中的文件割捅,每一行解析成一個。每一個鍵值對調用一次map函數(shù)帚桩。
2)覆蓋map(),接收1.1產生的亿驾,進行處理,轉換為新的輸出账嚎。
3)對1.2輸出的進行分區(qū)莫瞬。默認分為一個區(qū)参淹。
4)對不同分區(qū)中的數(shù)據(jù)進行排序(按照k)、分組乏悄。分組指的是相同的key的value放到一個集合中浙值。排序后<hello,1> <hello,1> <me,1> <you,1> 分組后:<hello,{1,1}><me,{1}><you,{1}>
5)(可選)對分組后的數(shù)據(jù)進行歸約。

二檩小、Shuffle
Shuffle,翻譯成中文是混洗开呐。mr沒有排序是沒有靈魂的,shuffle是mr中非常重要的一個過程规求。他在Map執(zhí)行完筐付,Reduce執(zhí)行前發(fā)生。

Shuffle階段橫跨Map端和Reduce端阻肿,在Map端包括Spill過程瓦戚,在Reduce端包括copy和merge/sort過程。通常認為Shuffle階段就是將map的輸出作為reduce的輸入的過程丛塌。

1较解、Map階段的shuffle
數(shù)據(jù)經(jīng)過用戶自定的map函數(shù)處理完成之后,數(shù)據(jù)會放入內存中的環(huán)形緩沖區(qū)之內赴邻,他分為兩個部分印衔,數(shù)據(jù)區(qū)和索引區(qū)。數(shù)據(jù)區(qū)是存放用戶真實的數(shù)據(jù)姥敛,索引區(qū)存放數(shù)據(jù)對應的key值奸焙,partition和位置信息。當環(huán)形緩沖區(qū)數(shù)據(jù)達到一定的比例后彤敛,會將數(shù)據(jù)溢寫到一個文件之中与帆,即途中的spill(溢寫)過程。
在溢寫前墨榄,會將數(shù)據(jù)根據(jù)key和partition進行排序玄糟,排好序之后會將數(shù)據(jù)區(qū)的數(shù)據(jù)按照順序一個個寫入文件之中。這樣就能保證文件中數(shù)據(jù)是按照key和parttition進行排序的渠概。最后會將溢寫出的一個個小文件合并成一個大的文件茶凳,并且保證在每一個partition中是按照Key值有序的。

總結:
Collect階段將數(shù)據(jù)放進環(huán)形緩沖區(qū)播揪,緩沖區(qū)分為數(shù)據(jù)區(qū)和索引區(qū)贮喧。
Sort階段對在同一partition內的索引按照key排序。
Spill階段跟胡排好序的索引將數(shù)據(jù)按照順序寫到文件中猪狈。
Merge階段將Spill生成的小文件分批合并排序成一個大文件箱沦。

2、Reduce階段的shuffle
reduce節(jié)點會將數(shù)據(jù)拷貝到自己的buffer緩存區(qū)中雇庙,當緩存區(qū)中的數(shù)據(jù)達到一定的比例的時候谓形,同樣會發(fā)生溢寫過程灶伊,我們任然要保證每一個溢寫的文件是有序的。與此同時寒跳,后臺會啟一個線程聘萨,將這些小文件合并成一個大文件,經(jīng)過一輪又一輪的合并童太,最后將這些文件合并成一個大的數(shù)據(jù)集米辐。在這個數(shù)據(jù)集中,數(shù)據(jù)是有序的书释,相同的key值對應的value值是挨在一起的翘贮。最后,將這些數(shù)據(jù)交給reduce程序進行聚合處理爆惧。

總結:
Copy階段將Map端的數(shù)據(jù)分批拷貝到Reduce的緩沖區(qū)狸页。
Spill階段將內存緩存區(qū)的數(shù)據(jù)按順序寫到文件中。
Merge階段將溢出的文件合并成一個排序的數(shù)據(jù)集扯再。

三芍耘、Reduce任務處理
1)多個map任務的輸出,按照不同的分區(qū)叔收,通過網(wǎng)絡copy到不同的reduce節(jié)點上齿穗。
2)對多個map的輸出進行合并傲隶、排序饺律。覆蓋reduce函數(shù),接收的是分組后的數(shù)據(jù)跺株,實現(xiàn)自己的業(yè)務邏輯复濒, 
處理后,產生新的輸出乒省。
3)對reduce輸出的寫到HDFS中巧颈。

參考資料:
https://www.cnblogs.com/lfxiao/p/10770051.html
http://www.reibang.com/p/d1e7b4ff3810

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
禁止轉載,如需轉載請通過簡信或評論聯(lián)系作者袖扛。
  • 序言:七十年代末砸泛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蛆封,更是在濱河造成了極大的恐慌唇礁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惨篱,死亡現(xiàn)場離奇詭異盏筐,居然都是意外死亡,警方通過查閱死者的電腦和手機砸讳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門琢融,熙熙樓的掌柜王于貴愁眉苦臉地迎上來界牡,“玉大人,你說我怎么就攤上這事漾抬∷尥觯” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵纳令,是天一觀的道長她混。 經(jīng)常有香客問我,道長泊碑,這世上最難降的妖魔是什么坤按? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮馒过,結果婚禮上臭脓,老公的妹妹穿的比我還像新娘。我一直安慰自己腹忽,他們只是感情好来累,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窘奏,像睡著了一般嘹锁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上着裹,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天领猾,我揣著相機與錄音,去河邊找鬼骇扇。 笑死摔竿,一個胖子當著我的面吹牛,可吹牛的內容都是我干的少孝。 我是一名探鬼主播继低,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼稍走!你這毒婦竟也來了袁翁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤婿脸,失蹤者是張志新(化名)和其女友劉穎粱胜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盖淡,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡年柠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冗恨。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡答憔,死狀恐怖,靈堂內的尸體忽然破棺而出掀抹,到底是詐尸還是另有隱情虐拓,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布傲武,位于F島的核電站蓉驹,受9級特大地震影響,放射性物質發(fā)生泄漏揪利。R本人自食惡果不足惜态兴,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疟位。 院中可真熱鬧瞻润,春花似錦、人聲如沸甜刻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽得院。三九已至傻铣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祥绞,已是汗流浹背非洲。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留就谜,地道東北人怪蔑。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像丧荐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子喧枷,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容

  • Hadoop MapReduce 整個MR的過程可以分解為下面幾步 讀取數(shù)據(jù) Map reduce output ...
    流浪山人閱讀 601評論 0 1
  • shuffle過程 shuffle概念 shuffle的本意是洗牌虹统、混洗的意思,把一組有規(guī)則的數(shù)據(jù)盡量打亂成無規(guī)則...
    專職掏大糞閱讀 284評論 0 0
  • MapReduce(mr) -- 分布式計算框架 Hadoop -YARN Hadoop -HDFS 導讀一....
    smart_Xu閱讀 946評論 0 6
  • MapReduce 框架原理 3.1 InputFormat 數(shù)據(jù)輸入 3.1.1 切片與 與 MapTask 并...
    pauls閱讀 248評論 0 1
  • 表情是什么隧甚,我認為表情就是表現(xiàn)出來的情緒车荔。表情可以傳達很多信息。高興了當然就笑了戚扳,難過就哭了忧便。兩者是相互影響密不可...
    Persistenc_6aea閱讀 124,915評論 2 7