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