[發明專利]一種flink state狀態遷移方案在審
| 申請號: | 202011378098.6 | 申請日: | 2020-11-30 |
| 公開(公告)號: | CN112379887A | 公開(公告)日: | 2021-02-19 |
| 發明(設計)人: | 尹春光;王全福;曹劼;吳曉兵 | 申請(專利權)人: | 天翼電子商務有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F8/71 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 102200 北京市昌平*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 flink state 狀態 遷移 方案 | ||
本發明公開了一種flink state狀態遷移方案,本發明中一次flink state遷移的步驟主要分為以下三步:1.讓flink作業完成state持久化到hdfs;2.在flink job代碼中加入flink state數據,格式化輸出到外部存儲的代碼;Flink支持從指定的版本的數據進行恢復,這里僅僅使用flink的程序加載指定版本的數據,只在job在初始化的時候完成將state數據格式化輸出到外部存儲;3.在新的版本的flink作業中進行加載對應的task的狀態數據本方案提出flink運行時dump計算狀態,狀態恢復時加載自定義的數據結構來支持計算拓撲變化,計算狀態類型變化等方案,從而保證數據計算的一致性。
技術領域
本發明涉及支付、金融領域,特別涉及一種flink state狀態遷移方案。
背景技術
在流計算場景中,數據沒有邊界源源不斷的流入的,每條數據流入都可能會觸發計算,比如在進行count或sum這些操作,是選擇每次觸發計算將所有流入的歷史數據重新計算一邊還是每次計算都基于上次計算結果進行增量計算呢?從綜合考慮角度,很多人都會選擇增量計算,那么問題就產生了:上一次的中間計算結果保存在哪里?內存?這其中會由于本身的網絡,硬件或軟件等問題造成某個計算節點失敗,對應的上次計算結果就會丟失,在節點恢復時,是需要將所有歷史數據重新計算一遍的,對于這樣的結果大家是很難接受的。
flink運行計算任務的過程中,會有很多中間處理過程。在整個任務運行的過程中,中間存在著多個臨時狀態,比如說某些數據正在執行一個operator,但是只處理了一半數據,另外一般還沒來得及處理,這也是一個狀態。如果這時候我們沒有存儲中間計算的狀態,那么就意味著重啟這個計算任務時,需要從頭開始將原來處理過的數據重新計算一遍。如果存儲了中間狀態,就可以恢復到中間狀態,并從該狀態開始繼續執行任務。這就是狀態管理的意義。所以需要一種機制去保存記錄執行過程中的中間狀態,這種機制就是狀態管理機制。
但是當flink作業的物理計算拓撲發生變化了,如果程序未設置程序算子的唯一ID或是在flink狀態類型發生變化,在Job升級的時候,就會導致flink state加載失敗。同時存在flink state的類型轉換的時候就會產生狀態丟失。
發明內容
本發明要解決的技術問題是克服現有技術的缺陷,提供一種flink state狀態遷移方案,flink在實時計算方案中,flink state起到容錯,計算一致性等保障。本發明旨在基于state狀態導出機制,對計算拓撲發生變化時能夠保障應用程序state恢復完成,從而保證計算結果的一致性。
為了解決上述技術問題,本發明提供了如下的技術方案:
本發明一種flink state狀態遷移方案,基于以下四種場景的flink state都不能完成狀態遷移的條件下:
一、flink計算job算子未設置唯一標識;
二、或是唯一標識發生變化;
三、算子類型與state類型變化;
四、多個算子都依賴之前的一個狀態的場景;
采用運行狀態遷移方案來實現flink job的一致性;具體如下所示:
S1.將運行時flink的state數據進行savepoint到hdfs;
S2.啟動job將savepoint數據格式化后的外部存儲;
S3.啟動新的job從外部存儲初始化stateful operation算子狀態數據;
完成一次flink state遷移的步驟主要分為以下三步:
1.讓flink作業完成state持久化到hdfs;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于天翼電子商務有限公司,未經天翼電子商務有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011378098.6/2.html,轉載請聲明來源鉆瓜專利網。





