Spark Streaming管理Kafka偏移量

前言

爲了讓Spark Streaming消費kafka的數據不丟數據,可以創建Kafka Direct DStream,由Spark Streaming自己管理offset,並不是存到zookeeper。啓用S​​park Streaming的 checkpoints是存儲偏移量的最簡單方法,因爲它可以在Spark的框架內輕鬆獲得。 checkpoints將應用程序的狀態保存到HDFS,以便在故障時可以恢復。如果發生故障,Spark Streaming應用程序可以從checkpoints偏移範圍讀取消息。

但是,Spark Streaming checkpoints在應用程序修改後由於從checkpoint反序列化失敗而無法恢復,因此不是非常可靠,特別是如果您將此機制用於關鍵生產應用程序,另外,基於zookeeper的offset可視化工具將無法使用。我們不建議通過Spark checkpoints來管理偏移量。因此本文將手動存儲offset到zookeeper,完全自我掌控offset。

從ZK獲取offset

創建ZKClient,API有好幾個,最後用帶序列化參數的,不然保存offset的時候容易出現亂碼。

查看該groupId在該topic下是否有消費記錄,如果有,肯定在對應目錄下會有分區數,children大於0則有記錄。

在有記錄的情況下,去拿具體的offset

注意紅色線框部分,在zookeeper裏存儲的offset有可能在kafka裏過期了,所以要拿kafka最小的offset和zookeeper裏的offset比較一下。

接下來就可以創建Kafka Direct DStream了,前者是從zookeeper拿的offset,後者是直接從最新的開始(第一次消費)。

最後就是處理RDD,保存Offset。

感興趣可以加Java架構師羣獲取Java工程化、高性能及分佈式、高性能、深入淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點高級進階乾貨的直播免費學習權限 都是大牛帶飛 讓你少走很多的彎路的 羣..號是:855801563 對了 小白勿進 最好是有開發經驗

注:加羣要求

1、具有工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶着大家全面、科學地建立自己的技術體系和技術認知!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章