開發與維運

如何遷移 Flink 任務到實時計算

作者 | 景麗寧(硯田),阿里巴巴技術專家景麗寧(硯田)

本文由阿里巴巴技術專家景麗寧(硯田)分享,主要介紹如何遷移Flink任務到實時計算 Flink 中來。內容主要分為以下幾部分:

  1. 如何遷移
  2. 多 jar
  3. 配置文件
  4. state 複用

通常用戶在線下主要使用 Flink run,這會造成一些問題,比如不同版本的配置不同會需要改代碼或腳本;無法快速切換不同版本;無法從之前的作業恢復。

幻燈片02.png

那麼如何從線下遷移到線上呢?本文將通過下面四部分來向大家介紹。

幻燈片03.png

一、如何遷移:從 Flink run 到流計算平臺

如下圖的線下命令如何遷移到線上。首先打開 VVP UI,添加基礎配置,主要包括:作業名稱、Jar URI、一些主要參數和並行度。還可以點擊高級配置,配置更多信息。

幻燈片06.png

比如高級配置裡的行為配置,分為三部分:升級策略、初始狀態和恢復策略。升級策略一般選擇Stateless,初始狀態選擇Running,恢復策略選擇Latest State。

image.png

升級策略選擇Stateless,表示針對已經在運行的作業,編輯並保存配置後,會直接把原作業停掉,然後重新啟動一個更新的作業;選擇Stateble,針對正在運行的作業做配置編輯並保存的話,作業會先做一次Savepoint,然後加載新的配置並使用該 Savepoint啟動新的作業。
恢復策略選擇LatestSavepoint,是指作業在暫停情況下,如果再啟動,將使用最新的Savepoint啟動。
上面介紹的是 Flink 配置中比較重要的部分,下面圖片顯示的是另外一部分可以設置Checkpoint間隔等的配置,接下來是資源配置。日誌配置部分可以選擇日誌保存位置,方便日後如果作業出現問題,可以方便的排查問題。

image.png

Flink 作業配置完成並啟動運行後,如果出現異常,可以通過運行事件查看運行情況和問題。也可以打開 Flink UI的Job Manager,查看日誌情況。

image.png

二、多Jar情況下,用戶如何添加其他依賴的Jar

一些用戶有自定義依賴且無法通過 fat jar 解決問題。舉個例子,A用戶有自己的main Jar和一些其他的Jar,這些Jar的應用場景不一樣,那麼首先需要在資源管理頁面上傳Jar包,上傳後它就會在VVP管理界面下了。
上傳後再到高級配置中,找到“額外依賴的Jar”,下拉並選擇剛剛上傳的Jar 包就可以了。

image.png

三、用戶如何通過配置文件定義作業

在資源管理裡上傳文件,然後在高級配置裡選添加依賴,選擇需要的依賴。如果啟動函數裡,main class是需要讀取某個文件,先通過依賴添加文件,然後再根據提示的方式讀取文件。

以上兩個方式是放置用戶Jar的方式,jar 和其他文件都可以在這裡存放。

四、如何複用原來的state加速作業恢復

如果在運行作業時發現問題,一般情況下是停下來然後找到問題修復後再重啟。用戶需要在創建的時候指定 Checkpoint 需要的 OSS。 如果開啟了Checkpoint,後續作業就可以直接從Checkpoint中恢復。
首先確認高級配置中恢復策略選擇LatestState或LatestSavepoint。在這個前提下,可以暫停作業(千萬不要停止作業),暫停會觸發Savepoint,當再次點擊啟動時,會從這次Savepoint點恢復。

image.png

打開 Flink UI ,然後點擊作業快照,在作業快照中可以查看 Flink Checkpoint指標,裡面會顯示Restore的次數和最後一次Restore的地址等信息,可確定作業是從最新的 State 恢復。

image.png

當作業正在運行,想對當前作業進項拷貝,如何操作呢?在作業控制頁面點擊Checkpoint,找到歷史快照並點擊其對應的最右側的“從該快照復製作業”,那麼就完成了把當前作業複製的操作,複製內容包括正在運行作業的Jar 包配置等。點擊啟動後,可以從作業快照中查看到新作業是從上個作業最近的一次Savepoint中複製啟動的。

Leave a Reply

Your email address will not be published. Required fields are marked *