Hadoop YARN學習筆記

一.Hadoop概述

Hadoop處理的問題和關(guān)系型數(shù)據(jù)庫的對比:


一個MapReduce作業(yè)包含了輸入數(shù)據(jù),MapReduce程序和配置信息,由map任務和reduce任務兩類任務構(gòu)成。Hadoop為每個分片(split,默認128MB)創(chuàng)建一個map任務,來處理分片中的每條記錄。Hadoop優(yōu)先在有HDFS數(shù)據(jù)的節(jié)點上運行map任務,可以節(jié)省寬帶,獲得最佳性能,其次在同一機架上的節(jié)點運行。


clipboard.png

注意:map任務的輸出結(jié)果是保存到本地磁盤,而不是HDFS,當作業(yè)完成后,map的輸出結(jié)果即可刪除.


clipboard.png

二、YARN

YARN在在Hadoop框架中的位置


rwerawtr.png

YARN的核心服務有資源管理器(Resource Manager)和節(jié)點管理器(Node Manager)構(gòu)成


sdfsgsg.png
步驟說明:

1.用 戶 向 YARN 中 提 交 應 用 程 序( Application Master 程 序、 啟 動Application Master 的命令、用戶程序等);
2.ResourceManager 為該應用程序分配第一個 Container,并與對應的 NodeManager 通信,要求它在這個 Container 中啟動應用程序的 ApplicationMaster;
3.ApplicationMaster 首 先 向 ResourceManager 注 冊, 這 樣 用 戶 可 以 直 接 通 過ResourceManager 查看應用程序的運行狀態(tài),然后它將為各個任務申請資源,并監(jiān)控它的運行狀態(tài),直到運行結(jié)束,即重復步驟 4~7;
4.ApplicationMaster 采用輪詢的方式通過 RPC 協(xié)議向ResourceManager 申請和領取資源;
5.一旦 ApplicationMaster 申請到資源后,便與對應的 NodeManager 通信,要求它啟動任務;
6.NodeManager 為任務設置好運行環(huán)境(包括環(huán)境變量、JAR 包、二進制程序等)后,將任務啟動命令寫到一個腳本中,并通過運行該腳本啟動任務;
7.各個任務通過某個 RPC 協(xié)議向 ApplicationMaster 匯報自己的狀態(tài)和進度,以讓 ApplicationMaster 隨時掌握各個任務的運行狀態(tài),從而可以在任務失敗時重新啟動任務;在應用程序運行過程中,用戶可隨時通過 RPC 向 ApplicationMaster 查詢應用程序的當前運行狀態(tài)。
8.應用程序運行完成后,ApplicationMaster 向 ResourceManager 注銷并關(guān)閉自己。


clipboard.png

三、Hadoop RPC

RPC Server主要使用了線程池、事件驅(qū)動和Reactor設計模式等提高并發(fā)處理能力的技術(shù)。

clipboard.png

說明:

1.整個Server只有一個Listener線程,統(tǒng)一負責監(jiān)聽來自客戶端的連接請求,當監(jiān)聽到新的客戶端請求到達后,Server采用輪詢的方式從線程池(Reader Pool)中選擇一個Reader線程進行處理,Reader來接收客戶端連接的RPC請求;
2.考慮到某些函數(shù)調(diào)用返回結(jié)果很大或者網(wǎng)絡速度過慢,可能難以將結(jié)果一次性發(fā)送到客戶端,此時 Handler 將嘗試著將后續(xù)發(fā)送任務交給 Responder 線程。

Hadoop RPC的主要參數(shù):

1.Reader 線程數(shù)目。 默認為1,可通過ipc.server.read.threadpool.size配置;
2.每個 Handler 線程對應的最大 Call 數(shù)目。ipc.server.handler.queue.size配置,默認值是100,如果 Handler 數(shù)目為 10,則整個 Call 隊列(即共享隊列 callQueue)最大長度為:100×10=1000;
3.Handler 線程數(shù)目。的 Handler 數(shù)目分別由參數(shù) yarn.resourcemanager.resource-tracker.client.thread-count 和 dfs.namenode.service.handler.count 指定,默認值分別為 50 和 10,當集群規(guī)模較大時,這兩個參數(shù)值會大大影響系統(tǒng)性能。
4.客戶端最大重試次數(shù)。數(shù)由參數(shù) ipc.client.connect.max.retries 指定,默認值為 10,也就是會連續(xù)嘗試 10 次(每兩次之間相隔 1 秒)。

