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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

如何使用 AutoPilot 对作业自动调优?

發(fā)布時(shí)間:2024/9/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用 AutoPilot 对作业自动调优? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
簡介:本文主要介紹如何使用 AutoPilot 對(duì)作業(yè)自動(dòng)調(diào)優(yōu),解決 Flink 作業(yè)開發(fā)和運(yùn)維的兩大難題。

作者 | 呂文龍(龍三),阿里巴巴高級(jí)技術(shù)專家

摘要:本文由阿里巴巴高級(jí)技術(shù)專家呂文龍(龍三)分享,主要介紹如何使用 AutoPilot 對(duì)作業(yè)自動(dòng)調(diào)優(yōu)。內(nèi)容將通過以下四個(gè)部分來介紹:

  • AutoPilot簡介
  • AutoPilot實(shí)操演示
  • 如何選擇AutoPilot策略
  • AutoPilot使用注意事項(xiàng)
  • 一、AutoPilot簡介

    1.AutoPilot解決的難題

    AutoPilot的主要目標(biāo)是解決 Flink 作業(yè)開發(fā)和運(yùn)維的兩大難題。

    • 第一、作業(yè)調(diào)優(yōu)難,開發(fā)和運(yùn)維成本高的問題。

    Flink作業(yè)通常需要很長時(shí)間運(yùn)行,數(shù)據(jù)和作業(yè)的流量也會(huì)隨著時(shí)間不斷變化,因此作業(yè)資源也會(huì)隨著時(shí)間不斷變化。通常,我們需要隨著時(shí)間變化對(duì)作業(yè)不斷調(diào)優(yōu),才能保證作業(yè)長時(shí)間穩(wěn)定運(yùn)行。

    Flink SQL的引入大大簡化了作業(yè)的開發(fā)的難度,但是加大了作業(yè)的調(diào)優(yōu)的難度。因?yàn)镾QL的用戶通常對(duì)底層的具體實(shí)現(xiàn)不了解,這就導(dǎo)致作業(yè)的調(diào)優(yōu)難度會(huì)變大。

    • 第二、作業(yè)資源利用率低、執(zhí)行資源成本高的問題。

    造成這個(gè)問題的原因是因?yàn)樽鳂I(yè)在沒有動(dòng)態(tài)資源優(yōu)化的時(shí)候,通常都需要以最高峰時(shí)期的資源需求進(jìn)行配置,在長時(shí)間運(yùn)行中,非高峰時(shí)期的資源利用率就會(huì)比較低,這就會(huì)導(dǎo)致作業(yè)運(yùn)行的成本偏高。

    總體來說AutoPilot的目標(biāo)是希望通過自動(dòng)化的、自適應(yīng)的資源調(diào)優(yōu)來降低 Flink 的使用的門檻,同時(shí)降低 Flink 的使用的成本。

    2.AutoPilot的系統(tǒng)架構(gòu)

    AutoPilot屬于 Flink 管控服務(wù)的一部分,主要包括異常檢測跟異常解決兩個(gè)部分。AutoPilot異常檢測主要通過實(shí)時(shí)訂閱 Flink 作業(yè)的事件信息進(jìn)行統(tǒng)計(jì)分析,識(shí)別因?yàn)橘Y源問題導(dǎo)致的異常狀態(tài)。當(dāng)出現(xiàn)異常時(shí),會(huì)觸發(fā)資源自動(dòng)調(diào)優(yōu)來解決。AutoPilot異常解決主要通過動(dòng)態(tài)更新作業(yè)資源配置的參數(shù)來實(shí)現(xiàn)的。作業(yè)配置參數(shù)更新后,管控服務(wù)的另外一個(gè)服務(wù),也就是APP Manager就會(huì)自動(dòng)重啟 Flink 的作業(yè),來實(shí)現(xiàn)最新的配置上限,從而實(shí)現(xiàn)作業(yè)配置的更新。

    目前AutoPilot主要支持三個(gè)功能:

    • 根據(jù)作業(yè)的實(shí)際負(fù)載動(dòng)態(tài)調(diào)整作業(yè)的并發(fā)度,同時(shí)對(duì)應(yīng)的調(diào)整TM的個(gè)數(shù),這樣就可以保證作業(yè)的資源隨著流量的變化而變化,實(shí)現(xiàn)動(dòng)態(tài)的調(diào)整;
    • 根據(jù)TM的內(nèi)存利用率,動(dòng)態(tài)調(diào)整TM的資源,這樣可以保證單個(gè)TM內(nèi)存的資源處于一個(gè)合理的狀態(tài);
    • 自動(dòng)識(shí)別作業(yè)因?yàn)橘Y源問題導(dǎo)致的異常,動(dòng)態(tài)調(diào)整TM的資源,保證作業(yè)處于一個(gè)穩(wěn)定的狀態(tài)。

    二、AutoPilot實(shí)操演示

    1.如何為作業(yè)配置AutoPilot

    AutoPilot支持為每個(gè)作業(yè)獨(dú)立配置,可以動(dòng)態(tài)更新AutoPilot的配置,不影響作業(yè)的正常運(yùn)行。

    AutoPilot提供了三種模式

    • 默認(rèn)的Disabled模式:即AutoPilot不會(huì)進(jìn)行作業(yè)狀態(tài)的監(jiān)控;
    • Active模式:AutoPilot啟動(dòng)作業(yè)狀態(tài)監(jiān)控,并再必要的時(shí)候自動(dòng)更新作業(yè)參數(shù)配置;
    • Monitoring模式: 啟動(dòng)作業(yè)狀態(tài)監(jiān)控,在識(shí)別到作業(yè)異常時(shí),提供配置更新建議,但是需要用戶確認(rèn),手動(dòng)觸發(fā)更新作業(yè)配置。

    AutoPilot提供了五種策略

    • Cpu-based策略:主要基于TM的CPU實(shí)際利用率來動(dòng)態(tài)調(diào)整并發(fā)度,這是一個(gè)典型的彈性計(jì)算伸縮策略。當(dāng)CPU利用率高的時(shí)候,說明作業(yè)比較繁忙,這時(shí)候AutoPilot就會(huì)擴(kuò)大作業(yè)的并發(fā)度,來減少單個(gè)TM的負(fù)載。當(dāng)CPU利用率低的時(shí)候,說明 TM比較空閑,這時(shí)候就可以反過來減少作業(yè)的并發(fā)度,來釋放多余的資源;

    • Source-delay-based策略:主要根據(jù)source的delay metrics來判斷是否需要進(jìn)行并發(fā)度調(diào)整。這個(gè)策略目前只支持sls和datahub兩種source。正在社區(qū)推進(jìn)metrics標(biāo)準(zhǔn)化即FLIP-33,完成以后,這個(gè)策略會(huì)支持更多的 source;

    • Slot-utilization-based策略:主要根據(jù)task的slot利用率判斷是否需要調(diào)小并發(fā)度。和CPU的利用率不同的而是,如果task里有io wait或者sleep的邏輯也會(huì)被計(jì)算在內(nèi),利用率的計(jì)算會(huì)更加準(zhǔn)確。但這個(gè)策略依賴對(duì)source節(jié)點(diǎn)的利用率的統(tǒng)計(jì),會(huì)依賴FLIP-27,因此也需要等到FLIP-27完全完成后才能實(shí)際生效;

    • Memory-utilization-based策略:主要基于TM實(shí)際內(nèi)存的利用率以及GC metrics信息來判斷是否需要調(diào)整 TM內(nèi)存大小。當(dāng)TM整體內(nèi)存利用率低,而且沒有GC嚴(yán)重的時(shí)候,可以調(diào)整內(nèi)存的大小;當(dāng)TM內(nèi)存利用率已經(jīng)偏高,或者說GC嚴(yán)重的時(shí)候,可以調(diào)大單個(gè)TM的內(nèi)存,來保證上面跑的task處于比較健康的狀態(tài);

    • Job-exception-based策略:主要是自動(dòng)識(shí)別因?yàn)橘Y源異常所產(chǎn)生的作業(yè)的異常。當(dāng)識(shí)別到這種異常的時(shí)候,AutoPilot會(huì)自動(dòng)調(diào)大單個(gè)TM內(nèi)存的大小來解決這種資源的異常,保證作業(yè)處于穩(wěn)定的狀態(tài)。

    AutoPilot的冷卻時(shí)間

    當(dāng)AutoPilot處于Active或者M(jìn)onitoring狀態(tài)時(shí),需要配置 AutoPilot的冷卻時(shí)間。冷卻時(shí)間是指兩次rescale的最小時(shí)間間隔。因?yàn)锳utoPilot觸發(fā)的時(shí)候,作業(yè)需要重啟,重啟過程中需要進(jìn)行作業(yè)狀態(tài)的初始化以及預(yù)熱,因此需要把這段時(shí)間排除掉,才能避免AutoPilot的策略做出錯(cuò)誤判斷。通常來說state越大,作業(yè)的初始化和預(yù)熱的時(shí)間會(huì)越長,因此這時(shí)候冷卻時(shí)間通常也要配的大一點(diǎn)才能保證AutoPilot正常的運(yùn)行。

    AutoPilot自定義參數(shù)

    可以通過自定義的參數(shù)來個(gè)性化的控制AutoPilot的策略行為,以適配一些特殊的作業(yè)的要求。比如IO操作特別多的作業(yè),如果開啟了cpu-based,就需要把 cpu-based觸發(fā)的閾值調(diào)低,這樣才能適配作業(yè)實(shí)際cpu使用場景。

    實(shí)操演示

    針對(duì)這個(gè)提前創(chuàng)建好的作業(yè),當(dāng)需要對(duì)它做AutoPilot配置時(shí),需要在作業(yè)詳情頁面上選擇AutoPilot的tab頁。默認(rèn)狀況AutoPilot是不會(huì)啟動(dòng)的,當(dāng)需要啟動(dòng)的時(shí)候,需要在tab頁上把AutoPilot的模式從disable轉(zhuǎn)換成 Active或者M(jìn)onitoring。

    選擇好模式后,需要選擇所需的策略以及冷卻的時(shí)間,自定義配置位置填上自定義的參數(shù)。然后保存,這樣就可以開啟AutoPilot, 對(duì)這個(gè)作業(yè)狀態(tài)的進(jìn)行監(jiān)控以及資源的自動(dòng)調(diào)優(yōu)。

    當(dāng)需要關(guān)閉一個(gè)作業(yè)的AutoPilot的時(shí)候,同樣也只需在配置頁面,把模式切換成disable并保存就可以了,這樣AutoPilot的狀態(tài)又回到了未啟動(dòng)。無論怎樣操作AutoPilot都不會(huì)影響作業(yè)的正常運(yùn)行。

    2.如何查看AutoPilot運(yùn)行狀態(tài)

    當(dāng)AutoPilot啟動(dòng)的時(shí)候,可以在自動(dòng)調(diào)優(yōu)的狀態(tài)頁面查看當(dāng)前AutoPilot運(yùn)行的狀態(tài)。狀態(tài)信息主要包含兩部分:

    • 第一是最新推薦的作業(yè)配置。當(dāng)AutoPilot處于Monitoring狀態(tài)下面,如果有新的配置推薦產(chǎn)生,就會(huì)在這個(gè)頁面進(jìn)行展示。同時(shí)可以手動(dòng)在這個(gè)頁面觸發(fā)配置的更新。
    • 第二是看到每個(gè)AutoPilot啟動(dòng)策略所監(jiān)控到的作業(yè)的狀態(tài)信息。這些狀態(tài)信息一方面可以解釋目前AutoPilot為什么要進(jìn)行配置的更新,同時(shí)也可以用根據(jù)一些狀態(tài)信息來輔助進(jìn)行手動(dòng)作業(yè)的調(diào)優(yōu)或者代碼的優(yōu)化。

    3.如何查看AutoPilot歷史信息

    AutoPilot在運(yùn)行過程中,一旦對(duì)作業(yè)的配置進(jìn)行了修改,這些修改都會(huì)被作為事件保存下來,讓用戶可以在后期進(jìn)行AutoPilot行為的review,以及作業(yè)流量的分析。事件信息的查看,可以在“運(yùn)行事件”里,將AutoPilot類型的事件過濾出來并進(jìn)行查看。

    三、如何選擇AutoPilot策略

    1.一般場景作業(yè)

    推薦大家使用默認(rèn)參數(shù),也就是cpu-based + memory-utilization-based + job-exception-base的組合策略。在這個(gè)默認(rèn)策略下面,當(dāng)TM的CPU利用率長期比較高的的時(shí)候就會(huì)觸發(fā)并發(fā)度的調(diào)整;TM的內(nèi)存的使用率偏高或者偏低的時(shí)候,就會(huì)觸發(fā)單個(gè)TM的內(nèi)存調(diào)整;當(dāng)作業(yè)出現(xiàn)資源相關(guān)的異常的時(shí)候,也會(huì)及時(shí)的觸發(fā)TM資源的調(diào)整。整個(gè)配置跟常見的彈性計(jì)算的自動(dòng)調(diào)優(yōu)配置是基本保持一樣的,因此比較簡單易懂。

    2.高優(yōu)先級(jí)、延遲敏感的作業(yè)

    推薦不要開啟AutoPilot的Active模式,而是使用Monitoring模式。因?yàn)檫@種類型的作業(yè)一旦觸發(fā)AutoPilot的調(diào)優(yōu),就會(huì)導(dǎo)致作業(yè)重啟,可能會(huì)影響業(yè)務(wù)效果。通過Monitoring模式,可以人工的定時(shí)的去review,檢查是否有需要優(yōu)化的配置,可以在適當(dāng)?shù)臅r(shí)機(jī)進(jìn)行手動(dòng)更新。

    3.使用sls或者datahub的作業(yè)

    推薦使用source-delay-based + slot-utilization-based + memory-utilization-based + job-exception-based 策略。這樣對(duì)作業(yè)并發(fā)度的調(diào)優(yōu)效果會(huì)更好,整個(gè)算法的收斂的速度會(huì)更快。

    四、AutoPilot使用注意事項(xiàng)

    首先,AutoPilot修改并發(fā)度是通過默認(rèn)的并發(fā)度來實(shí)現(xiàn)的,因此作業(yè)代碼中不能顯示設(shè)置并發(fā)度,否則就無法實(shí)現(xiàn)動(dòng)態(tài)調(diào)節(jié)。

    其次,AutoPilot觸發(fā)更新以后,控制臺(tái)會(huì)自動(dòng)重啟作業(yè),這會(huì)導(dǎo)致作業(yè)短暫的停止處理數(shù)據(jù),對(duì)于抖動(dòng)敏感的作業(yè)推薦使用Monitoring模式,避免對(duì)業(yè)務(wù)產(chǎn)生影響。

    第三,是AutoPilot策略對(duì)作業(yè)的數(shù)據(jù)模型有一定假設(shè):

    • 作業(yè)的流量需要是流量平滑變化的,不能有數(shù)據(jù)傾斜,這樣可以根據(jù)當(dāng)前時(shí)間之前一小段時(shí)間作業(yè)的運(yùn)行統(tǒng)計(jì)數(shù)據(jù)來預(yù)估作業(yè)所需資源;
    • 作業(yè)的數(shù)據(jù)不能有數(shù)據(jù)傾斜,每個(gè)算子的吞吐能力會(huì)隨著并發(fā)度線性擴(kuò)展,這樣才可以根據(jù)當(dāng)前作業(yè)的吞吐能力去預(yù)估并發(fā)度調(diào)整后作業(yè)的吞吐能力,從而決定作業(yè)需要調(diào)整多少并發(fā)度;

    當(dāng)作業(yè)的pattern嚴(yán)重偏離這幾個(gè)假設(shè)時(shí),可能會(huì)存在作業(yè)異常, AutoPilot沒有觸發(fā)自動(dòng)調(diào)整,或者說AutoPilot觸發(fā)了自動(dòng)的調(diào)整,但是算法可能會(huì)出現(xiàn)無法收斂,這時(shí)作業(yè)會(huì)持續(xù)的處于異常狀態(tài),并且不斷的重啟等等。此時(shí)需要關(guān)閉AutoPilot,進(jìn)行手動(dòng)的作業(yè)調(diào)優(yōu),才能保證作業(yè)處于健康的狀態(tài)。

    原文鏈接:https://developer.aliyun.com/article/781173?

    版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。

    總結(jié)

    以上是生活随笔為你收集整理的如何使用 AutoPilot 对作业自动调优?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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