Receiver 分發詳解

2021-07-14 09:48:30 字數 1920 閱讀 5781

,返回目錄請 猛戳這裡

2016.03.10 update, spark 1.6 全系列 √ (1.6.0, 1.6.1)

2015.11.09 update, spark 1.5 全系列 √ (1.5.0, 1.5.1, 1.5.2)

2015.07.15 update, spark 1.4 全系列 √ (1.4.0, 1.4.1)

receiverinputdstream

- 子類 socketinputdstream

- 子類 twitterinputdstream

- 子類 rawinputdstream

- 子類 flumepollinginputdstream

- 子類 mqttinputdstream

- 子類 flumeinputdstream

- 子類 pluggableinputdstream

- 子類 kafkainputdstream

1.4.0 代表了 1.5.0 以前的版本,如 1.2.x, 1.3.x, 1.4.x

1.5.0 代表了 1.5.0 以來的版本,如 1.5.x, 1.6.x

(1.b) 定義計算 func。我們將在多個 executor 上共啟動xtask,每個task負責乙個 partition 的資料,即乙個receiver例項。我們要對這個receiver例項做的計算定義為func函式,具體的,func是:

(1.c) 分發 rdd(receiver) 和 func 到具體的 executor。上面 (a)(b) 兩步只是在 driver 端定義了rdd[receiver]和 這個rdd之上將執行的func,但並沒有具體的去做。這一步是將兩者的定義分發到 executor 上去,馬上就可以實際執行了。

(2) 在各個 executor 端,執行(1.b) 中定義的func。即啟動receiver例項,並一直 block 住當前執行緒。

如果某個task失效一下,spark core 的taskscheduler會將其重新部署到另乙個 executor 上去重跑。但這裡的問題在於,負責重跑的 executor 可能是在下發重跑的那一刻是正在執行task數較少的,但不一定能夠將receiver分布的最均衡的。

有個使用者 code 可能會想自定義乙個receiver的分布策略,比如所有的receiver都部署到同乙個節點上去。

1job(包含xtask),改為xjob(每個job只包含1task

新增對receiver的監控重啟機制

在 streaming 程式執行過程中,如果需要重啟某個receiver

是實現為round-robin式的了。我們舉例說明下這兩個方法:

spark streaming 1.4.0

spark streaming 1.5.0

receiver 活性

不保證永活

無限重試、保證永活

receiver 均衡分發

無保證round-robin 策略

自定義 receiver 分發

很 tricky方便

Go 複習 方法receiver

package main import fmt type ball struct func b ball ping func b ball pong func main v.name wjc fmt.printf v p n v v.ping v.pong fmt.println v.name v1...

go 型別方法 receiver的理解

package main import fmt type person struct func this person growth func this person changename newname string func main p.growth fmt.printf d p.age 因為...

Android 滑動衝突,事件分發機制的詳解

android中事件分發機制 是在 dispatchtouchevent,onintercepttouchevent,ontouchevent這三個方法中做處理,上一層空間不做攔截處理,將事件分發給最底層的view處理。android中的事件型別分為按鍵事件和螢幕觸控事件,touch事件是螢幕觸控事...