Storm 和JStorm
来源:互联网 发布:千古忠佞有谁知知乎 编辑:程序博客网 时间:2024/06/05 02:17
JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变可以运行在JStorm上。直白的将JStorm是阿里巴巴的团队基于Storm的二次开发产物。
阿里拥有自己的实时计算引擎
类似于hadoop 中的MR
开源storm响应太慢
开源社区的速度完全跟不上Ali的需求
降低未来运维成本
提供更多技术支持,加快内部业务响应速度
现有Storm无法满足一些需求
现有storm调度太简单粗暴,无法定制化
Storm 任务分配不平衡
RPC OOM一直没有解决
监控太简单
对ZK 访问频繁
JStorm相比Storm更稳定
Nimbus 实现HA:当一台nimbus挂了,自动热切到备份nimbus
原生Storm RPC:Zeromq 使用堆外内存,导致OS 内存不够,Netty 导致OOM;JStorm底层RPC 采用netty + disruptor保证发送速度和接受速度是匹配的
新上线的任务不会冲击老的任务:新调度从cpu,memory,disk,net 四个角度对任务进行分配,已经分配好的新任务,无需去抢占老任务的cpu,memory,disk和net
Supervisor主线
Spout/Bolt 的open/prepar
所有IO, 序列化,反序列化
减少对ZK的访问量:去掉大量无用的watch;task的心跳时间延长一倍;Task心跳检测无需全ZK扫描。
JStorm相比Storm调度更强大
彻底解决了storm 任务分配不均衡问题
从4个维度进行任务分配:CPU、Memory、Disk、Net
默认一个task,一个cpu slot。当task消耗更多的cpu时,可以申请更多cpu slot
默认一个task,一个memory slot。当task需要更多内存时,可以申请更多内存slot
默认task,不申请disk slot。当task 磁盘IO较重时,可以申请disk slot
可以强制某个component的task 运行在不同的节点上
可以强制topology运行在单独一个节点上
可以自定义任务分配,提前预约任务分配到哪台机器上,哪个端口,多少个cpu slot,多少内存,是否申请磁盘
可以预约上一次成功运行时的任务分配,上次task分配了什么资源,这次还是使用这些资源
JStorm相比Storm性能更好
JStorm 0.9.0 性能非常的好,使用netty时单worker 发送最大速度为11万QPS,使用zeromq时,最大速度为12万QPS。
JStorm 0.9.0 在使用Netty的情况下,比Storm 0.9.0 使用netty情况下,快10%, 并且JStorm netty是稳定的而Storm 的Netty是不稳定的
在使用ZeroMQ的情况下, JStorm 0.9.0 比Storm 0.9.0 快30%
性能提升的原因:
Zeromq 减少一次内存拷贝
增加反序列化线程
重写采样代码,大幅减少采样影响
优化ack代码
优化缓冲map性能
Java 比clojure更底层
JStorm的其他优化点
资源隔离。不同部门,使用不同的组名,每个组有自己的Quato;不同组的资源隔离;采用cgroups 硬隔离
Classloader。解决应用的类和Jstorm的类发生冲突,应用的类在自己的类空间中
Task 内部异步化。Worker 内部全流水线模式,Spout nextTuple和ack/fail运行在不同线程
- Storm 和JStorm
- Storm 和JStorm
- Storm 和JStorm
- JStorm和Storm比较
- Jstorm-------storm.yaml配置
- JStorm Storm 上手demo
- JStorm Storm 上手demo
- storm/jstorm 相关命令
- jstorm、storm 常见问题
- Jstorm vs Storm
- storm、jstorm 调研系列 (二)---jstorm的集群框架和数据流模型
- 大数据实时处理storm,jstorm
- storm、jstorm调研系列 (三)-----jstorm 代码例子和解读(自己写的代码,可以运行)
- Jstorm与Storm中的并行度区分
- JStorm/Storm的调试:本地运行模式
- Storm/JStorm之TopologyBuilder源码阅读
- Storm/JStorm之Topology提交过程
- JStorm/Storm源码解读(二)--启动篇
- 在Eclipse中使用JUnit4进行单元测试(中级篇)
- Thread和Service应用场合的区别
- iOS 判断控制器是不是当前显示的控制器
- Android技术——高级UI:视图拖拽(上)
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- Storm 和JStorm
- Java关键字final、static使用总
- 9个最好用的JavaScript开发工具和代码编辑器
- 关于android来电监听产生可移动悬浮窗结果产生多个悬浮窗的问题。
- 大数据量下的分页解决方法
- eclipse 下查看jdk源码
- 面试题之二
- 关于listView的item失去焦点不能点击
- kafka的配置