zoukankan      html  css  js  c++  java
  • 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 mqnative library,容易有兼容性问题,而netty作为java开发的,并且性能是zero mq2倍(在2013年的时候)。

    0.9.2

    改进了netty的使用,更好的利用线程、CPU和网络资源,以提高更好的性能。

    改善了UI,提供了REST接口,图形化的DAG图。

    整合的Kafka Spout

    0.9.3

    改进的kafka connector,同时支持hdfs integrationhbase Integration

    通过shaded,解决了用户包和storm包的依赖冲突,比如thriftnettyguavahttpClientzkcurator

    0.9.40.9.50.9.6都是bugfix版本。

    0.10.0

    安全和多租户,支持kerberosaclssl,以及与hadoop生态其他组件的安全整合,用户的认证和资源隔离。

    使用Flux声明topology,相比以往需要以代码描述dag,目前可以单独在文本中描述dag

    流式写入hivehive 0.13版本支持流式写入,storm自己实现了一个bolt来流式写入hive

    下游整合,支持redis,支持jdbc

    1.0.02016

    改进的性能,这个版本的storm比之前的版本要快16倍,延迟减少了60%,即使考虑不同的用户场景和外部服务依赖,对大多数用户场景而言也提供了相比之前3倍的性能

    心跳机制,引入pacemaker来实现serverworker之间的心跳,而不是之前通过zk来进行,当集群规模较大时,zk往往会成为瓶颈。

    分布式缓存,支持通过supervisorhdfs来提供数据分发,用户不用重启作业来更新数据,只需要在命令行操作即可。

    Nimbus HA,终于支持HA了,通过运行多个nimbus进程和选举来实现HA

    原生窗口,支持滑动窗口和翻滚窗口,基于事件个数或者时间。

    状态支持,支持自动的checkpoint,状态可以被保存在内存或者redis中。

    背压监测,之前为了控制spout的速度,只能设置topology.max.spout.pending,目前通过监测taskbuffer size,可以动态的控制spout的发射速度。

    资源感知调度,通过插件化的storm的调度插件,目前可以支持对内存和cpu的单独设置。

    元组抽样和调试,之前用户只能自己去显式的增加调试信息,等到上线时再去掉调试信息,现在storm内嵌了抽样调试功能,只需在UI上就可以操作,元组会被UI显示并保存到磁盘。

    动态worker profiling,支持在ui上操作workerheap dumpjstack outpuJProfile recording,相应的文件会被保存并可以下载。

    1.0.11.0.21.0.31.0.41.0.51.0.6都是bugfix版本,无重大功能。

    1.1.020173

    流式SQL,通过calcitestorm终于支持了sql,在命令行中利用storm sql操作。

    Kafka整合,支持kafka 0.10及以后版本。

    PMML支持,通过支持predictive model markup language来支持用训练机器学习中的模型。

    其他整合,支持druidopenTsdbaws kinesis,以及hdfs spout

    Topology提交,之前只支持uber包提交,现在可以通过-jar来指定依赖提交。

    1.1.11.1.21.1.3,都是bugfix版本,无重大功能。

    1.2.020182

    新的metric汇报,storm提供reporter汇报metricgangliagraphitejmxcsv以及console

    1.2.11.2.21.2.3,都是bugfix版本,无重大功能。

    2.0.020195

    Java进行重构,storm之前是用clojure写成的,clojure语言成为很多人参加storm社区的障碍,从这里之后,欢迎更多的人参与社区的代码贡献。

    更高的性能,通过重构更精简的线程模型、极快的消息传递模型以及轻量级的背压模型,它旨在突破吞吐量、延迟和能耗的界限,同时保持向后兼容性。Apache Storm 2.0 是第一个打破 1 微秒延迟障碍的流媒体引擎。

    JVM要求,摈弃了之前的java7,从storm 2.0开始,要求使用java8的环境。

    2.1.0201910

    2.2.020206

  • 相关阅读:
    [原]java开发文档的自动生成方式 java程序员
    帮助查看本地表单元素样子的网站 Native Form Elements java程序员
    Thingjs 开门示例:以3D机柜为例 演示thingjs如何开门
    基于WebGL架构的3D可视化平台—实现汽车行走路线演示
    WebGL的3D框架比较 ThingJS 和 Three.js
    重庆新闻联播 报道 thingJS 项目 反恐3D可视化预案 多警种3D可视化预案系统
    腾讯滨海大厦 智能楼宇 智慧建筑 3D可视化管理系统优锘科技ThingJS物联网开发案例
    基于WebGL架构的3D可视化平台—新风系统演示
    基于WebGL架构的3D可视化平台—三维设备管理(ThingJS实现楼宇设备管理3D可视化)
    【教程】ThingJS 3D开发快速入门 第一讲 开发概述·优势·项目流程
  • 原文地址:https://www.cnblogs.com/029zz010buct/p/15272138.html
Copyright © 2011-2022 走看看