日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

腾讯云EMR基于YARN针对云原生容器化的优化与实践

發(fā)布時間:2024/2/28 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 腾讯云EMR基于YARN针对云原生容器化的优化与实践 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導(dǎo)語 |?傳統(tǒng)HADOOP生態(tài)系統(tǒng)使用YARN管理/調(diào)度計算資源,該系統(tǒng)?般具有明顯的資源使?周期。實時計算集群資源消耗主要在?天,而數(shù)據(jù)報表型業(yè)務(wù)則安排在離線計算集群中。離在線業(yè)務(wù)分開部署的首要問題就是資源使用率低,消耗成本?。隨著業(yè)務(wù)的增?和突發(fā)的報表計算需求,為了解決為離線集群預(yù)留資源,騰訊云EMR團(tuán)隊和容器團(tuán)隊聯(lián)合推出Hadoop Yarn on Kubernetes Pod,以提?容器資源使用率,降低資源成本,將閑時容器集群CPU使?率提升數(shù)倍之多。本文主要介紹HADOOP資源調(diào)度器YARN在容器環(huán)境中的優(yōu)化與實踐。

一、Hadoop Yarn on Kubernetes Pod 混合部署模式

Hadoop Yarn on Kubernetes Pod 方案提供彈性擴(kuò)縮容和離在線混合部署兩項功能。彈性擴(kuò)縮容主要聚焦于如何利?云原生資源,快速擴(kuò)容資源以補(bǔ)充算力。離在線混合部署模式的目的是為了充分使用在線集群的空閑資源,盡可能減少為離線集群預(yù)留空閑資源的頻次。

EMR彈性擴(kuò)縮容模塊(yarn-autoscaler)提供按負(fù)載和按時間彈性伸縮兩種擴(kuò)縮容方式。對于按負(fù)載伸縮,用戶可以對不同指標(biāo)設(shè)置閾值來觸發(fā)擴(kuò)縮容,比如設(shè)置Yarn隊列中availablevcore、 pending vcore、available mem、pending mem。亦可以使用時間擴(kuò)縮規(guī)則,按天、按周、按月等規(guī)則指定觸發(fā)。

當(dāng)彈性規(guī)則被觸發(fā)后,離在線部署模塊獲取當(dāng)前在線TKE集群中可以提供的閑置算力的規(guī)格及數(shù)量,調(diào)用Kubernetes api創(chuàng)建對應(yīng)數(shù)量的資源,ex-scheduler擴(kuò)展調(diào)度器確保Pod被創(chuàng)建在剩余資源更多的節(jié)點上,該P(yáng)OD負(fù)責(zé)啟動YARN的服務(wù)。

通過該方案,Yarn的NodeManager服務(wù)可以快速部署到POD節(jié)點中。但也Yarn原生調(diào)度沒有考慮異構(gòu)資源,由此引發(fā)了兩個問題:

1. AM的POD被驅(qū)逐,導(dǎo)致APP失敗

在node節(jié)點的資源緊缺的條件下,kubelet為了保證node節(jié)點的穩(wěn)定性,會觸發(fā)主動驅(qū)逐pod的機(jī)制。如果該節(jié)點存在AM服務(wù),則整個Application就要被視為失敗,ResourceManager此時會重新分配AM。對于計算量很大的任務(wù),Application重跑的代價不可承受。

2. Yarn原生非獨占分區(qū)資源共享局限性

Yarn的標(biāo)簽分區(qū)特性?持獨占分區(qū)(Exclusive),非獨占分區(qū)(Non-exclusive)。?

  • 獨占分區(qū)(Exclusive):例如指定獨占分區(qū)x,Yarn的container只會分配到該x分區(qū)。

  • 非獨占分區(qū)(Non-exclusive):例如非獨占分區(qū)x,x分區(qū)的資源可以共享給default分區(qū)。

    只有當(dāng)指定分區(qū)default時,default上運(yùn)?的Application可以使?分區(qū)x的資源。

但是在實際使?場景中,?戶要給各個業(yè)務(wù)部門分配各自的獨占分區(qū)資源,同時會劃分出供各部門使用的default分區(qū)。default分區(qū)資源會比較充足,業(yè)務(wù)部門希望能夠使用自己的獨占分區(qū)和同時充分利用default分區(qū)資源,獨占分區(qū)資源和default分區(qū)都不夠用的時候,才會觸發(fā)彈性擴(kuò)容,往屬于自己的獨占分區(qū)中擴(kuò)容資源。

