詳解:Hadoop生態元件Yarn之長期執行服務支援篇!

趙鈺瑩發表於2018-07-30

眾所周知,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叢集在支援長期執行服務時涉及的主要元件:

由圖可見,典型的工作流程是:

  1. User向Yarn Service REST API釋出描述服務規範的JSON請求,例如容器記憶體大小、CPU核心數、Docker映象ID等。同樣,使用者也可以使用Yarn CLI提交服務並建立請求;

  2. RM在接受請求後,啟動ApplicationMaster(即容器編排框架);

  3. 業務流程框架從RM請求資源(一定要遵守使用者的資源需求),然後分配容器,在NodeManager上啟動容器;

  4. NodeManager依次啟動容器程式(使用者程式碼所在的位置)或使用Docker容器執行時啟動Docker容器;

  5. 業務流程框架監視容器的健康狀況和準備情況,並對容器的故障或錯誤採取行動。它將服務的生命週期事件和指標寫入Yarn時間線服務(由HBase支援),將附加服務元資訊(例如容器IP和主機)寫入由ZooKeeper支援的Yarn服務登錄檔中;

  6. Registry DNS伺服器偵聽ZooKeeper中的znode建立或刪除,並建立各種DNS記錄,例如A record和Service Record,以提供DNS查詢;

  7. 根據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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章