扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)Hadoop生態(tài)組件Yarn之長期運(yùn)行服務(wù)支持
2018-08-02 15:39:13
1123瀏覽
在現(xiàn)如今,隨著互聯(lián)網(wǎng)技術(shù)飛速的發(fā)展和進(jìn)步,目前Yarn已成為
大數(shù)據(jù)Hadoop培訓(xùn)核心調(diào)度組件,其使用覆蓋率非常高。在“Hadoop是否已失寵”的選題調(diào)研中,不少人對(duì)Yarn這一核心組件的生命力表達(dá)了自己的看法。
首先,Yarn在離線與在線數(shù)據(jù)混合方面表現(xiàn)欠佳,但這也是其背景使然,支持Yarn的幾家公司主要做離線系統(tǒng),對(duì)在線系統(tǒng)部署問題關(guān)注不夠。當(dāng)然,目前市場已經(jīng)存在具備一定競爭關(guān)系的產(chǎn)品,比如Mesos,但這兩大調(diào)度系統(tǒng)的設(shè)計(jì)目標(biāo)并不完全相同,并且Yarn也在朝著Mesos的領(lǐng)域進(jìn)軍。
比如Kubernetes等對(duì)各種應(yīng)用的支持某種程度上比Yarn更完善,無論是外部類型應(yīng)用,大數(shù)據(jù)應(yīng)用還是機(jī)器學(xué)習(xí)應(yīng)用均可處理。雖然在大數(shù)據(jù)應(yīng)用層面不盡完美,但Yarn在支持長期運(yùn)行服務(wù)方面具有很大優(yōu)勢(shì),這是Yarn社區(qū)耗時(shí)一年一直在努力做的事情,本文主要介紹該服務(wù)的特點(diǎn)和具體使用方法。
ApacheHadoop3.1功能——Yarn服務(wù)框架!
所謂長期運(yùn)行服務(wù)支持,主要針對(duì)長期占用較多資源的應(yīng)用,我們將該功能稱之為Yarn服務(wù)框架。2017年11月,這一功能被整合到工具箱,總共經(jīng)歷了108個(gè)提交,代碼更改了33539行。該功能主要包括以下內(nèi)容:
1、在Yarn上運(yùn)行的核心框架(ApplicationMaster),作為容器協(xié)調(diào)工具,負(fù)責(zé)管理所有服務(wù)的生命周期。
2、RESTfulAPI服務(wù),供用戶使用簡單的JSON規(guī)范在Yarn上部署和管理服務(wù)。
3、由Yarn服務(wù)注冊(cè)表支持的YarnDNS服務(wù)器,可通過其標(biāo)準(zhǔn)DNS在Yarn上查找服務(wù)。
4、高級(jí)容器設(shè)置計(jì)劃,例如每個(gè)應(yīng)用程序的容器大小調(diào)整和節(jié)點(diǎn)標(biāo)簽。
5、集裝箱升級(jí)和整體服務(wù)。
6、Yarn服務(wù)框架與一些其他功能:
對(duì)Docker的支持;
基于HBase的本地Yarn時(shí)間線服務(wù),用于記錄生命周期事件和指標(biāo),并為用戶提供豐富的分析API以獲取、查詢應(yīng)用程序詳細(xì)信息;
YarnUI2中的ServicesUI。
Yarn上管理服務(wù)的大部分復(fù)雜性都是對(duì)用戶隱藏的。用戶僅處理JSON規(guī)范,并通過CLI或RESTAPI部署和管理在Yarn上運(yùn)行的服務(wù)。以下是在Yarn上部署httpd容器的JSON規(guī)范示例。用戶只需通過RESTAPI或使用CLI發(fā)布此JSON規(guī)范,系統(tǒng)將自動(dòng)處理其余內(nèi)容——啟動(dòng)和監(jiān)視容器或進(jìn)行應(yīng)用程序運(yùn)行所需的所有操作,如容器自動(dòng)重啟(如果失敗)。例如:
1、啟動(dòng)服務(wù),請(qǐng)使用提供的JSON運(yùn)行以下命令
2、獲取應(yīng)用程序狀態(tài)
yarnapp-statusmy-httpd
3、將容器數(shù)量設(shè)置為3:
yarnapp-flexmy-httpd-componenthttpd3
4、停止服務(wù):
yarnapp-stopmy-httpd
5、重啟已經(jīng)停止的服務(wù):
yarnapp-startmy-httpd
User向YarnServiceRESTAPI發(fā)布描述服務(wù)規(guī)范的JSON請(qǐng)求,例如容器內(nèi)存大小、CPU核心數(shù)、Docker鏡像ID等。同樣,用戶也可以使用YarnCLI提交服務(wù)并創(chuàng)建請(qǐng)求;
RM在接受請(qǐng)求后,啟動(dòng)ApplicationMaster(即容器編排框架);
業(yè)務(wù)流程框架從RM請(qǐng)求資源(一定要遵守用戶的資源需求),然后分配容器,在NodeManager上啟動(dòng)容器;
NodeManager依次啟動(dòng)容器進(jìn)程(用戶代碼所在的位置)或使用Docker容器運(yùn)行時(shí)啟動(dòng)Docker容器;
業(yè)務(wù)流程框架監(jiān)視容器的健康狀況和準(zhǔn)備情況,并對(duì)容器的故障或錯(cuò)誤采取行動(dòng)。它將服務(wù)的生命周期事件和指標(biāo)寫入Yarn時(shí)間線服務(wù)(由HBase支持),將附加服務(wù)元信息(例如容器IP和主機(jī))寫入由ZooKeeper支持的Yarn服務(wù)注冊(cè)表中;
RegistryDNS服務(wù)器偵聽ZooKeeper中的znode創(chuàng)建或刪除,并創(chuàng)建各種DNS記錄,例如Arecord和ServiceRecord,以提供DNS查詢;
根據(jù)JSON規(guī)范和YARN配置中提供的信息,為每個(gè)Docker容器提供用戶友好的主機(jī)名。然后,客戶端可以使用標(biāo)準(zhǔn)DNS通過容器主機(jī)名查找容器IP。
Yarn已被證明可以很好地支持MapReduce和Spark等批量處理工作負(fù)載,此功能還可以將現(xiàn)有的基于容器的服務(wù)引入Yarn。用戶可以使用單個(gè)集群來運(yùn)行批處理作業(yè)和支持長時(shí)間運(yùn)行服務(wù),這還可以實(shí)現(xiàn)批處理作業(yè)和服務(wù)之間的資源共享,服務(wù)通常在白天運(yùn)行,而批處理作業(yè)通常在夜間運(yùn)行,這樣的資源共享極大地提高了整體集群的利用率;支持kerberos安全性,可以與標(biāo)準(zhǔn)的kerberizedHadoop集群很好地配合;除了docker容器化應(yīng)用程序外,它還支持標(biāo)準(zhǔn)的tar打包應(yīng)用程序。
在Hadoop生態(tài)系統(tǒng)中存在超過十年,Yarn已經(jīng)成長為一個(gè)較成熟的項(xiàng)目,并在很多企業(yè)內(nèi)部大規(guī)模應(yīng)用。此外,YarnContainerOrchestrationFramework利用了Hadoop生態(tài)中所有的穩(wěn)定功能,這讓Yarn成為Hadoop使用者的首要選擇。正如開篇兩位技術(shù)專家所言,Yarn并不是最完善的資源調(diào)度工具,但它與Hadoop生態(tài)綁定甚緊并與其中的組件完美整合,這就是Yarn最大的優(yōu)勢(shì)之一。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
大數(shù)據(jù)培訓(xùn)
大數(shù)據(jù)視頻教程
大數(shù)據(jù)分析培訓(xùn)
大數(shù)據(jù)學(xué)習(xí)視頻
Hadoop生態(tài)圈