,返回目錄請 猛戳這裡
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 上共啟動x
個task
,每個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
都部署到同乙個節點上去。
把1
個job
(包含x
個task
),改為x
個job
(每個job
只包含1
個task
)
新增對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事件是螢幕觸控事...