于流处理框架,在先前的文章汇总已经介绍过Strom,今天学习的是来自阿里的的流处理框架JStorm。简单的概述Storm就是:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变可以运行在JStorm上。直白的将JStorm是阿里巴巴的团队基于Storm的二次开发产物,相当于他们的Tengine是基于Ngix开发的一样。
阿里拥有自己的实时计算引擎
-
类似于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运行在不同线程
具体如何实现,请参考本ID的的博文系列 【jstorm-源码解析】
http://my.oschina.net/infiniteSpace/blog/308401
相关推荐
Storm组件和Hadoop组件对比StormHadoop角色NimbusJobTrackerSupervisorTaskTrackerWorkerChild应用名称TopologyJob编程接口Spout/BoltMapper/Reducer 优点 在Storm和JStorm出现以前,市面上出现很多实时计算引擎,...
jstorm storm 入门demo,包含本地模式 和 集群模式。小小的demo,仅包含4个class。
JStorm是参考storm的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用。经过4年发展,阿里巴巴JStorm集群已经成为世界上最大的集群之一,基于JStorm的应用数量...
新版本2.4.0,最新编译的 jstorm2.4.0包,大数据流式计算必备工具。
jstorm 2.1.1 javadoc
Storm 源码分析 - 李明,王晓鹏
storm-core-1.0.3-sources.jar 源码文件,1.0.3版本
storm+kafka jar包 ,curator-client-2.8.0、curator-framework-2.8.0、curator-recipes-2.8.0、guava-18.0、kafka_2.9.2-0.8.2.2、metrics-core-2.2.0、scala-library-2.10.4、storm-kafka-0.9.2-incubating、...
全套storm资料初学者必备 比较全面的storm课程PPT 全套storm课程PPT
阿里jstorm生态,JStorm基础入门,讲解详细,阐述清晰,适合新手看
jstorm2.2.1 执行步骤: 1. 本地正确安装maven 2. 本地正确安装zookeeper,并启动 3. Idea导入项目源码,以maven形式 4. 执行mvn clean compile 4. 可分别运行random或wordcount下topology下的main类
JStorm原始码学习:主要包含Storm重新启动,Nimbus启动,Supervisor启动,Executor创建和启动 风暴编程模型 Nimbus:负责资源分配和任务调度。 主管:负责接受nimbus分配的任务,启动和停止属于自己管理的worker...
0-检查gcc,python版本:python -V,要有gcc-c++ 1-jdk安装 2-解压缩zk 3-安装zeromq configure: error: cannot link with -luuid, install uuid-dev rpm -ivh uuid-1.6.1-10.el6.x86_64.rpm ...修改/etc/hosts,storm.yaml
大数据各类开源软件版本管理(kafka,redis,elasticsearch,storm,jstorm....)
08.storm-kafka 详解和实战案例 09.S图表框架HighCharts介绍 10.HBase快速入门 11.基于HBase的Dao基类和实现类开发一 12.基于HBase的Dao基类和实现类开发二 13.项目1-地区销售额-需求分析和架构设计 14.项目1-地区...
Flink China 社区线下 Meetup·北京站 PPT 资料分享 【04 张光辉】Jstorm-_Flink 迁移实践
08.storm-kafka 详解和实战案例 09.S图表框架HighCharts介绍 10.HBase快速入门 11.基于HBase的Dao基类和实现类开发一 12.基于HBase的Dao基类和实现类开发二 13.项目1-地区销售额-需求分析和架构设计 14.项目1-地区...
08.storm-kafka 详解和实战案例 09.S图表框架HighCharts介绍 10.HBase快速入门 11.基于HBase的Dao基类和实现类开发一 12.基于HBase的Dao基类和实现类开发二 13.项目1-地区销售额-需求分析和架构设计 14.项目1-地区...
08.storm-kafka 详解和实战案例 09.S图表框架HighCharts介绍 10.HBase快速入门 11.基于HBase的Dao基类和实现类开发一 12.基于HBase的Dao基类和实现类开发二 13.项目1-地区销售额-需求分析和架构设计 14.项目1-地区...