任務排程演算法以worker為維度;
排程過程中正在進行的排程動作不會對已發生的排程動作產生影響;
排程過程中使用者可以自定義 usedefined assignment,和使用已有的old assignment,這兩者的優先順序是:usedefined assignment>old assignment;
使用者可以設定task.on.differ.node引數,強制要求同元件的task分布到不同supervisor上;
worker只會被唯一的拓撲使用
在啟動supervisor時,worker不會啟動,只有在有task時才會啟動,每個拓撲可以指定worker的資源占用
以worker為維度,盡量將worker平均分配到各個supervisor上;(讓worker獲取盡量多的資源)
以worker為單位,確認worker與task數目大致的對應關係(注意在這之前已經其他拓撲占用利用的worker不再參與本次動作);
建立task-worker關係的優先順序依次為:盡量避免同類task在同一work和supervisor下的情況(避免資源爭用,例如多個kafka_reader在同乙個worker,大量拉取,會爭搶cpu,頻寬資源),盡量保證task在worker和supervisor基準上平均分配,盡量保證有直接資訊流傳輸的task在同一worker下(避免程序通訊,程序間的網路通訊還需要進行序列化與反序列化操作,這些降低了吞吐率);
task.on
.differ
.node=false
topology_nums=1
topology_level=1
workers=6
spout.parallel=6
bolt_0.parallel=6
acker.executors=6
worker12
3456
spout-task11
1111
bolt0-task11
1111
acker-task11
1111
**當有supervisor超過6個時,worker會平均分配到每乙個**
###集群元件變化對排程的影響 1. 增加superivsor,不影響已有拓撲任務排程 2. 殺死worker,重啟worker,且排程正常 3. 殺死supervisor,拓撲繼續跑,一切正常 4. 其中一台機子宕機,之前該機子跑的task將重新參與排程,排程結果符合要求 5. 增加supervisor,再rebalance,新增加的supervisor會加入任務排程過程**例子:
com
.alipay
.dw.jstorm
.example
.userdefined
.scheduler
.userdefinedworkertopology
user.worker
.num=1
#設定work數量
1_worker_hostname=glowd.ali
.com
#指定supervisor的位址
1_worker_port=6801
#指定supervisor位址想要適配的worker埠號
1_worker_mem=10
#worker的記憶體
1_worker_cpu=2
#worker的cpu占用
1_worker_jvm=2
#worker的jvm占用
1_worker_component=__acker:1
;kafka_reader:2 #worker中執行的所有元件
builder.setbolt(topologydef.analysis_component, new analysisbolt(), 3).localorshufflegrouping(topologydef.kafka_reader_component).addconfiguration("task.on.differ.node", "true");
此處將topologydef.analysis_component強制分配到不同的superviser的worker中執行。如果此拓撲配置的worker數量小於3,或者superviser小於3,無法進行排程分配,因為和task.on.differ.node相互矛盾 關於Storm與JStorm的排程演算法的討論
簡介 storm有4個排程器 defaultscheduler isolationscheduler multitenantscheduler ras jstorm只有乙個排程器,但是其擁有4種模式 defaultscheduler isolationscheduler user defined s...
Jstorm最佳實踐
在實際計算中,常常發現需要做資料訂正,因此在設計整個專案時,需要考慮重跑功能 如果使用trasaction時,增加kafka meta時,brokerid要按順序,即新增機器brokerid要比之前的都要大,這樣reassign spout消費brokerid時就不會發生錯位。非事務環境中,盡量使用...
JStorm平台搭建
簡易版可以參考 mvn package assembly assembly會在工程目錄下生成乙個檔案,打包在伺服器上解壓縮,按照上述步驟執行即可。you can download a jstorm release 出現上述問題是因為我們的目錄下缺少release檔案。放乙個進去就好。請不要忘記修改s...