二、對Yarn改造帶來的挑戰(zhàn)

對上述feature的開發(fā),除了需求技術(shù)本?的難度。還需要考慮到盡可能降低用戶存量集群穩(wěn)定性的影響,減少用戶業(yè)務(wù)側(cè)改造成本。

  • 集群穩(wěn)定性:Hadoop Yarn作為大數(shù)據(jù)系統(tǒng)中的基礎(chǔ)調(diào)度組件,如果改動過多,引發(fā)的故障幾率就會增大。同時引入的feature,必然需要升級存量集群的Haoop Yarn。升級操作要做到對存量業(yè)務(wù)集群無感知,不能影響到當(dāng)天的業(yè)務(wù)。

  • 業(yè)務(wù)側(cè)使用成本:引入的新feature也必須符合原?yarn的使用習(xí)慣,方便業(yè)務(wù)側(cè)用戶理解,同時降低業(yè)務(wù)側(cè)對代碼的改造。

1. AM自主選擇存儲介質(zhì)

目前Yarn的社區(qū)沒有考慮云上異構(gòu)資源混合部署的特點。在線TKE集群中,當(dāng)資源緊張時會對容器進(jìn)行驅(qū)逐。為了避免Appliction重新計算,浪費(fèi)資源的現(xiàn)象,必須提供AM可以指定能否分配到POD 類型資源。

自主選擇存儲介質(zhì)中,使用配置化標(biāo)識,由NodeManager通過RPC上報能否將資源提供給AM使用,ResourceManager通過上報信息決定將Application的AM分配到穩(wěn)定資源介質(zhì)中。由NodeManager通過配置化上報信息的好處是顯而易見的:

  • 去集中化:減少ResourceManager處理邏輯。否則,擴(kuò)容資源時,還需將資源信息通過RPC/配置流入到ResourceManager中。如無必要,勿增實體,對ResourceManager的改造應(yīng)該輕量化。

  • 集群穩(wěn)定性:存量業(yè)務(wù)集群對Yarn升級后,需要重啟NodeManager, 只需要重啟ResourceManager。Yare的高可用特性可保證升級過程對業(yè)務(wù)無影響。無需重啟NodeManager 的原因是,NM默認(rèn)將本機(jī)資源視為可分配。

  • 簡單易用:用戶可以通過配置?由決定任務(wù)資源擁有分配AM的權(quán)利,不單單局限POD容器資源。

2. 多標(biāo)簽動態(tài)分配資源

Yarn的原生標(biāo)簽設(shè)計中,提交任務(wù)時的標(biāo)簽表達(dá)式中只能含有單個標(biāo)簽。如果為了提?利用率,同時使用多個分區(qū)資源,就必須將非default分區(qū)設(shè)置為Non-exclusive特性。標(biāo)簽表達(dá)式必須解決如下三個問題:

  • 資源隔離:分區(qū)A設(shè)置Non-exclusive后,資源被其他分區(qū)上的APP占用后,無法及時交換給分區(qū)A的App。

  • 自由共享資源:只有default分區(qū)才有資格申請Non-exclusive分區(qū)資源。

  • 動態(tài)選擇分區(qū)資源:多分區(qū)資源共享時,無法根據(jù)分區(qū)剩余資源大小選擇可用區(qū),影響任務(wù)執(zhí)行效率。

騰訊云EMR團(tuán)隊通過支持?jǐn)U展表達(dá)式語法,增加對邏輯運(yùn)算符表達(dá)式的支持,使App可以申請多個分區(qū)資源。同時開發(fā)資源統(tǒng)計模塊動態(tài)統(tǒng)計分區(qū)可用資源,為App分配最合適的分區(qū)。

三、實操演練

測試環(huán)境:指定172.17.48.28/172.17.48.17的NodeManager為default分區(qū),172.17.48.29/172.17.48.26的NodeManager為x分區(qū)。

隊列設(shè)置:

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>yarn.scheduler.capacity.root.queues</name> <value>a,b</value> </property><property> <name>yarn.scheduler.capacity.root.accessible-node-labels.x.capacity</nam e> <value>100</value> </property><property> <name>yarn.scheduler.capacity.root.accessible-node-labels.y.capacity</nam e> <value>100</value> </property><!-- configuration of queue-a --> <property> <name>yarn.scheduler.capacity.root.a.accessible-node-labels</name> <value>x</value> </property><property> <name>yarn.scheduler.capacity.root.a.capacity</name> <value>50</value> </property><property> <name>yarn.scheduler.capacity.root.a.accessible-node-labels.x.capacity</n ame> <value>100</value> </property><!-- configuration of queue-b --> <property> <name>yarn.scheduler.capacity.root.b.accessible-node-labels</name> <value>y</value> </property><property> <name>yarn.scheduler.capacity.root.b.capacity</name> <value>50</value> </property><property> <name>yarn.scheduler.capacity.root.b.accessible-node-labels.y.capacity</n ame> <value>100</value> </property></configuration>

1. 規(guī)定AM只能分配在172.17.48.28

對另外三個節(jié)點的NodeManager節(jié)點配置如下配置項:

yarn.nodemanager.am-alloc-disabled = true

配置后,提交的Application的AM只能在172.17.48.28節(jié)點啟動。

2. 使用組合標(biāo)簽

通過mapreduce.job.node-label-expression指定標(biāo)簽表達(dá)式,x||表示同時使用x/default分區(qū)。

hadoop jar /usr/local/service/hadoop/share/hadoop/mapreduce/hadoop-mapredu ce-examples-3.1.2.jar pi -D mapreduce.job.queuename="a" -D mapreduce.job. node-label-expression="x||" 10 10

使用該命令提交后,觀察到Application的container被分配在x/default分區(qū)。

四、Hadoop Yarn on Kubernetes Pod 最佳實踐


該客戶大數(shù)據(jù)應(yīng)用和存儲跑在Yarn管理的大數(shù)據(jù)集群,在生產(chǎn)環(huán)境中,面臨諸多問題,主要體現(xiàn)在大數(shù)據(jù)的算力不足和在線業(yè)務(wù)波谷時資源的浪費(fèi)。如離線計算在算力不足時,數(shù)據(jù)準(zhǔn)時性無法得到保證,尤其是當(dāng)遇到隨機(jī)緊急大數(shù)據(jù)查詢?nèi)蝿?wù),沒有可用的計算資源,只能停掉已有的計算任務(wù),或者等已有任務(wù)完成,?論哪種?式,總體任務(wù)執(zhí)行的效率都會大打折扣。

基于Hadoop Yarn on Kubernetes Pod 方案,將離線任務(wù)自動擴(kuò)容至云上集群,與TKE在線業(yè)務(wù)集群混合部署,充分利用云上波谷時段的閑置資源,提高離線業(yè)務(wù)的算力,并利用云上資源快速的彈性擴(kuò)容能力,及時補(bǔ)充離線計算的算力

通過Hadoop Yarn on Kubernetes Pod ?案對客戶的在線TKE集群資源使用進(jìn)行優(yōu)化后,集群閑時CPU使用率能提高500%。

在線集群閑時CPU占用

離在線混部后CPU占用

五、總結(jié)

本文提出了基于YARN針對云原生容器化的優(yōu)化與實踐,在混合部署云原生環(huán)境中,極大地提高了任務(wù)運(yùn)行的穩(wěn)定性,高效性,有效提高了集群資源利用率,節(jié)約硬件成本。在未來,我們會探討更多大數(shù)據(jù)云原生場景,為企業(yè)客戶帶來更多的實際效益。

作者簡介

張翮,騰訊云高級工程師,目前主要負(fù)責(zé)騰訊云大數(shù)據(jù)產(chǎn)品彈性MapReduce的管控相關(guān)模塊和重要組件Hive的技術(shù)研發(fā)。向Apache Hive,Apache Calcite開源項目貢獻(xiàn)過代碼,畢業(yè)于電子科技大學(xué)。

點擊文末「閱讀原文」,了解騰訊云彈性 MapReduce更多信息~

騰訊云大數(shù)據(jù)

長按二維碼
關(guān)注我們

總結(jié)

以上是生活随笔為你收集整理的腾讯云EMR基于YARN针对云原生容器化的优化与实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。