sparkStreaming核心剖析

2021-08-25 08:34:26 字數 948 閱讀 1523

receiver從kafka中接收的資料都是一條一條的資料,那麼接下來,會將這一條一條的資料儲存到currnetbuffer(arraybuffer),這時有乙個執行緒(blockintervaltimer)(每隔一段時間(可配置)將currentbuffer中所有資料打包,封裝為乙個block),然後將打包好的block推入到乙個佇列中,這個佇列中就是乙個乙個的block,然後有乙個blockpushingthread執行緒,將block推入到pusharraybuffer中,這時就有倆個去處,乙個是直接存入到blockmanager,另一邊就是存入到driver的receivertracker中,傳送到receivertracker,其中會將乙個乙個的blockid儲存到對應的streamid中,而且存入乙個hashmap,key就是time

關鍵點:

1. blockintervaltimer,會每隔一段時間(預設是200ms),將接收到的資料,打包成乙個block

2. 每乙個block,都會通過blockmanager儲存乙份,然後還會傳送乙份blockinfo到receivertracker上,根據time時間來儲存(hashmap)

我們的jobgenerator,每隔一段時間(batch interval)的time,就去找receivertracker,將其中的,從上次劃分batch的時間,到目前為止的這個batch interval time間隔內的block,給封裝為乙個batch

其次,就會將這個batch中的資料建立rdd,這個rdd中有幾個partition呢?,這就是batch和block之間的乙個絕對微妙的地方,其實乙個batch內,在那段時間封裝了幾個block,那這幾個block,就代表,batch對應的rdd內會有幾個partition

這個batch對應的rdd的partition的數量,直接決定了資料處理階段的並行度,所以說,並行度和調優有很大的關係,如果想增加資料處理階段的效能那麼就考慮增加並行度,縮短blockinterval

Spark Streaming入門詳解

背景 使用spark主要是使用spark streaming,spark streaming的魔力之所在於 1.流式處理,如今是乙個流處理時代,一切與流不相關的都是無效的資料。3.spark streaming本身是乙個程式,spark streaming在處理資料的時候會不斷感知資料。所以對構建複...

Spark Streaming 程式監控

官網中指出,spark中專門為sparkstreaming程式的監控設定了額外的途徑,當使用streamingcontext時,在web ui中會出現乙個 streaming 的選項卡,在此選項卡內,統計的內容展示如下 這其中包括接受的記錄數量,每乙個batch內處理的記錄數,處理時間,以及總共消耗...

spark streaming讀取kafka示例

spark streaming讀取kafka示例,其中 spark streaming優雅的關閉策略優化部分參考 如何管理spark streaming消費kafka的偏移量部分參考 spark向kafka中寫入資料部分參考 object demo 建立streamingcontext return...