溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SparkStreaming與Kafka的整合是怎么樣的

發(fā)布時(shí)間:2021-12-15 10:53:31 來(lái)源:億速云 閱讀:147 作者:柒染 欄目:大數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)SparkStreaming與Kafka的整合是怎么樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

為什么有SparkStreaming與Kafka的整合?

首先我們要知道為什么會(huì)有SparkStreaming與Kafka的整合,任何事情的出現(xiàn)都不是無(wú)緣無(wú)故的!

我們要知道Spark作為實(shí)時(shí)計(jì)算框架,它僅僅涉及到計(jì)算,并沒有涉及到數(shù)據(jù)的存儲(chǔ),所以我們后期需要使用spark對(duì)接外部的數(shù)據(jù)源。SparkStreaming作為Spark的一個(gè)子模塊,它有4個(gè)類型的數(shù)據(jù)源:

1.socket數(shù)據(jù)源(測(cè)試的時(shí)候使用)

2.HDFS數(shù)據(jù)源(會(huì)用到,但是用得不多)

3.自定義數(shù)據(jù)源(不重要,沒怎么見過(guò)別人會(huì)自定義數(shù)據(jù)源)

4.擴(kuò)展的數(shù)據(jù)源(比如kafka數(shù)據(jù)源,它非常重要,面試中也會(huì)問(wèn)到)

下面SparkStreaming與Kafka的整合,但只講原理,代碼就不貼了,網(wǎng)上太多了,寫一些自己理解的東西!

SparkStreaming整合Kafka-0.8

SparkStreaming與Kafka的整合要看Kafka的版本,首先要講的是SparkStreaming整合Kafka-0.8。

在SparkStreaming整合kafka-0.8中,要想保證數(shù)據(jù)不丟失,最簡(jiǎn)單的就是靠checkpoint的機(jī)制,但是checkpoint機(jī)制有一個(gè)毛病,對(duì)代碼進(jìn)行升級(jí)后,checkpoint機(jī)制就失效了。所以如果想實(shí)現(xiàn)數(shù)據(jù)不丟失,那么就需要自己管理offset。

大家對(duì)代碼升級(jí)會(huì)不會(huì)感到陌生,老劉對(duì)它好好解釋一下!

我們?cè)谌粘i_發(fā)中常常會(huì)遇到兩個(gè)情況,代碼一開始有問(wèn)題,改一下,然后重新打包,重新提交;業(yè)務(wù)邏輯發(fā)生改變,我們也需要重新修改代碼!

而我們checkpoint第一次持久化的時(shí)候會(huì)整個(gè)相關(guān)的jar給序列化成一個(gè)二進(jìn)制文件,這是一個(gè)獨(dú)一無(wú)二的值做目錄,如果SparkStreaming想通過(guò)checkpoint恢復(fù)數(shù)據(jù),但如果代碼發(fā)生改變,哪怕一點(diǎn)點(diǎn),就找不到之前打包的目錄,就會(huì)導(dǎo)致數(shù)據(jù)丟失!

所以我們需要自己管理偏移量!

SparkStreaming與Kafka的整合是怎么樣的

用ZooKeeper集群管理偏移量,程序啟動(dòng)后,就會(huì)讀取上一次的偏移量,讀取到數(shù)據(jù)后,SparkStreaming就會(huì)根據(jù)偏移量從kafka中讀取數(shù)據(jù),讀到數(shù)據(jù)后,程序會(huì)運(yùn)行。運(yùn)行完后,就會(huì)提交偏移量到ZooKeeper集群,但有一個(gè)小問(wèn)題,程序運(yùn)行掛了,但偏移量未提交,結(jié)果已經(jīng)部分到HBase,再次重新讀取的時(shí)候,會(huì)有數(shù)據(jù)重復(fù),但只影響一批次,對(duì)大數(shù)據(jù)來(lái)說(shuō),影響太??!

但是有個(gè)非常嚴(yán)重的問(wèn)題,當(dāng)有特別多消費(fèi)者消費(fèi)數(shù)據(jù)的時(shí)候,需要讀取偏移量,但ZooKeeper作為分布式協(xié)調(diào)框架,它不適合大量的讀寫操作,尤其是寫操作。所以高并發(fā)的請(qǐng)求ZooKeeper是不適合的,它只能作為輕量級(jí)的元數(shù)據(jù)存儲(chǔ),不能負(fù)責(zé)高并發(fā)讀寫作為數(shù)據(jù)存儲(chǔ)。

根據(jù)上述內(nèi)容,就引出了SparkStreaming整合Kafka-1.0。

SparkStreaming整合Kafka-1.0

SparkStreaming與Kafka的整合是怎么樣的

這個(gè)只是利用KafkaOffsetmonitor設(shè)計(jì)的一個(gè)方案,利用它對(duì)任務(wù)進(jìn)行監(jiān)控,接著利用爬蟲技術(shù)獲取監(jiān)控的信息,再把數(shù)據(jù)導(dǎo)入到openfalcon里面,在openfalcon里根據(jù)策略配置告警或者自己研發(fā)告警系統(tǒng),最后把信息利用企業(yè)微信或者短信發(fā)送給開發(fā)人員!

上述就是小編為大家分享的SparkStreaming與Kafka的整合是怎么樣的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI