詳解: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
- 微服務生態元件之Spring Cloud OpenFeign詳解和原始碼分析微服務元件SpringCloud原始碼
- 微服務生態元件之Spring Cloud LoadBalancer詳解和原始碼分析微服務元件SpringCloud原始碼
- Hadoop 學習系列(三)之 YARN 詳細解析HadoopYarn
- Hadoop框架:Yarn基本結構和執行原理Hadoop框架Yarn
- Hadoop Yarn框架詳細解析HadoopYarn框架
- Hadoop 基礎之生態圈Hadoop
- Hadoop 入門筆記—核心元件 YARNHadoop筆記元件Yarn
- 第一章:Hadoop生態系統及執行MapReduce任務介紹!Hadoop
- Linux下安裝Hadoop 詳解及WordCount執行LinuxHadoop
- MySQL執行緒狀態詳解MySql執行緒
- iOS多執行緒詳解:概念篇iOS執行緒
- Yarn執行原理Yarn
- Hadoop演進與Hadoop生態Hadoop
- 180628-動態任務執行框架想法篇框架
- iOS多執行緒詳解:實踐篇iOS執行緒
- 大資料入門:Hadoop Yarn元件基礎解析大資料HadoopYarn元件
- Elastic 使用Heartbeat監測服務執行狀態AST
- React 元件生命週期詳解React元件
- React元件生命週期詳解React元件
- Android四大元件之服務————服務的生命週期和啟動方式Android元件
- Java—執行緒的生命週期及執行緒控制方法詳解Java執行緒
- hadoop實戰2-更改指定hostname啟動hadoop,jps介紹,yarn部署,yarn上執行程式HadoopYarn行程
- Java同步之執行緒池詳解Java執行緒
- Java多執行緒之synchronized詳解Java執行緒synchronized
- hadoop_MapReduce yarnHadoopYarn
- HADOOP-YARN-JDKHadoopYarnJDK
- Hadoop YARN 架構HadoopYarn架構
- Hadoop2之NameNode HA詳解Hadoop
- 萬字長文詳解HiveSQL執行計劃HiveSQL
- 執行緒與執行緒池的那些事之執行緒池篇(萬字長文)執行緒
- SMB服務詳解
- Rsync服務詳解
- Keepalived服務詳解
- kubernetes執行應用2之DaemonSet詳解
- 死磕Spring之AOP篇 - Spring 事務詳解Spring
- flink1.14.0在yarn上執行報錯--HADOOP_CLASSPATH environment--問題YarnHadoop