MapReduce的构思和框架结构
MapReduce 設計構思和框架結構
MapReduce是一個分布式運算程序的編程框架,核心功能是將用戶編寫的業務邏輯代碼和自帶默認組件整合成一個完整的分布式運算程序,并發運行在Hadoop集群上。
既然是做計算的框架,那么表現形式就是有個輸入(input),MapReduce操作這個輸入(input),通過本身定義好的計算模型,得到一個輸出(output)。
Hadoop MapReduce構思:
分而治之
對相互間不具有計算依賴關系的大數據,實現并行最自然的辦法就是采取分而治之的策略。并行計算的第一個重要問題是如何劃分計算任務或者計算數據以便對劃分的子任務或數據塊同時進行計算。不可分拆的計算任務或相互間有依賴關系的數據無法進行并行計算!
統一構架,隱藏系統層細節
如何提供統一的計算框架,如果沒有統一封裝底層細節,那么程序員則需要考慮諸如數據存儲、劃分、分發、結果收集、錯誤恢復等諸多細節;為此,MapReduce設計并提供了統一的計算框架,為程序員隱藏了絕大多數系統層面的處理細節。
MapReduce最大的亮點在于通過抽象模型和計算框架把需要做什么(whatneed to do)與具體怎么做(how to do)分開了,為程序員提供一個抽象和高層的編程接口和框架。程序員僅需要關心其應用層的具體計算問題,僅需編寫少量的處理應用本身計算問題的程序代碼。如何具體完成這個并行計算任務所相關的諸多系統層細節被隱藏起來,交給計算框架去處理:從分布代碼的執行,到大到數千小到單個節點集群的自動調度使用。
構建抽象模型:Map和Reduce
MapReduce借鑒了函數式語言中的思想,用Map和Reduce兩個函數提供了高層的并行編程抽象模型
Map: 對一組數據元素進行某種重復式的處理;
Reduce: 對Map的中間結果進行某種進一步的結果整理。
Map和Reduce為程序員提供了一個清晰的操作接口抽象描述。MapReduce處理的數據類型是鍵值對。
MapReduce中定義了如下的Map和Reduce兩個抽象的編程接口,由用戶去編程實現:
Map: (k1; v1) → [(k2; v2)]
Reduce: (k2; [v2]) → [(k3; v3)]
MapReduce 框架結構
一個完整的mapreduce程序在分布式運行時有三類實例進程:
1. MRAppMaster 負責整個程序的過程調度及狀態協調
2. MapTask 負責map階段的整個數據處理流程
3. ReduceTask 負責reduce階段的整個數據處理流程
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的MapReduce的构思和框架结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS的API操作-小文件的合并
- 下一篇: MapReduce的编程规范