記一次Flink消費kafka資料恢復機制

2021-10-06 20:49:34 字數 806 閱讀 4718

現在我有乙個資料架構:flink消費kafka,開啟windows視窗聚合存es。某天的晚上flink掛機,未加報警機制,3小時後才發現。如何才能把丟失的kafka資料補充回來?

1)setstartfromlatest  //從最後乙個kafka offset開始消費

2)setstartfromgroupoffsets //從你的group對應消費的最後乙個offset後的資料進行消費

3)setstartfromearliest  //從kafka一開始的資料開始消費

4)setstartfromtimestamp  //從某個時間點開始消費

5)setstartfromspecificoffsets //從某個特殊的offset開始消費

我們要解決以上問題,毋庸置疑要選擇使用第二種方式,kafka版本<=0.8,需要配置消費時,上報你消費的offset,後期版本就自動上報了,此時,kafka服務會幫你記錄你的group 到底消費到了哪個offset,下次重啟時,kafka順理成章的知道要從哪個offset開始給你推送資料。

不過,flink有一套自己的dr機制,只需要你啟動服務時開始checkpoint,此時flink作業會根據你給出的頻率定時生成分布式快照,並儲存在你指定的hdfs位置,此時,這個資料結構中亦儲存了乙份當前作業消費kafka的情況:哪個partition消費到了哪個offset。當你發現問題並重啟flink時,flink作業會告訴kafka我要從哪個offset開始消費,這樣我們的資料也就恢復了。   

對這兩種方式,flink作業會優先使用自己本地checkpoint中儲存的offset,kafka中儲存的offset使用優先順序較低。

記一次Kafka 消費 轉存 ES

前提 流程是消費kafka資料,處理後存入es 基礎引數 es 個節點 索引20個分片 個副本 2 kafka 3個節點,12個 分割槽 出現的問題有 1 多執行緒消費kafka,無限重新分配rebalance,消費異常,資料無法消費處理至es 實際情況 1 當資料量達到20億條後 doc總大小已超...

記一次解決MQ不消費問題

mq不消費,mq執行緒全部處於等待狀態 專案重啟之後問題解決 jvm記憶體狀態正常 fullgc時間持續加長 cpu 100 查詢專案程序中所有的執行緒資訊,檢視是否有死鎖 檢視例項程序 tomcat的話bootstrap那個就是,springboot專案看啟動類名 jps 檢視程序狀態 產看是否有...

Flink內部精確一次exactly once

flink 中的乙個大的特性就是exactly once的特性,我們在一般的流處理程式中,會有三種處理語義 我們在程式處理中,通常要求程式滿足exactly once,就是確保資料的準確性,不丟失,不重複,但是實現這樣的功能是比較複雜的,在flink中,是如何提供精確一次的特性呢?我覺得應該有兩方面...