Storm 和JStorm该如何理解

云计算

这篇文章给大家介绍  Storm 和JStorm该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

简单的概述Storm就是:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变可以运行在JStorm上。直白的将JStorm是阿里巴巴的团队基于Storm的二次开发产物,相当于他们的Tengine是基于Ngix开发的一样。

现有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%%uFF0C 并且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该如何理解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

更多关于云服务器域名注册虚拟主机的问题,请访问西部数码官网:www.west.cn

赞(0)
声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-62778877-8306;邮箱:fanjiao@west.cn。本站原创内容未经允许不得转载,或转载时需注明出处:西部数码知识库 » Storm 和JStorm该如何理解

登录

找回密码

注册