前言
前面咱們說了Yarn 是一個資源調度平臺,負責爲運算程序提供服務器計算資源,方便咱們編寫的 Spark、flink、MapReduce 這些應用在它上面運行。若是還不知道它是什麼的,請移步《Apache Hadoop YARN 的架構與運行流程》。node
那麼咱們有木有辦法看到 Yarn機器有多少資源呢?內存呀,CPU呀什麼的。 咱們提交到 Yarn的這些應用,它們的運行狀態是什麼樣子的,佔用了多少資源,到底哪些機器在爲他們跑任務呢?centos
答案是確定的,不止命令行,還有可視化的 UI 頁面。下面咱們就來看看到底長什麼樣子,都有什麼。服務器
集羣信息
about 菜單裏面能夠看到 Yarn 的 ResourceManager 的狀態,是不是HA,它的版本和Hadoop 的版本信息。session
主頁
記得以前本身在搭建 Hadoop 集羣的時候,把 Yarn 這個頁面整出來的時候不知道有多興奮,其實就長這樣子。架構
集羣監控信息
第一塊區域,是整個集羣的監控信息:app
- Apps Submitted:已提交的應用,咱們這裏是71萬多
- Apps Completed:已完成的應用
- Apps Running:正在運行的應用
- Containers Running:正在運行的容器
- Memory Total:集羣總內存
- Memory Used:已使用內存
- VCores Total:集羣 CPU 總核數
- VCores Used:已使用的 CPU 核數
- Memory Reserved:預留的內存
- VCores Reserved:預留的 CPU 核數
說明:框架
- Containers Running:正在運行的容器,爲何會有這個說法,是由於 Yarn 在運行任務以前,會先建立一個容器來跑。具體的原理,請看上面連接的文章。
- VCores Reserved 和 Memory Reserved: 爲何會存在預留的狀況?是由於 Yarn 爲了防止在分配一個容器到 NodeManager 的時候,,NodeManager當前還不能知足,那麼 如今 NodeManager 已經有的資源將被凍結,以達到 容器須要的標準,而後分給那個容器。關於這個問答能夠看這篇文章What is Memory reserved on Yarn
集羣節點信息
第二塊區域是 Yarn 的集羣節點的狀況,從 Active Nodes 下面的數字點擊進去,能夠看到具體的節點列表信息。裏面包含了所在機架、運行狀態、節點地址、最後健康上報上報時間、運行的容器個數、使用內存CPU 等信息,還有版本號。以下圖。運維
應用列表信息
第三塊內容是在 Yarn 上的任務執行狀況列表:oop
包括如下內容:ui
- 第一塊,能夠根據任務的不一樣狀態去篩選,上圖是篩選正在運行的任務。一搬來講,咱們就看正在運行(RUNNING)的,和已經運行完成的(FINISHED)。若是你發現沒你的任務了,那麼可能在已接受( ACCEPTED)尚未運行的狀態中,若是還找不到不到,那麼恭喜你,可能有問題,跑失敗了在失敗(FAILED)裏面,這時候,你就可點擊任務ID,去詳情頁裏面,找到日誌入口去查看日誌了,找問題了。
- 第二塊,是任務的ID,這沒什麼好說的,你能夠細心的看一下他的生成規則。
- 第三塊,是任務的名字,能夠看到圖中有按類名的,他是咱們本身提交的spark 任務的主類名。另一類是 hive on spark ,這類的名稱實際上是跑的 hive 的腳本,知識咱們 hive 的執行引擎是 spark。還有一類是 MapReduce 任務,這裏的 MapReduce 任務,可不是咱們真正用 MapReduce 去寫的代碼哈,只是咱們有用 sqoop 進行數據的抽取。它底層是 MapReduce 。還有一類是 Flink 任務,會顯示 Flink session cluster,只是咱們如今尚未用。
- 第四塊是應用的類型和所在隊列,常見的類型有 spark 、mapreduce和Apache Flink 。所在隊列,你們能夠回想一下在說 yarn 的架構的時候,咱們提交到 yarn 的任務,他會放到隊列裏面去,這個隊列有默認的,有能夠本身在提交時經過 --queue 進行指定的。若是咱們沒有制定,那麼它會以你提交任務的時候使用的那個帳戶來進行提交,好比我這裏就是 centos 的用戶,顯示則顯示成 root.users.centos。
- 第五塊,是任務的開始和結束時間。
- 第六塊是任務當前的狀態和最終狀態。
- 第七塊是任務佔用的相關資源。
- 第八塊是任務的應用類型主頁。若是是 spark 任務的話,顯示的是 spark 的 ui 頁面。
應用詳情頁
在任務列表,點擊 app ID 會來到這個應用的詳情頁:
查看應用日誌
從應用詳情頁 ApplicationMaster 中,點擊 最右邊 log ,能夠進入到應用的日誌頁面,日誌記錄了兩部分,一部分是你的應用運行框架打印的日誌,好比spark ,另一部分是你編寫的代碼中打印的日誌。point 打印的日誌都會記錄。以下圖:
進入到應用框架的監控UI頁面
在詳情頁中,能夠點擊 Tracking URL 中提供 ApplicationMaster 連接,或者在在應用列表也中也能夠,進入到 任務的運行框架UI頁面,下面以spark 爲例:
查看 yarn 的隊列
在主頁還有一個調度(Scheduler)的菜單,裏面能夠看到 yarn 的隊列信息。包含了有哪些隊列、每一個隊列的資源使用狀況、哪些任務運行在這個隊列中等等。
Yarn 的日誌
日常若是咱們發現Yarn 有些問題,那麼咱們能夠去看到 Yarn 的日誌,在 左側菜單 Tools->Local logs 裏面咱們能夠看到 Yarn 的日誌信息:
Yarn 的服務監控
在CDH 中實際上是對Yarn 有資源監控的,若是你沒有使用CDH 這些,只有本身搭建的 Yarn 集羣,那麼 Yarn 也提供了監控時間獲取方式,在左側菜單 Tools -> Server metrics 裏面,咱們能夠看到 以下數據,只是是 Json 數據。訪問地址:http://journalnode1:8088/jmx?qry=Hadoop:*
拿到這個數據,你也能夠寫一個頁面來可視化的展現它,給你們看一下 CDH 對於Yarn 的部分監控:
最後
在 Tools 菜單欄中還有 Yarn 的配置信息和 服務當前的堆棧信息,有興趣的去研究一下。
以上,是Yarn 的UI 界面的介紹,後面給你們帶來日常咱們使用 Yarn 的運維命令和它提供的 RestAPI。