YARN application用到的3個RPC協(xié)議,ApplicationClientProtocol,ApplicationMasterProtocol和ContainerManagementProtocol


clipboard.png

四、ResourceManager

主要職責:
1.與客戶端交互,處理來自客戶端的請求;
2.啟動和管理ApplicationMaster,并在失敗的時候重啟它;
3.管理NodeManger,接收來自NodeManager的心跳信息,并向NodeManager下達管理命令;
4.資源管理和調(diào)度,接收來自ApplicationMaster的資源請求,并分配資源。
ResourceManager的內(nèi)部架構(gòu):


clipboard.png

五、Hadoop HA基本框架:

Hadoop HA采用共享存儲的HA解決方案,即Active節(jié)點不斷地將信息寫入到共享存儲系統(tǒng),而StandBy節(jié)點不斷地讀取這些信息,從而保持二者的內(nèi)存信息同步。HA的主備切換分為手動模式和自動模式。
1.手動模式框架:


clipboard.png

2.自動模式框架:


clipboard.png
說明:

ZKFailoverCOntroller是基于Zookeeper實現(xiàn)切換控制,ActiveStandbyElector負責與Zookeeper集群交互,通過嘗試獲取全局鎖,以判斷所管理的Master是進入Active還是進入Standby狀態(tài),HealthMonitor負責監(jiān)控各個Master的狀態(tài),以根據(jù)它們狀態(tài)進行切換。Zookeeper是通過維護一把全局鎖控制整個集群有且僅有一個Active Master,避免腦裂。

六、YARN資源調(diào)度

YARN采用了雙層資源調(diào)度模型
第一層:ResourceManager中的資源調(diào)度器將資源分配給各個ApplicationMaster·;
第二層:ApplicationMaster再進一步將資源分配給內(nèi)部的各個task。


clipboard.png

YARN有三種調(diào)度器可用:FIFO調(diào)度器(First IN First Out Scheduler)、容量調(diào)度器(Capacity Scheduler)、公平調(diào)度器(Fair Scheduler)


clipboard.png
clipboard.png
clipboard.png

clipboard.png

七、NodeManager

NodeManager的主要功能是管理Hadoop集群中的單個計算節(jié)點,包括與ResourceManager保持通信、管理COntainer的生命周期、監(jiān)控每個Container的資源使用情況,追蹤節(jié)點健康狀況、管理日志等。


clipboard.png

1.分布式緩存機制
Hadoop 將文件緩存到各個NodeManager節(jié)點的本地磁盤上、當NodeManager收到啟動任務請求后,如果文件已經(jīng)在本地磁盤上,則可以直接運行任務,否則等待文件緩存到本地磁盤后再啟動。NodeManager采用LRU算法定期清理過期的緩存文件。

八、Container的生命周期

Container的三個階段:
1.資源本地化:主要工作是初始化各種服務組件、創(chuàng)建工作目錄、從HDFS下載所需的各種資源(文本文件,JAR、可執(zhí)行文件)等,即主要是前面完成的分布式緩存機制完成的工作。


clipboard.png
clipboard.png

2.Container啟動:即ContainersLauncher服務調(diào)用插拔式組件ContainerExecutor;


clipboard.png

3.資源清理:即階段1的逆過程,由ResourceLocalizationService負責。


clipboard.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、HDFS簡介 1.1Hadoop2介紹 hadoop1是由HDFS和MapReduce組成,hadoop2由H...
    ahzhaojj閱讀 1,168評論 0 0
  • 注:本文是我學習Hadoop權(quán)威指南的時候一些關(guān)鍵點的記錄,并不是全面的知識點 Hadoop 避免數(shù)據(jù)丟失的方法:...
    利伊奧克兒閱讀 805評論 0 2
  • Zookeeper用于集群主備切換。 YARN讓集群具備更好的擴展性。 Spark沒有存儲能力。 Spark的Ma...
    Yobhel閱讀 7,602評論 0 34
  • MapReduce概述 源自于Google的MapReduce論文,發(fā)表于2004年12月 Hadoop MapR...
    陌上疏影涼閱讀 1,083評論 0 14
  • 歲月匆匆,人生短暫,一路走來,幾十多年的風風雨雨中,品味著人間百味,歷經(jīng)了幾多悲歡離合?感受過多少愛恨情愁?那灑滿...
    千年一夢OK閱讀 1,171評論 14 38

友情鏈接更多精彩內(nèi)容