Storm 和JStorm

关于流处理框架,在先前的文章汇总已经介绍过Strom,今天学习的是来自阿里的的流处理框架JStorm。简单的概述Storm就是:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变可以运行在JStorm上。直白的将JStorm是阿里巴巴的团队基于Storm的二次开发产物,相当于他们的Tengine是基于Ngix开发的一样。以下为阿里巴巴团队放弃直接使用Storm选择自行开发JStorm的原因:

阿里拥有自己的实时计算引擎

  1. 类似于hadoop 中的MR
  2. 开源storm响应太慢
  3. 开源社区的速度完全跟不上Ali的需求
  4. 降低未来运维成本
  5. 提供更多技术支持,加快内部业务响应速度

现有Storm无法满足一些需求

  1. 现有storm调度太简单粗暴,无法定制化
  2. Storm 任务分配不平衡
  3. RPC OOM一直没有解决
  4. 监控太简单
  5. 对ZK 访问频繁

JStorm相比Storm更稳定

  1. Nimbus 实现HA:当一台nimbus挂了,自动热切到备份nimbus
  2. 原生Storm RPC:Zeromq 使用堆外内存,导致OS 内存不够,Netty 导致OOM;JStorm底层RPC 采用netty + disruptor保证发送速度和接受速度是匹配的
  3. 新上线的任务不会冲击老的任务:新调度从cpu,memory,disk,net 四个角度对任务进行分配,已经分配好的新任务,无需去抢占老任务的cpu,memory,disk和net
  4. Supervisor主线
  5. Spout/Bolt 的open/prepar
  6. 所有IO, 序列化,反序列化
  7. 减少对ZK的访问量:去掉大量无用的watch;task的心跳时间延长一倍;Task心跳检测无需全ZK扫描。

JStorm相比Storm调度更强大

  1. 彻底解决了storm 任务分配不均衡问题
  2. 从4个维度进行任务分配:CPU、Memory、Disk、Net
  3. 默认一个task,一个cpu slot。当task消耗更多的cpu时,可以申请更多cpu slot
  4. 默认一个task,一个memory slot。当task需要更多内存时,可以申请更多内存slot
  5. 默认task,不申请disk slot。当task 磁盘IO较重时,可以申请disk slot
  6. 可以强制某个component的task 运行在不同的节点上
  7. 可以强制topology运行在单独一个节点上
  8. 可以自定义任务分配,提前预约任务分配到哪台机器上,哪个端口,多少个cpu slot,多少内存,是否申请磁盘
  9. 可以预约上一次成功运行时的任务分配,上次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%

性能提升的原因:

  1. Zeromq 减少一次内存拷贝
  2. 增加反序列化线程
  3. 重写采样代码,大幅减少采样影响
  4. 优化ack代码
  5. 优化缓冲map性能
  6. Java 比clojure更底层

JStorm的其他优化点

  1. 资源隔离。不同部门,使用不同的组名,每个组有自己的Quato;不同组的资源隔离;采用cgroups 硬隔离
  2. Classloader。解决应用的类和Jstorm的类发生冲突,应用的类在自己的类空间中
  3. Task 内部异步化。Worker 内部全流水线模式,Spout nextTuple和ack/fail运行在不同线程

具体如何实现,请参考本ID的的博文系列  【jstorm-源码解析】

时间: 2024-09-29 17:19:38

Storm 和JStorm的相关文章

Storm和JStorm(阿里的流处理框架)

来自阿里的流处理框架:JStorm 关于流处理框架,在先前的文章汇总已经介绍过Strom,今天学习的是来自阿里的的流处理框架JStorm.简单的概述JStorm就是:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变可以运行在JStorm上.直白的讲JStorm是阿里巴巴的团队基于Storm的二次开发产物,相当于他们的Tengine是基于Nginx开发的一样.以下为阿里巴巴团队放弃直接使用Storm选择自行开发JStorm的原因: 阿里拥有自己的实时计算引擎 类似

分布式实时日志系统(一)环境搭建之 Jstorm 集群搭建过程/Jstorm集群一键安装部署

最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式处理,采用 flume 收集日志,发送到 kafka 队列做缓冲,storm 分布式实时框架进行消费处理,短期数据落地到 hbase.mongo中,长期数据进入 hadoop 中存储. 接下来打算将这其间所遇到的问题.学习到的知识记录整理下,作为备忘,作为分享,带给需要的人. 淘宝开源了许多产品组件

jstorm集群部署

Install JStorm Take jstorm-0.9.6.zip as an example unzip jstorm-0.9.6.1.zip vi ~/.bashrc export JSTORM_HOME=/XXXXX/XXXX export PATH=$PATH:$JSTORM_HOME/bin vi $JSTORM_HOME/conf/storm.yaml storm.zookeeper.servers: - "192.168.144.79" - "192.16

zookeeper,kafka,jstorm,memcached,mysql流式数据处理平台部署

一.平台环境介绍: 1.系统信息: 项目 信息 系统版本: Ubuntu14.04.2 LTS \n \l 用户: ***** 密码: ****** Java环境: openjdk-7-jre 语言: en_US.UTF-8,en_US:en 磁盘: 每台vda为系统盘(50G),vdb为数据盘(200G)挂载于/storage目录 hcloud15最为DB,第二块磁盘为2000G 主机范围: 192.168.21.7~192.168.21.15,192.168.21.17,192.168.21

[转]JStorm介绍

一.简介 Storm是开源的分布式容错实时计算系统,目前被托管在GitHub上,遵循 Eclipse Public License 1.0.最初由BackType开发,现在已被Twitter收入麾下.Storm最新版本是Storm 0.9,核心采用Clojure实现.Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息:Storm也可被用于“连续计算”(continuous computation),对数据流做连续处理,在计算时就将结果以流的形式输出给用户:它还可被

Storm调度

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h1 { margin-top: 5.0000pt; margin-bottom: 5.0000pt; text-align: left; font-family: 宋体; font-weight: bold; font-size: 24.0000pt } span

JStorm 是一个分布式实时计算引擎

alibaba/jstorm JStorm 是一个分布式实时计算引擎. JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个worker 发生意外故障, 调度器立即分配一个新的worker替换这个失效的worker. 因此,从应用的角度,JStorm 应用是一种遵守某种编程规范的分布式应用.从系统角度, JStorm一套类似MapReduc

在虚拟机搭建JStrom

原文:http://blog.csdn.net/u014134180/article/details/51810311 一 安装步骤 二 搭建Zookeeper集群 1 ZooKeeper 单机安装与配置 11 下载zookeeper安装包 12 解压zookeeper安装包 13 设置环境变量 14 配置zoocfg 15 启动zookeeper 三 搭建JStorm集群 1 安装Python 26 2 安装JDK 17 版本 3 安装JStorm 31 配置JSTORM_HOMEconfst

(TopkOnJstorm)第二周工作报告:2014-07-14~2014-07~20

本周的工作分两个部分 一:搭建JStorm环境(三个机器组成的集群) 由于微软AZure的虚拟机还没有申请下来,我先在实验室的环境下搭建了 1. 搭建Zookeeper集群 a) 下载Zookeeper的3.4.5版本,解压至/xxx/xxx/zookeeper-3.4.5 b) 配置环境变量(在~/.bashrc) export ZOOKEEPER_HOME=/xxx/xxx/zookeeper-3.4.5 export PATH=$PATH:$HOME/bin:$ZOOKEEPER_HOME