MapReduce定義:
========================================================================
MapReduce是一種可用于數據處理的編程框架。MapReduce采用"分而治之"的思想,把對大規模數據集的操作,分發給一個主節點管理下的各個分節點共同完成,然后通過整合各個節點的中間結果,得到最終結果。簡單地說,MapReduce就是"任務的分解與結果的匯總"。
在分布式計算中,MapReduce框架負責處理了并行編程中分布式存儲、工作調度、負載均衡、容錯均衡、容錯處理以及網絡通信等復雜問題,把處理過程高度抽象為兩個函數:map和reduce,map負責把任務分解成多個任務,reduce負責把分解后多任務處理的結果匯總起來。
MapReduce適用的問題:
========================================================================
用MapReduce來處理的數據集(或任務)必須具備這樣的特點:待處理的數據集可以分解成許多小的數據集,而且每一個小數據集都可以完全并行地進行處理。
MapReduce框架中的名詞解釋:
========================================================================
(*)split:
分片是指MapReduce框架將數據源根據一定的規則將源數據分成若干個小數據的過程;其中,一個小數據集,也被稱為一個分片。
(*)Map:
Map有兩層含義:
其一、是指MapReduce框架中的Map過程,即將一個分片根據用戶定義的Map邏輯處理后,經由MapReduce框架處理,形成輸出結果,供后續Reduce過程使用;
其二,是指用戶定義Java程序實現Mapper類的map接口的用戶自定義邏輯,此時通常被稱為mapper。
(*)Reduce:
Reduce也有兩層含義:
其一,是指MapReduce框架中的Reduce過程,即將Map的結果作為輸入,根據用戶定義的Reduce邏輯,將結果處理并匯總,輸出最后的結果;
其二,是指用戶定義Java程序實現Reducer類的reduce接口的用戶自定義邏輯,此時通常被稱為reducer。
(*)Combine:
Combine是一個可由用戶自定的過程,類似于Map和Reduce,MapReduce框架會在Map和Reduce過程中間調用Combine邏輯(會在下面章節中仔細講解),通常Combine和reduce的用戶代碼是一樣的(也可被稱為本地的reduce過程),但是請注意并不是所有用MapReduce框架實現的算法都適合增加Combine過程(比如求平均值)。
(*)Partition:
在MapReduce框架中一個split對應一個map,一個partiton對應一個reduce(無partition指定時,由用戶配置項指定,默認為1個)。 reduce的個數決定了輸出文件的個數。比如,在需求中,數據是從對每個省匯總而成,要求計算結果按照省來存放,則需要根據源數據中的表明省的字段分區,用戶自定義partition類,進行分區。
==========================================================================
1、Hadoop大數據迅速掌握高級應用系列套餐
2、Spark 2系列課程視頻套餐??
3、大數據消息(Kafka)與實時處理(Storm)系統系列套餐????
==========================================================================
一、課程概述
??????
1、MapReduce課程概述
二、MapReduce編程基礎
?????
2、案例分析:WordCount數據處理的過程
?????
3、開發自己的WordCount程序
??? ?
4、案例分析:求每個部門的工資總額
??? ?
5、開發MapReduce程序實現求部門的工資總額
三、MapReduce的特性一:序列化
??? ?
6、Hadoop的序列化機制
??? ?
7、在MapReduce程序中使用序列化
四、MapReduce的特性二:排序
??? ?
8、數字的排序
??? ?
9、字符串的排序
??? ?
10、對象的排序
五、MapReduce的特性三:分區和合并
??? ?
11、什么是分區
??? ?
12、分區案例:根據部門號建立分區
??? ?
13、什么是Combiner
六、MapReduce的核心:Shuffle
?????
14、 什么是Shuffle(洗牌)?
七、MapReduce編程案例
??? ?
15、編程案例一:數據去重
??? ?
16、知識回顧:關系型數據庫中的多表查詢
??? ?
17、編程案例二:分析等值連接的數據處理流程
??? ?
18、編程案例二:實現等值連接的數據處理流程
??? ?
19、編程案例三:分析自連接的數據處理流程
????
20、編程案例三:實現自連接的數據處理流程
??? ?
21、案例四:分析倒排索引的數據處理過程
??? ?
22、案例四:編程實現倒排索引
??? ?
23、案例五:使用MRUnit進行單元測試
-