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