jstorm之于storm

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

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

  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运行在不同线程

原文:https://my.oschina.net/infiniteSpace/blog/308401

时间: 2024-10-09 01:59:02

jstorm之于storm的相关文章

Storm高级属性

之前写了2篇文章讲述了Storm的基本知识.最近也学习了Storm的高级属性了,单纯粹还是属于了解的状态.我就简单介绍几个比较简单的属性. 1.DRPC.简称分布式RPC,模型图: 用户直接面对的是DRPC Server,避开了所有的拓扑逻辑,Storm提供了一个名为LinearDRPCTopologyBuilder的线性拓扑构建器,他把DRPC所做的几乎所有步骤都自动实现了.本地模式的代码例子如下: LocalDRPC drpc = new LocalDRPC(); LocalCluster

[转]JStorm介绍

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

jstorm简介(转)

Jstorm是参考storm的实时流式计算框架,在网络IO.线程模型.资源调度.可用性及稳定性上做了持续改进,已被越来越多企业使用 作为commiter和user,我还是非常看好它的应用前景,下面是在团队内的分享介绍,更多请参考https://github.com/alibaba/jstorm 一.jstorm是什么 jstorm可以看作是storm的java增强版本,除了内核用纯java实现外,还包括了thrift.python.facet ui.从架构上看,其本质是一个基于zk的分布式调度系

zookeeper+jstorm的集群搭建

zookeeper的配置: zookeeper有三种配置方式:单机式/伪分布式/集群式 其中伪分布式是在一台电脑上通过不同的端口来模拟分布式情形,需要N份配置文件和启动程序,而集群式是多个zookeeper程序. 首先通过sftp等方式获取tar包,解压到指定的目录:/usr/local/java 下,生成目录zookeeper-3.3.6: 配置环境变量(注意路径后面千万不要有空格,路径之前,与等号之间也不要有空格.): vi /etc/profile #zk ZOOKEEPER_HOME=/

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

阿里巴巴73款开源产品列表,值得收藏

一.框架 react-web:ReadtWeb 是为那些使用 React Native 兼容的 API 构建的 Web 应用而提供的一个框架.React Web的目的及意义非常明确: 让 React Native 代码跑在 Web上让一套代码运行在各个移动终端,对前端及业务来说,这是开发效率中一个质的提升. Jstrom:"JStorm是参考 storm 的实时流式计算框架,在网络 IO.线程模型.资源调度.可用性及稳定性上做了持续改进,已被越来越多企业使用.经过 4年发展,阿里巴巴 JStor

2016阿里巴巴73款开源产品全向图

摘要: 受益开源,就当回馈.面对阿里头顶上“贡献开源软件数目第一”的光环,我们清醒地认知阿里开源的目的:阿里开源不是到业内“秀肌肉”,更不是自卖自夸:阿里之所以选择开源是因为开源是孵化新技术领域的容器,更是技术演进的最大推动力. 阿里巴巴集团已经开源 115 个项目,加入 FSF 基金会.Apache 基金会.Linux 基金会和 Xen 的顾问团队,并在云栖大会北京峰会宣布 AliSQL 开源. 为了让大家能更好,更全面的了解和应用上阿里开源项目, 云栖社区特别制作了一张“2016 阿里开源全

大数据处理框架

说起大数据处理啊,一切都起源于Google公司的经典论文.在当时(2000年左右),由于网页数量急剧增加,Google公司内部平时要编写很多的程序来处理大量的原始数据:爬虫爬到的网页.网页请求日志:计算各种类型的派生数据:倒排索引.网页的各种图结构等等.这些计算在概念上很容易理解,但由于输入数据量很大,单机难以处理.所以需要利用分布式的方式完成计算,并且需要考虑如何进行并行计算.分配数据和处理失败等等问题. 针对这些复杂的问题,Google决定设计一套抽象模型来执行这些简单计算,并隐藏并发.容错

JStorm Storm 上手demo

折线之间的内容整理自:http://blog.csdn.net/suifeng3051/article/details/38369689 -------------------------------------------------------------------------------------------------------------------------------------------- 在全面介绍Storm之前,我们先通过一个简单的Demo让大家整体感受一下什么是S