Hadoop資料分析平臺實戰——070深入理解MapReduce 02(案例)
離線資料分析平臺實戰——070深入理解MapReduce 02
Shuffle階段說明
shuffle階段主要包括map階段的combine、group、sort、partition以及reducer階段的合併排序。
Map階段通過shuffle後會將輸出資料按照reduce的分割槽分檔案的儲存,
檔案內容是按照定義的sort進行排序好的。
Map階段完成後會通知ApplicationMaster,然後AM會通知Reduce進行資料的拉取,在拉取過程中進行reduce端的shuffle過程。
使用者自定義Combiner
Combiner可以減少Map階段的中間輸出結果數,降低網路開銷。
預設情況下是沒有Combiner的。
使用者自定義的Combiner要求是Reducer的子類,以Map的輸出<key,value>作為Combiner的輸入<key,value>和輸出<key,value>,也就是說Combiner的輸入和輸出必須是一樣的。
可以通過job.setCombinerClass設定combiner的處理類,MapReduce框架不保證一定會呼叫該類的方法。
使用者自定義Partitoner
Partitioner是用於確定map輸出的<key,value>對應的處理reducer是那個節點。
預設MapReduce任務reduce個數為1個,此時Partitioner其實沒有什麼效果,但是當我們將reduce個數修改為多個的時候,partitioner就會決定key所對應reduce的節點序號(從0開始)。
可以通過job.setPartitionerClass方法指定Partitioner類,預設情況下使用HashPartitioner(預設呼叫key的hashCode方法)。
使用者自定義Group
GroupingComparator是用於將Map輸出的<key,value>進行分組組合成<key,List<value>>的關鍵類,直白來講就是用於確定key1和key2是否屬於同一組,如果是同一組,就將map的輸出value進行組合。
要求我們自定義的類實現自介面RawComparator,可以通過job.setGroupingComparatorClass方法指定比較類。
預設情況下使用WritableComparator,但是最終呼叫key的compareTo方法進行比較。
使用者自定義Sort
SortComparator是用於將Map輸出的<key,value>進行key排序的關鍵類,直白來講就是用於確定key1所屬組和key2所屬組那個在前,那個在後。
要求我們自定義的類實現自介面RawComparator,可以通過job.setSortComparatorClass方法指定比較類。預設情況下使用WritableComparator,但是最終呼叫key的compareTo方法進行比較。
使用者自定義Reducer的Shuffle
在reduce端拉取map的輸出資料的時候,會進行shuffle(合併排序),MapReduce框架以外掛模式提供了一個自定義的方式,我們可以通過實現介面ShuffleConsumerPlugin
,並指定引數mapreduce.job.reduce.shuffle.consumer.plugin.class
來指定自定義的shuffle規則,但是一般情況下,直接採用預設的類org.apache.hadoop.mapreduce.task.reduce.Shuffle
。
案例--二次排序
hadoop預設只對key進行排序,有時候我們需要將value部分也進行排序,這種情況下有兩種方式實現,第一種,我們將排序放到reducer端進行,但是這種方式當資料量比較大的時候,會比較消耗記憶體。
那麼另外一種方式就是二次排序。
二次排序的內部實行其實是先按照key+value組合的方式進行排序,然後根據單獨key進行分組的一種實行方式。
要求reducer個數為2,而且奇數到第一個reducer進行處理,偶數到第二個reducer進行處理。
相關文章
- Hadoop離線資料分析平臺實戰——340瀏覽器PV分析Hadoop瀏覽器
- 使用hadoop mapreduce分析mongodb資料HadoopMongoDB
- 七牛大資料平臺的實時資料分析實戰大資料
- 高可用Hadoop平臺-實戰Hadoop
- Hadoop大資料實戰系列文章之Mapreduce 計算框架Hadoop大資料框架
- 高可用Hadoop平臺-執行MapReduce程式Hadoop
- 企業大資料平臺MapReduce應用之Join實踐!大資料
- 小白學習大資料測試之hadoop hdfs和MapReduce小實戰大資料Hadoop
- 大資料平臺基礎架構hadoop安全分析大資料架構Hadoop
- 【大資料】MapReduce開發小實戰大資料
- 大型資料集處理之道:深入瞭解Hadoop及MapReduce原理Hadoop
- 高可用Hadoop平臺-實戰尾聲篇Hadoop
- 《Hadoop+Spark大資料分析實戰》簡介HadoopSpark大資料
- 資料分析專案精講!電商平臺人、貨、場分析實戰,附資料來源
- 案例|政務大資料平臺資料安全建設實踐大資料
- [深入理解Java虛擬機器]第五章 調優案例分析與實戰Java虛擬機
- 貨拉拉自助資料分析平臺實踐
- Hadoop(十九)MapReduce OutputFormat 資料壓縮HadoopORM
- 分析平臺Tableau推出資料和分析平臺新功能
- 大資料和Hadoop平臺介紹大資料Hadoop
- Hadoop大資料平臺之HBase部署Hadoop大資料
- Hadoop大資料平臺之Kafka部署Hadoop大資料Kafka
- 大資料平臺Hadoop叢集搭建大資料Hadoop
- 高可用Hadoop平臺-Flume NG實戰圖解篇Hadoop圖解
- 遊戲資料分析的三大實戰案例深度解讀遊戲
- 資料視覺化平臺搭建,警務實戰平臺大資料應用視覺化大資料
- Hadoop-MapReduce-TeraSort-大資料排序例子Hadoop大資料排序
- 大資料開發實戰:實時資料平臺和流計算大資料
- 美團點評資料平臺Kerberos優化實戰ROS優化
- CDS — 資料管理分析平臺
- 資料分析平臺搭建指南
- Hadoop1.x MapReduce的Slot的理解Hadoop
- Hadoop大資料平臺有何優勢?Hadoop大資料
- 基於Hadoop大資料分析應用場景與實戰Hadoop大資料
- 大資料 - MapReduce:從原理到實戰的全面指南大資料
- Hadoop之MapReduce2基礎梳理及案例Hadoop
- Hadoop叢集(第9期)_MapReduce初級案例Hadoop
- 騰訊雲大資料實戰案例大資料