MapReduce架构设计
MapReduce采用Master/Slave的架構(gòu),其架構(gòu)圖如下:
它主要有以下4個部分組成:
1)Client
2)JobTracker
JobTracke負責資源監(jiān)控和作業(yè)調(diào)度。JobTracker 監(jiān)控所有TaskTracker 與job的健康狀況,一旦發(fā)現(xiàn)失敗,就將相應(yīng)的任務(wù)轉(zhuǎn)移到其他節(jié)點;同時,JobTracker 會跟蹤任務(wù)的執(zhí)行進度、資源使用量等信息,并將這些信息告訴任務(wù)調(diào)度器,而調(diào)度器會在資源出現(xiàn)空閑時,選擇合適的任務(wù)使用這些資源。在Hadoop 中,任務(wù)調(diào)度器是一個可插拔的模塊,用戶可以根據(jù)自己的需要設(shè)計相應(yīng)的調(diào)度器。
3)TaskTracker
TaskTracker 會周期性地通過Heartbeat 將本節(jié)點上資源的使用情況和任務(wù)的運行進度匯報給JobTracker,同時接收JobTracker 發(fā)送過來的命令并執(zhí)行相應(yīng)的操作(如啟動新任務(wù)、殺死任務(wù)等)。TaskTracker 使用“slot”等量劃分本節(jié)點上的資源量。“slot”代表計算資源(CPU、內(nèi)存等)。一個Task 獲取到一個slot 后才有機會運行,而Hadoop 調(diào)度器的作用就是將各個TaskTracker 上的空閑slot 分配給Task 使用。slot 分為Map slot 和Reduce slot 兩種,分別供MapTask 和Reduce Task 使用。TaskTracker 通過slot 數(shù)目(可配置參數(shù))限定Task 的并發(fā)度。
4)Task
Task 分為Map Task 和Reduce Task 兩種,均由TaskTracker 啟動。HDFS 以固定大小的block 為基本單位存儲數(shù)據(jù),而對于MapReduce 而言,其處理單位是split。split 是一個邏輯概念,它只包含一些元數(shù)據(jù)信息,比如數(shù)據(jù)起始位置、數(shù)據(jù)長度、數(shù)據(jù)所在節(jié)點等。它的劃分方法完全由用戶自己決定。但需要注意的是,split 的多少決定了Map Task 的數(shù)目,因為每個split 只會交給一個Map Task 處理。Split 和 Block的關(guān)系如下圖所示:
Map Task 執(zhí)行過程如下圖 所示。由該圖可知,Map Task 先將對應(yīng)的split 迭代解析成一個個key/value 對,依次調(diào)用用戶自定義的map() 函數(shù)進行處理,最終將臨時結(jié)果存放到本地磁盤上,其中臨時數(shù)據(jù)被分成若干個partition,每個partition 將被一個Reduce Task 處理。
Reduce Task 執(zhí)行過程下圖所示。該過程分為三個階段:
①從遠程節(jié)點上讀取MapTask 中間結(jié)果(稱為“Shuffle 階段”);
②按照key 對key/value 對進行排序(稱為“Sort 階段”);
③依次讀取<key, value list>,調(diào)用用戶自定義的reduce() 函數(shù)處理,并將最終結(jié)果存到HDFS 上(稱為“Reduce 階段”)。
轉(zhuǎn)載地址:http://www.open-open.com/lib/view/open1370958898835.html
總結(jié)
以上是生活随笔為你收集整理的MapReduce架构设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 检测各种医用骨板抗弯曲性能的重要仪器介绍
- 下一篇: PLSQL_闪回操作2_Fashback
