MapReduce之奇迹发生的地方:shuffle
生活随笔
收集整理的這篇文章主要介紹了
MapReduce之奇迹发生的地方:shuffle
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
出處:http://langyu.iteye.com/blog/992916#comments
hadoop核心:MapReduce原理。 MR的核心是shuffle,被稱為奇跡發(fā)生的地方。 shuffle,弄亂,洗牌的意思。partition 分區(qū),sort 排序,spill溢出,disk 磁盤 下面是官方對shuffle的配圖: phase 階段,fetch 最終,merge 合并看不懂沒關(guān)系,心里有個印象就行。 下面說說我們對shuffle過程的期望: 1,完整的從map task端把數(shù)據(jù)拉取到reduce端。 2,在跨節(jié)點拉取數(shù)據(jù)時,盡可能減少對帶寬的不必要消耗。 3,減少磁盤IO對task執(zhí)行的影響。
詳細配圖,shuffle過程的map 端 : ???????????????????????????????????????????????? 首先,我們要知道是,每個map task 都有一個環(huán)形緩沖區(qū)在內(nèi)存memory中,用來存儲map的輸出結(jié)果。然后,當達到80%的時候,就會形成一個臨時文件,存儲到磁盤。當整個map結(jié)束,再對磁盤上的所有文件進行Merge合并生成“最終文件”。等待Reducer拉取。 1,數(shù)據(jù)來源HDFS上的block塊,block與split可以多對一,默認的是一對一的關(guān)系 2,數(shù)據(jù)經(jīng)過map task執(zhí)行后,形成K/V對。同時在這里就開始進行分區(qū)partition。以及,key,value,partitions,被序列化成字節(jié)數(shù)組,也就是說落到磁盤上的是字節(jié)數(shù)組 分區(qū)partition:是對key進行hash取值,然后對reduce task數(shù)量取模。進行的分區(qū) 3,spill溢寫到磁盤的數(shù)據(jù),是sort有序的。combiner:如果有很多a,1 a,1 a,1這種數(shù)據(jù),會有一個combiner過程,相當于在一個map task上進行reduce,只不過reduce只允許在最后階段那一端稱呼,所以在這里只能叫combiner,功能是一樣的。 4,就是溢寫到disk磁盤上的臨時小文件《也就是那一個個“80%”的溢寫臨時小文文件》,會進行一個Merge合并。最終在每一個map task上,都Merge成一個文件,這個文件也就是reduce一直在拉取的map task的最終結(jié)果 在map task進行時,reduce task會一直聯(lián)系它,問它完成了沒。
詳細配圖,shuffle過程的reduce 端: ???????? 1,map task結(jié)束后,reduce會啟動一些數(shù)據(jù)copy線程Fetcher取樣器。通過HTTP請求到map task 端的task tracker,獲取到map task端的輸出文件。 2,繼續(xù)Merge,這個Merge是把多個從map task端copy過來的數(shù)值進行Merge合并。 Merge的方式有三種:內(nèi)存到內(nèi)存 《不啟用》 內(nèi)存到磁盤 《一直在進行》 磁盤到磁盤 《生成最終的文件》 3,在磁盤上merge后形成“最終文件”,當這個reduce task的最終文件確定下來,那么整個shuffle也就結(jié)束了,執(zhí)行Reducer,結(jié)果放到HDFS上。
小鳥剛起步,看大神寫的之后,自己的簡單領(lǐng)悟總結(jié)。有不對的歡迎留言指正。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?贈人玫瑰,手有余香!
總結(jié)
以上是生活随笔為你收集整理的MapReduce之奇迹发生的地方:shuffle的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公益是书籍是什么,公益书籍变现模式有哪些
- 下一篇: 【汇正财经顾晨浩】大盘窄幅震荡