Jstorm调度规则
来源:互联网 发布:三星数据恢复软件大师 编辑:程序博客网 时间:2024/05/20 09:26
调度细则
- 任务调度算法以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下(避免进程通信,进程间的网络通信还需要进行序列化与反序列化操作,这些降低了吞吐率);
Worker资源足够,调度分配
task.on.differ.node=falsetopology_nums=1topology_level=1workers=6spout.parallel=6bolt_0.parallel=6acker.executors=6
**当有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");
此处将TopologyDef.ANALYSIS_COMPONENT强制分配到不同的superviser的worker中执行。如果此拓扑配置的Worker数量小于3,或者superviser小于3,无法进行调度分配,因为和task.on.differ.node相互矛盾
阅读全文
0 0
- Jstorm调度规则
- JStorm之Topology调度
- jstorm任务调度总结
- Jstorm 调度硬件资源cgroups
- jstorm
- jstorm
- Jstorm
- Jstorm
- JStorm
- 关于Storm与JStorm的调度算法的讨论
- 关于Storm与JStorm的调度算法的讨论
- JStorm与Storm源码分析(三)--Scheduler,调度器
- JStorm与Storm源码分析(三)--Scheduler,调度器
- 动态规则装配线调度
- CCScheduler调度器调度规则心得
- JStorm与Storm源码分析(四)--均衡调度器,EvenScheduler
- linux任务调度crontab时间规则
- 规则引擎如何实现生产调度系统
- C语言的socket封装库-waisock编程简介
- 进程共享内核对象之 复制内核对象句柄
- Spring MVC +Spring + Mybatis 构建分库分表总结 SSM搭建以及分库分表的实现
- java中数组列表集合之间的转换
- 访问控制列表ACL
- Jstorm调度规则
- MyBatis实现Mysql数据库分库分表操作和总结
- markdown的学习
- STL模拟实现迭代器
- IPv6配置与部署
- rn 踩坑系列 Xcode Command /bin/sh failed with exit code 1
- JS学习之前端简单注册页面
- java数组练习
- 线程池