Storm近年的发展
storm作为第一款大数据领域的流式计算引擎,在2013年推出之后风头一时无二。后续虽然有spark streaming也作为流式计算的引擎,但storm依然在流式计算的江湖占有稳定的地位。直到2017年,flink作为流式计算引擎异军突起,几年间,风云突变,流计算言必谈flink。
诚然,flink对比storm和spark streaming都有很多优势,但作为早期storm的使用者,一直也很想了解storm这些年的发展。
通过梳理storm自己的发版说明,发现storm还是做了很多的事情,比如,支持sql,比如,支持状态,再比如,storm竟然将开发语言从clojure改为了java,可见storm壮士断腕的决心有多大。
但,一旦新的趋势已经成型,则无力回天。目前storm还是能在一些细分领域有自己的一席之地,但流式计算的头把交椅,则只能妄自垂怜了。
storm推出的第一个稳定版本是0.8版,下面从0.9版本看看storm都新增了哪些新的功能。1.0.0、1.1.0和2.0.0版本是几个有重大功能的版本,不过总体上storm的发展已经很缓了,特别是相对flink而言。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0.9
Storm将传输层变得可插拔,改变了原先只有zero mq的局面,可以设置为netty。因为zero mq是native library,容易有兼容性问题,而netty作为java开发的,并且性能是zero mq的2倍(在2013年的时候)。
0.9.2
改进了netty的使用,更好的利用线程、CPU和网络资源,以提高更好的性能。
改善了UI,提供了REST接口,图形化的DAG图。
整合的Kafka Spout。
0.9.3
改进的kafka connector,同时支持hdfs integration和hbase Integration。
通过shaded,解决了用户包和storm包的依赖冲突,比如thrift,netty,guava,httpClient,zk和curator。
0.9.4和0.9.5、0.9.6都是bugfix版本。
0.10.0
安全和多租户,支持kerberos,acl,ssl,以及与hadoop生态其他组件的安全整合,用户的认证和资源隔离。
使用Flux声明topology,相比以往需要以代码描述dag,目前可以单独在文本中描述dag。
流式写入hive,hive 0.13版本支持流式写入,storm自己实现了一个bolt来流式写入hive。
下游整合,支持redis,支持jdbc。
1.0.0,2016年
改进的性能,这个版本的storm比之前的版本要快16倍,延迟减少了60%,即使考虑不同的用户场景和外部服务依赖,对大多数用户场景而言也提供了相比之前3倍的性能。
心跳机制,引入pacemaker来实现server和worker之间的心跳,而不是之前通过zk来进行,当集群规模较大时,zk往往会成为瓶颈。
分布式缓存,支持通过supervisor和hdfs来提供数据分发,用户不用重启作业来更新数据,只需要在命令行操作即可。
Nimbus HA,终于支持HA了,通过运行多个nimbus进程和选举来实现HA。
原生窗口,支持滑动窗口和翻滚窗口,基于事件个数或者时间。
状态支持,支持自动的checkpoint,状态可以被保存在内存或者redis中。
背压监测,之前为了控制spout的速度,只能设置topology.max.spout.pending,目前通过监测task的buffer size,可以动态的控制spout的发射速度。
资源感知调度,通过插件化的storm的调度插件,目前可以支持对内存和cpu的单独设置。
元组抽样和调试,之前用户只能自己去显式的增加调试信息,等到上线时再去掉调试信息,现在storm内嵌了抽样调试功能,只需在UI上就可以操作,元组会被UI显示并保存到磁盘。
动态worker profiling,支持在ui上操作worker的heap dump,jstack outpu和JProfile recording,相应的文件会被保存并可以下载。
1.0.1,1.0.2,1.0.3,1.0.4,1.0.5,1.0.6都是bugfix版本,无重大功能。
1.1.0,2017年3月
流式SQL,通过calcite,storm终于支持了sql,在命令行中利用storm sql操作。
Kafka整合,支持kafka 0.10及以后版本。
PMML支持,通过支持predictive model markup language来支持用训练机器学习中的模型。
其他整合,支持druid,openTsdb,aws kinesis,以及hdfs spout。
Topology提交,之前只支持uber包提交,现在可以通过-jar来指定依赖提交。
1.1.1,1.1.2,1.1.3,都是bugfix版本,无重大功能。
1.2.0,2018年2月
新的metric汇报,storm提供reporter汇报metric到ganglia,graphite,jmx,csv以及console。
1.2.1,1.2.2,1.2.3,都是bugfix版本,无重大功能。
2.0.0,2019年5月
以Java进行重构,storm之前是用clojure写成的,clojure语言成为很多人参加storm社区的障碍,从这里之后,欢迎更多的人参与社区的代码贡献。
更高的性能,通过重构更精简的线程模型、极快的消息传递模型以及轻量级的背压模型,它旨在突破吞吐量、延迟和能耗的界限,同时保持向后兼容性。Apache Storm 2.0 是第一个打破 1 微秒延迟障碍的流媒体引擎。
JVM要求,摈弃了之前的java7,从storm 2.0开始,要求使用java8的环境。
2.1.0,2019年10月
2.2.0,2020年6月
Storm近年的发展的更多相关文章
- Storm(一)Storm的简介与相关概念
一.Storm的简介 官网地址:http://storm.apache.org/ Storm是一个免费开源.分布式.高容错的实时计算系统.Storm令持续不断的流计算变得容易,弥补了Hadoop批处理 ...
- VR与AR的发展趋势分析
概要 你是否想象过与神秘的深海生物近距离接触?你是否梦想过穿戴钢铁侠那样的超先进科技装备成为超级英雄?你又是否幻想过与梦中的女神面对面的交流?这些可能在以前都只能是存在于脑海中的幻想,可是在如今有一项 ...
- 三:基于Storm的实时处理大数据的平台架构设计
一:元数据管理器==>元数据管理器是系统平台的“大脑”,在任务调度中有着重要的作用[1]什么是元数据?--->中介数据,用于描述数据属性的数据.--->具体类型:描述数据结构,数据的 ...
- ElasticSearch详解与优化设计
简介 概念 安装部署 ES安装 数据索引 索引优化 内存优化 1简介 ElasticSearch(简称ES)是一个分布式.Restful的搜索及分析服务器,设计用于分布式计算:能够达到实时搜索,稳定, ...
- BI案例:BI在连锁零售业应用(ZT)【转】
第一部分:连锁零售企业上BI的必要性. 目前国内的连锁零售行业的发展趋势,呈现出产业规模化,经营业态多样化,管理精细化的特点.所谓管理精细化就是"精耕细作搞管理,领先一步订系 统" ...
- BI案例:BI在连锁零售业应用(ZT)
第一部分:连锁零售企业上BI的必要性. 目前国内的连锁零售行业的发展趋势,呈现出产业规模化,经营业态多样化,管理精细化的特点.所谓管理精细化就是"精耕细作搞管理,领先一步订系统". ...
- 我经历的IT公司面试及离职感受(转)
毕业后几年一直待在广州,觉得这是一个比较生活化及务实的城市,其互联网公司和相应的投融资环境都不如北深上活跃,大大小小的面试也有几十个,有点规模的公司应该都面试过了,面试一般会见到主力技术人员,技术主管 ...
- MES制造执行系统启动篇
美国先进制造研究机构(AMR)定义了MES为:"位于上层的计划管理系统与底层的工业控制之间的面向车间层的管理信息系统",它为操作人员/管理人员提供计划的执行.跟踪以及所有资源(人. ...
- Nginx的知识分享,感兴趣的可以看一下
我干了五年了,我想把我的经验跟大家分享一下,欢迎大家阅读. 1. Nginx入门简介 WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. WWW 是 In ...
随机推荐
- JUC学习笔记(二)
JUC学习笔记(一)https://www.cnblogs.com/lm66/p/15118407.html 1.Lock接口 1.1.Synchronized 1.1.1.Synchronized关 ...
- BUUCTF-[SUCTF 2019]CheckIn(.user.ini利用+exif_imagetype绕过)
目录 分析 .user.ini使用条件 解题 参考链接 记一道.user.ini利用+exif_imagetype绕过的文件上传的题. 分析 先正经上传一张图片.回显了存储路径,同时发现还包含了一个i ...
- java 注释,关键字和标识符
注释 注释是为了防止当写代码的时间过久了之后,忘记了这行代码的意思或者是在一个大型的项目里面,不可能每一个模块的功能你都记得,所以需要一个注释来帮助记忆. 注释不会被执行 平时写代码一定要养成写注释的 ...
- OceanBase三节点部署&&扩容
OceanBase三节点部署&&扩容 环境信息搭建三节点(1-1-1)创建资源池和租户查看数据分布 环境信息 IP OB目录 端口 192.168.43.89 /data/observ ...
- 为VIM添加Python扩展
VIM的自带的脚本功能很强,但只能用在VIM自己上,如果让它支持Python脚本,那简直就无敌了,这个想法当然不是我想出来的,应该说英雄所见略同,于是乎vim7.2就内建了对python2.4的支持, ...
- 【MySQL】自定义数据库连接池和开源数据库连接池的使用
数据库连接池的概念 数据库连接背景 数据库连接是一种关键的.有限的.昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性 ...
- 《手把手教你》系列技巧篇(二十一)-java+ selenium自动化测试-浏览器窗口的句柄(详细教程)
1.简介 今天本来就要分享和讲解三大延时等待的,但是在写作过程中发了问题,会用到这一个知识点,于是就提前介绍一下,以便后边用到了可以更好的理解和掌握.本文就是要介绍如何获得浏览器窗体的句柄或者叫编号, ...
- windows10右键我的电脑,点击管理,提示该文件没有与之关联的应用来执行该操作,请安装应用,若已经安装应用,请在默认应用设置页面中创建关联……
方法一 1.按WIN+R 调出运行对话框,然后输入bai gpedit.msc 回车:2.展开"计du算机配置"zhi-"Windows设置"-"安全 ...
- 干货!4大实验项目,深度解析Tag在可观测性领域的最佳实践!
Opentelemetry协议,是CNCF(Cloud Native Computing Foundation-云原生计算基金会)定义的最新一代的可观测规范(目前还在孵化中),该规范定义了可观测性的三 ...
- adobe cc 系列产品更改默认安装路径方法
通过Adobe Creative Cloud 修改 1.在开始菜单中找到图下程序点开,并进行如下操作: 2.点击Apps位置 等待加载出软件,如图下所示. 点击右上角图标,会弹出以下窗口,点击首选项 ...