JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变可以运行在JStorm上。直白的将JStorm是阿里巴巴的团队基于Storm的二次开发产物,相当于他们的Tengine是基于Ngix开发的一样。以下为阿里巴巴团队放弃直接使用Storm选择自行开发JStorm的原因:
阿里拥有自己的实时计算引擎
- 类似于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运行在不同线程
jstorm 是阿里巴巴开源的基于storm采用Java重写的一套分布式实时流计算框架,使用简单,特点如下:
- 开发非常迅速: 接口简单,容易上手,只要遵守Topology,Spout, Bolt的编程规范即可开发出一个扩展性极好的应用,底层rpc,worker之间冗余,数据分流之类的动作完全不用考虑。
- 扩展性极好:当一级处理单元速度,直接配置一下并发数,即可线性扩展性能
- 健壮:当worker失效或机器出现故障时, 自动分配新的worker替换失效worker
- 数据准确性: 可以采用Acker机制,保证数据不丢失。 如果对精度有更多一步要求,采用事务机制,保证数据准确。
为什么要选择jstorm,而不采用twitter的storm呢?jstorm对比storm有如下优点:
- Nimbus 实现HA
- 彻底解决Storm雪崩问题:底层RPC采用netty + disruptor保证发送速度和接受速度是匹配的
- 新增supervisor、Supervisor shutdown时、提交新任务,worker数不够时,均不自动触发任务rebalance
- 新topology不影响现有任务,新任务无需去抢占老任务的cpu,memory,disk和net
- 减少对ZK的访问量:去掉大量无用的watch;task的心跳时间延长一倍;Task心跳检测无需全ZK扫描
- Worker 内部全流水线模式:Spout nextTuple和ack/fail运行在不同线程
- 性能:采用ZeroMq, 比storm快30%;采用netty时, 和storm快10%,并且稳定非常多
总之,Jstorm 比Storm 更稳定,功能更强大,更快。而且Storm上跑的程序可以一行代码不变运行在Jstorm上,零成本,推荐所有使用storm的兄弟们搭建个jstorm集群缓过来。
相关推荐
《阿里巴巴JStorm详解》 阿里巴巴JStorm是一款由阿里巴巴开源的分布式实时计算系统,它基于Apache Storm,但在性能、稳定性、易用性等多个方面进行了优化,是大数据处理领域的重要工具之一。JStorm的设计理念是...
《JStorm阿里巴巴官方文档》是全面了解和学习阿里巴巴开源分布式计算框架JStorm的重要参考资料。JStorm是由阿里巴巴集团研发的一款高效、稳定、易用的实时计算系统,它在处理大规模数据流方面表现出色,广泛应用于...
JStorm是参考storm的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被...经过4年发展,阿里巴巴JStorm集群已经成为世界上最大的集群之一,基于JStorm的应用数量超过1000个。 6198}
《阿里巴巴实时计算平台_JStorm_Turbo:构建电子世界贸易平台的安全分析与防御》 阿里巴巴实时计算平台JStorm_Turbo是大型数据流处理的重要工具,由阿里巴巴资深专家封仲淹(Longda)领导的团队负责开发和维护。该...
JStorm 是一个分布式实时计算引擎。 JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且... 标签:阿里巴巴 分布式 hadoop
基于Apache Storm的基础之上,阿里巴巴内部开发出了JStorm这一分支,经过多个版本的迭代升级,最终形成了当前的JStormTurbo。 #### 二、业务场景 阿里巴巴实时计算平台服务于众多业务场景,其中包括但不限于以下几...
JStorm是由阿里巴巴开发的分布式实时计算引擎,它是基于Apache Storm的一个增强版本。JStorm的设计目标是提供比Storm更高的稳定性、更强的功能和更快的计算性能。这个技术分享主要涵盖了JStorm的背景、特性、优势...
在阿里巴巴,JStorm已经发展成为世界上最大的流计算集群之一,每天处理的消息量极为庞大。 3. **Dubbo**:Dubbo是一款高性能的服务框架,通过RPC实现服务的输入和输出。它与Spring框架集成良好,支持分布式应用,...
阿里巴巴的10款开源项目 阿里巴巴的10款开源项目涵盖了多个领域,包括框架、服务框架、JavaScript 框架、AOP 框架、数据访问框架、Web 框架、MVC 框架、Canvas 图形框架、NodeJs 框架、数据库连接池、JSON 解析器、...
2. **Jstrom**:JStorm是基于Apache Storm的实时流处理框架,优化了网络IO、线程模型等,已被广泛应用于阿里巴巴集团,处理海量数据。JStorm在2015年成为Apache Storm的子项目,为实时大数据处理提供强大支持。 3. ...
2. 阿里巴巴中的应用:文档强调了阿里巴巴在jstorm应用方面的发展,包括其在阿里云大规模部署的案例。阿里巴巴使用了超过1600台机器,部署了70K个jstorm应用,并处理了超过2万亿条消息,以及1.5PB的数据。这展示了...
JStorm是由阿里巴巴开源的一个分布式实时计算框架,类似于Apache Storm但经过了阿里巴巴团队的优化和改进,具有更好的性能和稳定性。JStorm的核心目标在于提供一个高效、可靠且易于使用的平台,用于处理大规模的实时...
阿里巴巴开发手册1.3:阿里Java技术团队一手打造出Dubbo、JStorm、Fastjson等诸多流行开源框架,部分已成为Apache基金会孵化项目; 阿里在Java后端领域支撑起全球访问量最大的服务器集群; Java代码构建的阿里双11...
JStorm是阿里巴巴开源的一个分布式实时计算系统,它基于Apache Storm,但提供了更稳定、高性能以及易用的特性。这个demo可能是为了帮助初学者了解如何在JStorm和Storm上构建并运行简单的数据流处理任务。 **描述...
首先,JStorm是阿里巴巴开源的一个分布式实时计算系统,它是基于Twitter的Storm而开发的,具有高可用性、低延迟和容错性强等特点。JStorm允许开发者构建实时数据处理管道,处理海量数据流,非常适合大规模的实时业务...
标题《JStorm生态》和描述《阿里jstorm生态,JStorm基础入门,讲解详细,阐述清晰,适合新手看》表明,本文主要围绕阿里巴巴开源的大规模实时数据处理系统JStorm进行讲解。JStorm是基于Apache Storm的一个分支,主要...
JStorm是阿里巴巴开源的一款分布式实时计算系统,它基于Apache Storm并进行了大量的优化,提供了一种高效、稳定且易用的流处理框架。JStorm 2.1.1是其一个重要的版本,此版本的API为开发者提供了丰富的功能和便利的...
JStorm是阿里巴巴开源的一款分布式实时计算系统,它是基于Apache Storm的一个高性能、高可用、热扩展的实时处理框架。JStorm的核心设计理念是简单、高效和稳定,能够处理大规模的数据流处理任务,广泛应用于广告推荐...
JStorm是阿里巴巴开源的一款高性能、高可靠的分布式实时计算系统,它基于Apache Storm并针对大规模数据处理进行了优化。JStorm 2.2.1是该框架的一个稳定版本,提供了许多关键特性与改进,为大数据处理提供了强大的...