1、MapReduce的定義:node
MapReduce是面向大數據並行處理的計算模型、框架和平臺。app
它的主要思想是:map(映射)和reduce(歸約)負載均衡
一、MapReduce是一個基於集羣的高性能並行計算平臺框架
二、MapReduce是一個並行計算與運行軟件框架性能
三、MapReduce是一個並行程序設計模型與方法學習
2、MapReduce的主要功能:大數據
一、數據劃分和計算任務調度優化
二、數據/代碼互定位設計
三、系統優化隊列
四、出錯檢測和恢復
3、計算任務調度中job的提交流程
遇到的問題:
在學到這的時候,咱們會面臨一些問題:
一、首先面臨的問題就是數據是如何分佈的?
二、一個超大文件按照那種方式切割下來,分別丟到不一樣的機器上?
三、按照某種方式切割下來後,是如何丟到不一樣機器上去的?
四、某個機器分配到什麼任務?如何分配的?
五、拿到任務後如何解決的?
六、帶着這些問題,咱們就須要學習一下job的提交流程,從該流程中去尋找咱們問題的答案。
Job的具體提交流程以下圖所示:
咱們用文字歸納以下:
一、 客戶端提交job到resourcemanager(rm)
二、 rm將其放到等待隊列,返回jobid和文件路徑信息
三、 客戶端將所須要計算的資源,上傳到hdfs上(包括job信息和分片信息)的存儲路徑
四、 客戶端給rm返回一個資源準備好的信息,job放入等待隊列,告訴他能夠啓動job,等待rm進行調度
五、 rm在調度以前,申請一個資源nodemanager(nm),nm啓動container,它接收到任務到hdfs上將資源獲取到container,而後跟客戶端交互已經獲得須要計算的資源,客戶端向其發送啓動applicationmaster(am)的命令
六、 am啓動起來後,經過解析分片信息向rm申請運算資源(maptask)
七、 rm收到信息查看nm資源狀況,經過負載均衡分配所須要的機器,nm每一次心跳都會從job的描述信息查詢本身所分配到的任務,接收到任務消息的機器會從hdfs上拿取計算資源,而後跟am交互,am發送啓動maptask的命令。
八、 Maptask結束後,通知am,而後釋放maptask資源,am向rm發出信息,申請reducetask的資源
九、 rm分配資源,am啓動reducetask
十、 reducetask收集maptask完成的數據,啓動reduce邏輯。執行完成後,通知am,而後釋放reducetask的資源。am通知rm。am釋放資源。