Storm 1.0.0 正式发布

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

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。

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 565 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    29 引用 • 202 回帖 • 39 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    89 引用 • 165 回帖 • 1 关注
  • danl
    191 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 445 关注
  • CloudFoundry

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

    4 引用 • 16 回帖 • 201 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 1 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 19 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 3 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    173 引用 • 543 回帖
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 188 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 5 关注
  • 黑曜石

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

    A second brain, for you, forever.

    29 引用 • 306 回帖
  • OpenCV
    15 引用 • 36 回帖 • 6 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 43 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 231 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 662 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 1 关注
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    5 引用 • 34 回帖 • 1 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1432 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 649 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 72 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 2 关注