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