詳解:Hadoop生態元件Yarn之長期執行服務支援篇!
眾所周知,Yarn是大資料核心排程元件,其使用覆蓋率非常高。在“Hadoop是否已失寵”的選題調研中,不少專家都對Yarn這一核心元件的生命力表達了自己的看法。
阿里雲技術專家封神認為,Yarn在離線與線上資料混合方面表現欠佳,但這也是其背景使然,支援Yarn的幾家公司主要做離線系統,對線上系統部署問題關注不夠。當然,目前市場已經存在具備一定競爭關係的產品,比如Mesos,但這兩大排程系統的設計目標並不完全相同,並且Yarn也在朝著Mesos的領域進軍。
百分點集團技術副總裁兼首席架構師劉譯璟認為,Yarn與Hadoop平臺的繫結過於密切,而實際上,我們有很多資源排程管理方法可供選擇,比如Kubernetes等,對各種應用的支援某種程度上比Yarn更完善,無論是外部型別應用,大資料應用還是機器學習應用均可處理。
雖然在大資料應用層面不盡完美,但Yarn在支援長期執行服務方面具有很大優勢,這是Yarn社群耗時一年一直在努力做的事情,本文主要介紹該服務的特點和具體使用方法。
Apache Hadoop 3.1功能——Yarn服務框架!
所謂長期執行服務支援,主要針對長期佔用較多資源的應用,我們將該功能稱之為Yarn服務框架。2017年11月,這一功能被整合到工具箱,總共經歷了108個提交,程式碼更改了33539行。該功能主要包括以下內容:
1、在Yarn上執行的核心框架(ApplicationMaster),作為容器協調工具,負責管理所有服務的生命週期。
2、RESTful API服務,供使用者使用簡單的JSON規範在Yarn上部署和管理服務。
3、由Yarn服務登錄檔支援的Yarn DNS伺服器,可透過其標準DNS在Yarn上查詢服務。
4、高階容器設定計劃,例如每個應用程式的容器大小調整和節點標籤。
5、集裝箱升級和整體服務。
6、Yarn服務框架與一些其他功能:
-
對Docker的支援;
-
基於HBase的本地Yarn時間線服務,用於記錄生命週期事件和指標,併為使用者提供豐富的分析API以獲取、查詢應用程式詳細資訊;
-
Yarn UI2中的Services UI。
Yarn上管理服務的大部分複雜性都是對使用者隱藏的。使用者僅處理JSON規範,並透過CLI或REST API部署和管理在Yarn上執行的服務。以下是在Yarn上部署httpd容器的JSON規範示例。使用者只需透過REST API或使用CLI釋出此JSON規範,系統將自動處理其餘內容——啟動和監視容器或進行應用程式執行所需的所有操作,如容器自動重啟(如果失敗)。例如:
1、啟動服務,請使用提供的JSON執行以下命令
2、獲取應用程式狀態
yarn app -status my-httpd
3、將容器數量設定為3:
yarn app -flex my-httpd -component httpd 3
4、停止服務:
yarn app -stop my-httpd
5、重啟已經停止的服務:
yarn app -start my-httpd
下圖展示了Yarn叢集在支援長期執行服務時涉及的主要元件:
由圖可見,典型的工作流程是:
-
User向Yarn Service REST API釋出描述服務規範的JSON請求,例如容器記憶體大小、CPU核心數、Docker映象ID等。同樣,使用者也可以使用Yarn CLI提交服務並建立請求;
-
RM在接受請求後,啟動ApplicationMaster(即容器編排框架);
-
業務流程框架從RM請求資源(一定要遵守使用者的資源需求),然後分配容器,在NodeManager上啟動容器;
-
NodeManager依次啟動容器程式(使用者程式碼所在的位置)或使用Docker容器執行時啟動Docker容器;
-
業務流程框架監視容器的健康狀況和準備情況,並對容器的故障或錯誤採取行動。它將服務的生命週期事件和指標寫入Yarn時間線服務(由HBase支援),將附加服務元資訊(例如容器IP和主機)寫入由ZooKeeper支援的Yarn服務登錄檔中;
-
Registry DNS伺服器偵聽ZooKeeper中的znode建立或刪除,並建立各種DNS記錄,例如A record和Service Record,以提供DNS查詢;
-
根據JSON規範和YARN配置中提供的資訊,為每個Docker容器提供使用者友好的主機名。然後,客戶端可以使用標準DNS透過容器主機名查詢容器IP。
Yarn已被證明可以很好地支援MapReduce和Spark等批次處理工作負載,此功能還可以將現有的基於容器的服務引入Yarn。使用者可以使用單個叢集來執行批處理作業和支援長時間執行服務,這還可以實現批處理作業和服務之間的資源共享,服務通常在白天執行,而批處理作業通常在夜間執行,這樣的資源共享極大地提高了整體叢集的利用率;支援kerberos安全性,可以與標準的kerberized Hadoop叢集很好地配合;除了docker容器化應用程式外,它還支援標準的tar打包應用程式。
在Hadoop生態系統中存在超過十年,Yarn已經成長為一個較成熟的專案,並在很多企業內部大規模應用。此外,Yarn Container Orchestration Framework利用了Hadoop生態中所有的穩定功能,這讓Yarn成為Hadoop使用者的首要選擇。正如開篇兩位技術專家所言,Yarn並不是最完善的資源排程工具,但它與Hadoop生態繫結甚緊並與其中的元件完美整合,這就是Yarn最大的優勢之一。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2168645/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- hadoop之yarn(優化篇)HadoopYarn優化
- Hadoop生態系統各元件與Yarn的相容性如何?Hadoop元件Yarn
- Hadoop 新 MapReduce 框架 Yarn 詳解Hadoop框架Yarn
- 微服務生態元件之Spring Cloud OpenFeign詳解和原始碼分析微服務元件SpringCloud原始碼
- 微服務生態元件之Spring Cloud LoadBalancer詳解和原始碼分析微服務元件SpringCloud原始碼
- Hadoop下面WordCount執行詳解Hadoop
- hadoop 之Hadoop生態系統Hadoop
- Hadoop 學習系列(三)之 YARN 詳細解析HadoopYarn
- Hadoop框架:Yarn基本結構和執行原理Hadoop框架Yarn
- Hadoop Yarn框架詳細解析HadoopYarn框架
- 第一章:Hadoop生態系統及執行MapReduce任務介紹!Hadoop
- Hadoop 基礎之生態圈Hadoop
- Yarn詳解Yarn
- MySQL執行緒狀態詳解MySql執行緒
- Hadoop 入門筆記—核心元件 YARNHadoop筆記元件Yarn
- Yarn執行原理Yarn
- Hadoop2原始碼分析-YARN 的服務庫和事件庫Hadoop原始碼Yarn事件
- iOS多執行緒詳解:概念篇iOS執行緒
- Elastic 使用Heartbeat監測服務執行狀態AST
- java執行緒棧狀態詳解Java執行緒
- Hadoop學習之YARN及MapReduceHadoopYarn
- Android四大元件之服務————服務的生命週期和啟動方式Android元件
- Hadoop YarnHadoopYarn
- React 元件生命週期詳解React元件
- React元件生命週期詳解React元件
- javascript執行機制之執行順序詳解JavaScript
- iOS多執行緒詳解:實踐篇iOS執行緒
- Java—執行緒的生命週期及執行緒控制方法詳解Java執行緒
- Rsync服務詳解
- SMB服務詳解
- Windows服務詳解Windows
- MySQL執行狀態show status中文詳解MySql
- Linux下安裝Hadoop 詳解及WordCount執行LinuxHadoop
- Java多執行緒之synchronized詳解Java執行緒synchronized
- Java同步之執行緒池詳解Java執行緒
- iOS多執行緒之GCD詳解iOS執行緒GC
- 【轉】javascript執行機制之this詳解JavaScript
- 低程式碼開發平臺解決方案之“金融服務行業”篇行業