1. 程式人生 > >hadoop之HDFS、yarn、MapReduce執行原理分析

hadoop之HDFS、yarn、MapReduce執行原理分析

1、HDFS分散式儲存

        namenode:統一管理檔案的元資料資訊

                   fsImage:儲存了檔案的基本資訊,如檔案路徑,檔案副本集個數,檔案塊的資訊,檔案所在的主機資訊。

                    editslog:存了客戶端對hdfs中各種寫操作的日誌(指令);

        secondaryNamenode:協助namenode完成fsimage和editlog的合併(定期合併)。

                                            合併週期:1、每隔1小時合併一次 2、當editlog檔案大小超過64M,立刻合併

        datanode:負責儲存真實的資料。

                     block:儲存資料的基本單位,預設128M。

        

2、yarn框架

    

yarn的工作流程

當用戶向YARN中提交一個應用程式後,YARN將分兩個階段執行該應用程式:

第一個階段是啟動ApplicationMaster

第二個階段是由ApplicationMaster建立應用程式,為它申請資源,並監控它的整個執行過程,直到執行完成。

具體流程如下:

步驟1 使用者向YARN中提交應用程式,其中包括ApplicationMaster程式、啟動ApplicationMaster的命令、使用者程式等。

步驟2ResourceManager為該應用程式分配第一個Container,並與對應的Node-Manager通訊,要求它在這個Container中啟動應用程式的ApplicationMaster

步驟3ApplicationMaster首先向ResourceManager註冊,這樣使用者可以直接通過ResourceManager檢視應用程式的執行狀態,然後它將為各個任務申請資源,並監控它的執行狀態,直到執行結束,即重複步驟4~7

步驟4ApplicationMaster採用輪詢的方式通過RPC協議向ResourceManager申請和領取資源。

步驟5 一旦ApplicationMaster

申請到資源後,便與對應的NodeManager通訊,要求它啟動任務。

步驟6NodeManager為任務設定好執行環境(包括環境變數、JAR包、二進位制程式等)後,將任務啟動命令寫到一個指令碼中,並通過執行該指令碼啟動任務。

步驟7 各個任務通過某個RPC協議向ApplicationMaster彙報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的執行狀態,從而可以在任務失敗時重新啟動任務。

     在應用程式執行過程中,使用者可隨時通過RPCApplicationMaster查詢應用程式的當前執行狀態。

步驟8 應用程式執行完成後,ApplicationMasterResourceManager登出並關閉自己。

3、mapreduce中wordcount原理圖

把一堆雜亂無章的資料按照某種特徵歸納起來,然後處理並得到最後的結果Map面對的是雜亂無章的互不相關的資料,它解析每個資料,從中提取出key和value,也就是提取了資料的特徵。經過MapReduce的Shuffle階段之後,在Reduce階段看到的都是已經歸納好的資料了,在此基礎上我們可以做進一步的處理以便得到結果


mapreduce開發主要是開發map、reduce函式。