大資料學習筆記(五)
MapReduce的工作流程
作業執行涉及4個獨立的實體
客戶端,用來提交MapReduce作業
JobTracker,用來協調作業的執行
TaskTracker,用來處理作業劃分後的任務
HDFS,用來在其它實體間共享作業檔案
客戶端,用來提交MapReduce作業
JobTracker,用來協調作業的執行
TaskTracker,用來處理作業劃分後的任務
HDFS,用來在其它實體間共享作業檔案
首先,客戶端編寫好MapReduce的程式,提交一個job到JobTracker上,JobTracker構建一個Job,具體就是分配新的一個job的ID值。
然後檢查輸入和輸出檔案是否存在,如果輸出檔案存在,或者輸入檔案不存在,JobTracker就會報錯。輸入檔案存在JobTracker就會計算分片,分片計算不出來也會報錯。都沒問題就給job配置資源。
分配好資源後,JobTracker就會初始化作業,把job放入一個內部的佇列,讓配置好的作業排程器能排程到這個作業,作業排程器會初始化這個job,初始化就是建立一個正在執行的job物件(封裝任務和記錄資訊),以便JobTracker跟蹤job的狀態和程式。
初始化完畢後,作業排程器會獲取輸入分片資訊(input split),每個分片建立一個map任務。
接下來就是任務分配了,這個時候tasktracker會執行一個簡單的迴圈機制定期傳送心跳給jobtracker,心跳間隔是5秒,程式設計師可以配置這個時間,心跳就是jobtracker和tasktracker溝通的橋樑,通過心跳,jobtracker可以監控tasktracker是否存活,也可以獲取tasktracker處理的狀態和問題,同時tasktracker也可以通過心跳裡的返回值獲取jobtracker給它的操作指令。
任務分配好後就是執行任務了。在任務執行時候jobtracker可以通過心跳機制監控tasktracker的狀態和進度,同時也能計算出整個job的狀態和進度,而tasktracker也可以本地監控自己的狀態和進度。當jobtracker獲得了最後一個完成指定任務的tasktracker操作成功的通知時候,jobtracker會把整個job狀態置為成功,然後當客戶端查詢job執行狀態時候(注意:這個是非同步操作),客戶端會查到job完成的通知的。如果job中途失敗,mapreduce也會有相應機制處理,一般而言如果不是程式設計師程式本身有bug,mapreduce錯誤處理機制都能保證提交的job能正常完成。
任務分配好後就是執行任務了。在任務執行時候jobtracker可以通過心跳機制監控tasktracker的狀態和進度,同時也能計算出整個job的狀態和進度,而tasktracker也可以本地監控自己的狀態和進度。當jobtracker獲得了最後一個完成指定任務的tasktracker操作成功的通知時候,jobtracker會把整個job狀態置為成功,然後當客戶端查詢job執行狀態時候(注意:這個是非同步操作),客戶端會查到job完成的通知的。如果job中途失敗,mapreduce也會有相應機制處理,一般而言如果不是程式設計師程式本身有bug,mapreduce錯誤處理機制都能保證提交的job能正常完成。
簡單的工作流程
建立job
job-》 input file output file
job -》 reduce map
job- 》 outputkey value 資料型別
啟動job
建立job
job-》 input file output file
job -》 reduce map
job- 》 outputkey value 資料型別
啟動job
MapReduce執行機制
在Hadoop中,一個MapReduce作業會把輸入的資料集切分為若干獨立的資料塊,由Map任務以完全並行的方式處理
框架會對Map的輸出先進行排序,然後把結果輸入給Reduce任務。
作業的輸入和輸出都會被儲存在檔案系統中,整個框架負責任務的排程和監控,以及重新執行已經關閉的任務
MapReduce框架和分散式檔案系統是執行在一組相同的節點,計算節點和儲存節點都是在一起的
框架會對Map的輸出先進行排序,然後把結果輸入給Reduce任務。
作業的輸入和輸出都會被儲存在檔案系統中,整個框架負責任務的排程和監控,以及重新執行已經關閉的任務
MapReduce框架和分散式檔案系統是執行在一組相同的節點,計算節點和儲存節點都是在一起的
MapReduce作業處理的流程
輸入——》 分片 ——》 map函式整理資料(預設linereader按行讀取)——》 shuffling 排序(預設按key值進行排序) 把map的輸出作為輸入 ,輸入到reduce ——》 reduce 函式整理資料——》 輸出
在編碼過程中,就是對map和reduce函式進行編碼,實現定製。
相關文章
- 大資料之 Hadoop學習筆記大資料Hadoop筆記
- 大資料教程分享Actor學習筆記大資料筆記
- Docker 學習筆記(第五集:資料卷)Docker筆記
- cmake學習筆記(五)筆記
- JVM 學習筆記(五)JVM筆記
- 資料庫學習筆記資料庫筆記
- Kubernetes學習筆記(五):卷筆記
- DP學習筆記(五)(2024.11.16)筆記
- c++學習筆記(五)C++筆記
- 字典--Python學習筆記(五)Python筆記
- C++學習筆記-五大基本概念C++筆記
- PHP 資料加密 (學習筆記)PHP加密筆記
- 1029學習筆記 資料庫筆記資料庫
- 資料結構學習筆記資料結構筆記
- python學習筆記:資料庫Python筆記資料庫
- MySQL資料庫學習筆記MySql資料庫筆記
- 大資料學習筆記500條【第一彈】,記得收藏!大資料筆記
- Jenkinsant介紹(學習筆記五)Jenkins筆記
- Qt學習筆記(五)QString 字串QT筆記字串
- 資料庫mysql學習筆記記錄資料庫MySql筆記
- (五)numpy知識學習2-python資料分析與機器學習實戰(學習筆記)Python機器學習筆記
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- 大資料測試學習筆記之測試工具集大資料筆記
- 資料結構學習筆記1資料結構筆記
- Redis學習筆記(七) 資料庫Redis筆記資料庫
- 資料結構學習筆記--棧資料結構筆記
- 達夢資料庫學習筆記資料庫筆記
- Python 學習筆記——資料型別Python筆記資料型別
- Netty學習筆記(五)NioEventLoop啟動Netty筆記OOP
- TypeScript學習筆記之五類(Class)TypeScript筆記
- springcloud學習筆記(五)Spring Cloud ActuatorSpringGCCloud筆記
- hive學習筆記之五:分桶Hive筆記
- 學習資料科學的五大免費資源資料科學
- 基於python的大資料分析實戰學習筆記-AnacondaPython大資料筆記
- java大資料最全課程學習筆記(5)--MapReduce精通(一)Java大資料筆記
- 好程式設計師大資料學習筆記:Storm架構程式設計師大資料筆記ORM架構
- 大資料學習筆記之Hadoop安裝步驟詳解大資料筆記Hadoop
- Python學習筆記(一) 資料型別Python筆記資料型別