spark-streaming對接kafka的兩種方式


spark-streaming對接kafka有兩種方式:
1.基於receiver的方式,屬於高級API,簡單但是效率低,容易丟失數據(可以設置WAL)。
它的原理是:receiver從kafka拉取數據存儲到executor的內存中,spark-streaming啟動job處理數據。
偏移量保存在zookeeper中。
 
2.基於Direct的方式
屬於低級API,效率高。
executor直接對接kafka的partition,觸發action后,周期性地讀取topic分區指定offset的數據,生成batch運算。
 
優點:
簡言之,省去了receiver,降低資源消耗,提高性能。
1.簡化並行讀寫:Spark會創建和kafka partition數量一致的RDD partition,並且並行化從kafka中讀取數據,所以在kafka的partition和rdd的partition之間,一一對映。
2.高性能:direct沒有receiver,不需要WAL寫前日志,因為kafka中的副本就可以保證數據不丟失。
3.降低資源,direct不需要receiver,因此申請的executor可以全部用於運算。
 
缺點:
1.開發復雜
2.要spark自己維護offset


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM