hadoop--MapReduce概述
目錄
- MapReduce定義
- MapReduce優(yōu)缺點
- 優(yōu)點
- 缺點
- MapReduce核心編程思想
- MapReduce進(jìn)程
- 常用數(shù)據(jù)序列化類型
- MapReduce編程規(guī)范
- Mapper階段
- Reducer階段
- Driver階段
- OutputFormat接口實現(xiàn)類
MapReduce定義
MapReduce是一個分布式運算程序的編程框架,是用戶開發(fā)“基于hadoop的數(shù)據(jù)分析應(yīng)用”的核心框架;
MapReduce核心功能是將用戶編寫的業(yè)務(wù)邏輯代碼和自帶默認(rèn)組件整合成一個完整的分布式運算程序,并發(fā)運行在一個hadoop集群上。
MapReduce優(yōu)缺點
優(yōu)點
1.易于編程。用戶只關(guān)心業(yè)務(wù)邏輯、實現(xiàn)框架的接口;
2.良好的擴(kuò)展性:可以動態(tài)增加服務(wù)器,解決計算資源不夠用的問題;
3.高容錯性:任何一臺機(jī)器掛掉,都可以將任務(wù)轉(zhuǎn)移到其他節(jié)點;
4.適合海量數(shù)據(jù)計算(TB/PB):幾千臺服務(wù)器共同計算。
缺點
1.不擅長實時計算;
2.不擅長流失計算;
3.不擅長DAG有向無環(huán)圖計算。
MapReduce核心編程思想
MapReduce核心編程思想:
1.MapReduce運行程序一般需要分為2個階段:Map階段和Reduce階段;
2.Map階段的并發(fā)MapTask,完全并行運行,互不干涉;
3.Reduce階段的兵法ReduceTask,完全互不相干,但是他們的數(shù)據(jù)依賴于上一個階段的所有MapTask并發(fā)實例的輸出;
4.MapReduce編程模型只能包含一個Map階段和一個Reduce階段,如果用戶的業(yè)務(wù)邏輯非常復(fù)雜,那就只能多個MapReduce程序,串行運行。
MapReduce進(jìn)程
一個完整的MapReduce程序在分布式運行時有3類實例進(jìn)程:
1.MrAppMaster: 負(fù)責(zé)整個程序的過程調(diào)度及狀態(tài)協(xié)調(diào);
2.MapTask: 負(fù)責(zé)Map階段的整個數(shù)據(jù)處理流程;
3.ReduceTask: 負(fù)責(zé)Reduce階段的整個數(shù)據(jù)處理流程。
常用數(shù)據(jù)序列化類型
MapReduce編程規(guī)范
用戶編寫的程序分為三個部分:Mapper、Reducer、Driver。
Mapper階段
1.用戶自定義分Mapper要繼承自己的父類;
2.Mapper的輸入數(shù)據(jù)是KV對的形式(KV的類型可自定義);
3.Mapper中的業(yè)務(wù)邏輯寫在map()方法中;
4.Mapper的輸出數(shù)據(jù)是KV對的形式(KV的類型可自定義);
5.Map()方法(Map Task進(jìn)程)對每一個<K,V>調(diào)用一次。
Reducer階段
1.用戶自定義的Reducer要繼承自己的父類;
2.Reducer的輸入數(shù)據(jù)類型對應(yīng)Mapper的輸出數(shù)據(jù)類型,也是KV;
3.Reducer的業(yè)務(wù)邏輯寫在reduce()方法中;
4.ReducerTask進(jìn)程對每一組相同k的<k,v>組調(diào)用一次reduce()方法;
Driver階段
相當(dāng)于YARN集群的客戶端,用于提交我們整個程序到Y(jié)ARN集群,提交的是封裝了MapReduce程序相關(guān)運行參數(shù)的job對象。
wordcount詞頻統(tǒng)計案例==》
OutputFormat接口實現(xiàn)類
OutputFormat是MapReduce輸出的基類,所有實現(xiàn)MapReduce輸出都實現(xiàn)了OutputFormat接口。
OutputFormat實現(xiàn)類
默認(rèn)輸出格式TextOutputFormat
自定義OutputFormat
a. 自定義一個類繼承Fileoutputformat;
b.改寫RecordWriter,具體改寫輸出數(shù)據(jù)的方法write().
總結(jié)
以上是生活随笔為你收集整理的hadoop--MapReduce概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jquery 获取select,radi
- 下一篇: WCF部署到IIS异常(详细: 不能加载