眾所周知,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最大的優勢之一。
閱讀更多 故事你真的zai聽嗎 的文章