在之前的Hadoop是什么中已經(jīng)說(shuō)過(guò)MapReduce采用了分而治之的思想,MapReduce主要分為兩部分,一部分是Map——分,一部分是Reduce——合
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、集美網(wǎng)絡(luò)推廣、小程序開發(fā)、集美網(wǎng)絡(luò)營(yíng)銷、集美企業(yè)策劃、集美品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供集美建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
MapReduce全過(guò)程的數(shù)據(jù)都是以鍵值對(duì)的形式存在的
如果你想了解大數(shù)據(jù)的學(xué)習(xí)路線,想學(xué)習(xí)大數(shù)據(jù)知識(shí)以及需要免費(fèi)的學(xué)習(xí)資料可以加群:784789432.歡迎你的加入。每天下午三點(diǎn)開直播分享基礎(chǔ)知識(shí),晚上20:00都會(huì)開直播給大家分享大數(shù)據(jù)項(xiàng)目實(shí)戰(zhàn)。
首先,我們假設(shè)我們有一個(gè)文件,文件中存了以下內(nèi)容
hive spark hive hbase
hadoop hive spark
sqoop flume scala
這里涉及到一個(gè)偏移量(一個(gè)字符或空格為1位)
第一行的偏移量為0,內(nèi)容為“hive spark hive hbase”
第二行的偏移量為21,內(nèi)容為“hadoop hive spark”
第三行的偏移量為39,內(nèi)容為“sqoop flume scala”
Map
輸入
MapReduce處理的數(shù)據(jù)是從HDFS中讀出來(lái)的
以偏移量為key,內(nèi)容value,則存在:
(0,“hive spark hive hbase”)
(21,“hadoop hive spark”)
(39,“sqoop flume scala”)
輸出
將輸入的value中的詞以空格為分割逐個(gè)取出來(lái)做key,1做value存起來(lái)
(hive,1)
(spark,1)
(hive,1)
(hbase,1)
(hadoop,1)
注意:有多少行,Map就要循環(huán)做幾次
shuffle(之后會(huì)詳細(xì)說(shuō),這里簡(jiǎn)單解釋)
輸入
map的輸出
輸出
相同的key的value進(jìn)行合并
這里合并不是進(jìn)行累加或別的運(yùn)算,而是合并到一個(gè)集合中
(hive,[1,1,1])
(spark,[1,1])
(hbase,[1])
(hadoop,[1])
。。。。。。
reduce
輸入
shuffle的輸出
輸出
根據(jù)業(yè)務(wù)將value進(jìn)行合并
例如當(dāng)前的業(yè)務(wù)就會(huì)將value進(jìn)行累加
MapReduce處理數(shù)據(jù)五步走
整個(gè)MapReduce程序,所有數(shù)據(jù)以(key,value)形式流動(dòng)
第一步:input
正常情況下不需要寫代碼
僅僅在MapReduce程序運(yùn)行的時(shí)候指定一個(gè)路徑即可
第二步:map(核心)
map(key,value,output,context)
key:每行數(shù)據(jù)的偏移量——基本沒(méi)用
value:每行數(shù)據(jù)的內(nèi)容——真正需要處理的內(nèi)容
第三步:shuffle
不需要寫代碼
第四步:reduce(核心)
reduce(key,value,output,context)
key:業(yè)務(wù)需求中的key
value:要聚合的值
第五步:output
正常情況下不需要寫代碼
僅僅在MapReduce程序運(yùn)行的時(shí)候指定一個(gè)路徑即可
工作原理
這里寫圖片描述