Storm 1.0.0 正式发布

本贴最后更新于 2810 天前,其中的信息可能已经事过景迁

Apache storm 社区很高兴的宣布版本 1.0.0 稳定已经发布,可以从the downloads page下载。
这个版本是 Apache storm 演变的一个重要的里程碑,包括大量的新特性,可用性和性能方面的改进,其中一些如下。

性能提升

该版本主要亮点之一就是性能较之前的版本有一个巨大的性能提升,Apache Storm 1.0 的性能较之前的版本提升 16 倍,延迟降低了 60%。很显然,拓扑基于不同的使用案例和所依赖外部服务不同,性能差别很大,但大多数情况下,用户可以期待一个 3X 的性能提升比早期版本。

Pacemaker - Heartbeat Server

Pacemaker 是一个可选的 Storm 守护线程,用于处理来自 workers 的心跳。随着 Storm 的集群规模的增大,Zookeeper 会因为来自 workers 的大量心跳写入而成为瓶颈,在 Zookeeper 尝试保持一致性的同时,会产生大量的写磁盘操作和网络传输量。

因为心跳是一个短暂的性质,他们不需要持久化到磁盘或跨节点同步,存储在内存中即可。这正是 Pacemaker 的作用,Pacemaker 的功能与简单的基于内存的键/值对存储一样,目录式键和字节数组值。

分布式缓存 API

在过去,它是常见的,开发人员需要的将资源(如查找数据,机器学习模型等)打包成一个 topology 的 jar 文件。这种方法的问题是,更新数据需要重新打包和重新部署的拓扑结构。另一个问题是,有时数据可能非常大(千兆字节或更多),其负面影响拓扑的启动时间。

Storm 1.0 版本引入了分布式缓存 API,允许文件在拓扑结构之间共享(BLOBs)。在分布式缓存中,文件可以在命令行的任何时间更新,而不需要重新部署拓扑。分布式缓存 API 允许文件从几个 kb 大小的几个 GB,也支持压缩格式,如 ZIP,GZIP。

Storm 1.0 配备了两个实现分布式缓存 API:一个主管节点的本地文件系统的支持,和一个由 Apache Hadoop HDFS 支持。同时还支持实施细粒度的访问控制,通过 ACL。

HA Nimbus

使用过 Storm 用户知道 Storm Nimbus 服务存在单点故障问题(Nimbus 节点挂掉之后,不会影响正在运行的 topology),然而,Nimbus 节点挂掉之后,不能提交新的 topology 和重新分配任务。

Storm 1.0 解决了这个问题,通过在集群中运行多个 Nimbus 实例和在 Nimbus 节点挂掉之后按照 leader 选举机制选举新的 Nimbus 节点,Nimbus 节点可以在任何时间加入和离开集群。HA Nimbus 利用分布式缓存 API 复制来保证在 Nimbus 节点宕机时 topology 资源可用 。

原生的流式窗口 API

基于窗口型的计算在流式处理中被广泛使用,在流处理中,无限的数据量基于一些标准(比如时间)被划分成有限的数据集,一个计算被施加到一个组,有一个例子是计算出热门的话题。

窗口主要被用来做聚合,拼接,模式匹配等,窗口被视为 in-memory 表,可以被用于事件的添加和删除。

在过去的版本中,Storm 依靠开发者自己开发窗口逻辑,没有一个高层次抽象推荐给开发者使用。

Apache Storm 1.0 现在包括一个本地的窗口 API。窗口可以指定以下 2 个参数,
窗口长度:窗口的长度或持续时间
滑动间隔:窗口滑动的时间间隔

Storm 支持基于时间宽度或事件计数的滑动和滚动窗口。

状态管理--带有自动检查点的有状态 bolt

Storm 1.0 引入了一个新的带有自动检查点有状态的 bolt API,有状态的 bolt 很容易实现(只要继承 BaseStatefulBolt 类即可),可以和 topology 中的无状态 bolt 结合。Storm 自动的管理 bolt 的状态和恢复在事件中失败的状态。

Storm 1.0 自带状态实现,支持 redis,未来发布的版本中将会加入额外的支持状态存储。

自动反压机制

在之前的 Storm 版本中,唯一的限制往 topology 的输入是开启 ACKing 并设置 topology.max.spout.pending。对于一些用户来说,不需要 at-least-once 的处理保证,这样的要求就会造成一个显著的性能损失。

Storm 1.0 包括一个新的基于可配置的高/低水印表示为一个任务的缓冲区大小的百分比自动反压机制。如果高水位达到,Storm 1.0 会减慢拓扑的 spouts 和当低水位时,停止节流。

Storm 的反压机制是实现独立的 Spout API,所以现有的所有 Spouts 都被支持。

资源调度

基于 Storm 可插拔的拓扑调度 API,Storm 1.0 增加了一个新的调度器实现,将内存(堆和堆)和集群中的可用的 CPU 资源考虑在内。资源感知调度器(又名“RAS 调度器”)允许用户指定的内存和 CPU 为每个拓扑组件(Spouts/Bolts),和 Storm 将调度 workers 之间的 tasks 任务以最好地满足这些要求。

在未来,Storm 社区计划扩大 RAS 实现支持网络资源和架意识等。

动态日志级别

Storm 1.0 现在允许用户和管理员可以动态地改变一个运行拓扑的日志级别设置,从 Storm 用户界面以及命令行。用户还可以指定一个可选的超时时间,这些变化将被自动恢复。由此产生的日志文件也很容易通过 Storm 的 UI 和 logviewer 服务来查找。

Tuple 采样与调试

在调试一个拓扑结构的过程中,很多用户发现需要自己加入 Storm“调试”bolts 或 trident 功能,记录有关数据流经的拓扑信息,然后在生产部署时,只能删除或禁用它们。Storm 1.0 消除了种方式。

Storm 的 UI 现在包括一个功能,允许你在从 Storm 的 UI 上取样流经一个拓扑或个别部件的一定百分比的 tuples。采样的事件可以直接在 Strom 的用户界面查看,也可以保存到磁盘。

分布式日志搜索

Storm 的用户界面的另一个改进是添加一个分布式日志搜索。这个搜索功能允许用户搜索在特定拓扑的所有日志文件,包括归档日志(以 zip 结尾的)。搜索结果将包括来自所有 Supervisor 节点的匹配结果。

动态 Worker 分析

最后,但肯定不是最不重要的,在 Storm 1.0 的可用性改进是动态的 worker 分析。这个新功能允许用户直接从 Storm 用户界面请求数据,包括:
堆转储
JStack 输出
JProfile 记录

生成的文件,然后可供下载使用各种调试工具离线分析。现在还可以在 Storm 的用户界面重启 worker。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 93 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 381 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 7 关注
  • V2Ray
    1 引用 • 15 回帖
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 151 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    108 引用 • 54 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖 • 1 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    215 引用 • 462 回帖
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 153 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    529 引用 • 3527 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 232 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖 • 5 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 1 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 247 回帖 • 212 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    25 引用 • 215 回帖 • 160 关注
  • 996
    13 引用 • 200 回帖 • 9 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 594 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    9 引用 • 83 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1738 回帖 • 3 关注
  • 音乐

    你听到信仰的声音了么?

    58 引用 • 507 回帖 • 1 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 347 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 2 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1397 回帖 • 1 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 106 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 682 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