Jstorm调度规则

简介: Jstorm调度规则

调度细则

1.任务调度算法以worker为维度;
2.调度过程中正在进行的调度动作不会对已发生的调度动作产生影响;
3.调度过程中用户可以自定义 useDefined Assignment,和使用已有的old Assignment,这两者的优先级是:useDefined Assignment>old Assignment;
4.用户可以设置task.on.differ.node参数,强制要求同组件的task分布到不同supervisor上;
5.worker只会被唯一的拓扑使用
6.在启动supervisor时,worker不会启动,只有在有Task时才会启动,每个拓扑可以指定worker的资源占用

默认调度算法

1.以worker为维度,尽量将worker平均分配到各个supervisor上;(让Worker获取尽量多的资源)
2.以worker为单位,确认worker与task数目大致的对应关系(注意在这之前已经其他拓扑占用利用的worker不再参与本次动作);
3.建立task-worker关系的优先级依次为:尽量避免同类task在同一work和supervisor下的情况(避免资源争用,例如多个kafka_reader在同一个worker,大量拉取,会争抢CPU,带宽资源),尽量保证task在worker和supervisor基准上平均分配,尽量保证有直接信息流传输的task在同一worker下(避免进程通信,进程间的网络通信还需要进行序列化与反序列化操作,这些降低了吞吐率);

Worker资源足够,调度分配

task.on.differ.node=false
topology_nums=1
topology_level=1
workers=6
spout.parallel=6
bolt_0.parallel=6
acker.executors=6
Worker 1 2 3 4 5 6
Worker 1 2 3 4 5 6
spout-task 1 1 1 1 1 1
Bolt0-task 1 1 1 1 1 1
acker-task 1 1 1 1 1 1

当有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中运行的所有组件

task.on.differ.node

    builder.setBolt(TopologyDef.ANALYSIS_COMPONENT, new AnalysisBolt(), 3).localOrShuffleGrouping(TopologyDef.KAFKA_READER_COMPONENT).addConfiguration("task.on.differ.node", "true");

1
此处将TopologyDef.ANALYSIS_COMPONENT强制分配到不同的superviser的worker中执行。如果此拓扑配置的Worker数量小于3,或者superviser小于3,无法进行调度分配,因为和task.on.differ.node相互矛盾

作者:glowd
原文:https://blog.csdn.net/zengqiang1/article/details/78444872
版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章
|
存储 安全 Unix
一文带你了解服务器!
一文带你了解服务器!
1737 1
|
NoSQL Java 关系型数据库
BAT最新java800+合集面试复盘,能掌握80%就去进BATJTMD
金三银四俗称跳槽黄金期,很多同学都想趁着这段时间拿高薪,去更牛逼的公司工作,认识更多大牛,提升自己的职场竞争力。 那怎样才能通T面试官的考核?怎样成为一名Offer收割机? 之前讲过收割Offer有一个最直接的公示:Offer=硬实过BAT面试官的考核?怎样成为一名Offer收割机? 之前讲过收割Offer有一个最直接的公示:Offer=硬实力*软实力*好的心态,三者缺一不可。
|
运维 负载均衡 测试技术
分布式基本概念-02
分布式基本概念-02
143 4
|
10月前
|
存储 人工智能 Cloud Native
“爆款”批量生成,如何实现一键创作 AI 有声绘本?
有声读物作为备受欢迎的内容形式之一,已在教育、影视、文化及娱乐等多个领域广泛应用。本方案通过云原生应用开发平台 CAP、函数计算 FC 和百炼模型服务,实现了有声绘本读物的自动化创作,解决了传统制作中步骤繁琐、周期长和高技术门槛的问题,显著提高了创作效率。
389 19
|
存储 C语言 C++
如何通过指针作为函数参数来实现函数的返回多个值
在C语言中,可以通过将指针作为函数参数来实现函数返回多个值。调用函数时,传递变量的地址,函数内部通过修改指针所指向的内存来改变原变量的值,从而实现多值返回。
|
开发框架 .NET 测试技术
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
本文介绍了 `.NET 9` 中新推出的 `Microsoft.AspNetCore.OpenApi` 包,该包旨在为 `ASP.NET Core` 应用程序生成 `OpenAPI` 文档。文章对比了 `NSwag` 和 `Swashbuckle.AspNetCore` 两大现有库,探讨了新包的优势和不足,特别是在性能和功能方面。尽管新包在某些方面尚不及成熟库完善,但其对原生 `AoT` 编译的支持和未来的扩展潜力使其成为一个值得考虑的选择。文章还提供了详细的性能测试数据和优化建议,适合对 `OpenAPI` 文档生成感兴趣的开发者阅读。
688 4
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
|
Java API 持续交付
apache nifi 如何进行二次开发?
【10月更文挑战第23天】apache nifi 如何进行二次开发?
611 2
|
Rust 安全 开发者
Rust 问题之Rust-analyzer 提供了哪些功能来辅助编写 Rust 代码
Rust 问题之Rust-analyzer 提供了哪些功能来辅助编写 Rust 代码
317 0
|
存储 算法 安全
Linux命令sha512sum详解
`sha512sum`是Linux中用于计算文件SHA-512哈希值的工具,确保数据完整性和安全。它生成的128字符哈希对微小内容变化敏感,不可逆。命令行用法如`sha512sum [-bc] 文件名`,-b处理二进制,-c检查哈希匹配。可用于文件完整性验证、软件分发检查。例如,`sha512sum file.txt`计算哈希,`sha512sum -c checksums.txt`验证文件。注意哈希值长度和安全性限制。
|
存储 API 开发工具
oss数据解密与下载
阿里云OSS提供服务器端加密(SSE-OSS/SSE-KMS)功能,保证静态数据安全。下载加密对象时,OSS自动解密并返回原始内容。确保下载请求者有相应权限,尤其是使用SSE-KMS时。可通过SDK、图形化工具或编程框架集成下载,发起请求时,OSS自动处理解密,客户端接收解密后的数据。权限、下载方式选择及请求发起是关键步骤。
534 1