mapreduce笔记
mapreduce是什么
mapreduce是一個計算框架,所以有輸入和輸出。輸入輸出都是key/value形式的。map的key和value一對一,reduce的key是一對多的,所以value是一個迭代器。
是一個軟件框架,可以并行處理,可靠且容錯性高。能處理海量數(shù)據(jù)。
思想“分而治之
map:分,復(fù)雜的任務(wù)分解為簡單的任務(wù)。
reduce:匯總。對map結(jié)果匯總,同一個key對應(yīng)的value匯總到一起?!?/p>
函數(shù)實現(xiàn)流程
分別實現(xiàn)map函數(shù)和reduce函數(shù),以及main‘函數(shù)。
map函數(shù)中,定義輸入key,value,以及context記錄map的計算狀態(tài)
][2]
reduce函數(shù)中,定義輸入key和value,以及context]1
!][2]
main函數(shù)作用:
首先,初始化配置信息,內(nèi)容寫明mapreduce系統(tǒng)的配置信息。
接下來構(gòu)建一個作業(yè)job,寫明job的名稱,job裝載的map,reduce類,以及輸出的key、value類型的類。
最后構(gòu)建輸入的數(shù)據(jù)文件,和輸出的數(shù)據(jù)文件
最后加一個,job開始運行
2行JobClient.runJob(conf);mapreduce框架,原理
mapreduce的實體有四個:
1)客戶端,程序員編寫代碼,配置作業(yè),提交作業(yè)。
2)JobTracker:初始化作業(yè),分配作業(yè),與TaskTracker通信
3)TaskTracker:保持與job的通信,在分配的數(shù)據(jù)片段上執(zhí)行map和reduce任務(wù)
4)HDFS:保存作業(yè)的數(shù)據(jù),配置信息,以及最后輸出數(shù)據(jù)
mapreduce的運行機制
1)輸入分片:將輸入文件計算分片,每個分片對應(yīng)一個map任務(wù)
2)map階段:map就是映射的意思。將一組鍵值對映射成新的鍵值對。
3)reduce函數(shù):歸總函數(shù),同樣的key對應(yīng)的value被歸總到一起
mapreduce和hadoop的關(guān)系,和hive關(guān)系
4)shuffle
處理邏輯大致如下“
1)首先將HDFS中數(shù)據(jù)用split方式分為數(shù)據(jù)片,這個個數(shù)可以自己定義。
2) 分片的數(shù)據(jù)交給mapper函數(shù)。
3) map函數(shù)解析輸入的數(shù)據(jù)變成一個個key,value
4)reduce先做shuffle讀取對應(yīng)的數(shù)據(jù),讀完后sort排序。跑徐后交給reducer做統(tǒng)計。得到一個key累計出現(xiàn)的次數(shù)為value
5)reducer的吹結(jié)果,寫到HDFS的文件路徑下
mapreduce不能解決的問題
1)實時計算:需要實時結(jié)果的不能用mr
2) 流式計算:當(dāng)輸入數(shù)據(jù)是動態(tài)的,不能用mr。mr能解決靜態(tài)數(shù)據(jù)
有向圖的計算。后一個程序輸入是前一個程序輸出的,不能依賴mr。
分布式系統(tǒng)理解
Hadoop是一個開源系統(tǒng)。包括計算模型map/reduce,分布式文件系統(tǒng)HDFS。hadoop要分布需要兩部分:hdfs(分布式文件系統(tǒng)),以及mapreduce(分布式計算框架)))
轉(zhuǎn)載于:https://www.cnblogs.com/lijieqiong/p/6652573.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的mapreduce笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络原理和OSI模型与TCP模型
- 下一篇: 关于单车创新的一两点思考