Jstorm排程規則

2021-08-10 07:54:30 字數 2161 閱讀 9065

任務排程演算法以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...