Apache Storm 1.0发布,带来性能提升和许多新特性

1.0版本是Apache Storm发展过程中一座重要的里程牌,负责Apache Storm项目的Apache软件基金会副总裁P. Taylor Goetz这样写道。该版本包含许多新特性和改进。尤其是,Goetz声称它带来了3到16倍的性能提升。

Storm是一个事件处理程序,可以对流数据进行分布式处理。一个Storm应用程序由“spouts”和“bolts”构成,它们被配置成一个有向无环图,用来表示信息源和数据处理程序。Storm的主要特点是能处理实时数据,不像Hadoop那样允许批处理。

据Goetz介绍,与先前的版本相比,Storm 1.0的性能最高提升了16倍,在大多数情况下预计都会有3倍的性能提升。特别地,性能的重大改善似乎来自下面的更改:

  • SpoutOutputCollector.emit()调用中使用Java重新实现了Clojure reduce函数;
  • DisruptorQueue中引入批处理,代替spout层的批处理,这以增加延迟为代价大幅提升了吞吐量。

特别地,雅虎工程师所做的大量的基准测试表明,与其他两个流行的分布式处理框架Apache Flink和Apache Spark相比,性能历来是Storm的主要竞争优势之一。

此外,Storm 1.0包含许多值得注意的新特性,例如:

  • Pacemaker:一个处理工作进程心跳的心跳守护进程,它常驻内存,提供了比ZooKeeper更好的性能;
  • 分布式缓存及相关API:它允许在拓扑之间共享文件。文件可以随时更新,而不需要重新部署受影响的拓扑。这对于当前将资源文件包含在拓扑jar包中的做法是一种改进,这种做法更新文件时需要重新部署;
  • 高可用Nimbus:使用一个Nimbus节点的动态集群代替单个Nimbus实例,如果当前的群首节点出现故障,就会选出新的“群首”;
  • 流窗口API:新增窗口定义支持,这些窗口可以应用于数据处理,比如在最后一个小时里计算最热门的话题。以前,开发人员必须构建自己的窗口逻辑;
  • 自动反压:当任务缓冲区的大小达到了指定的限制(以百分比表示),Storm就会自动降低拓扑spouts的速度;
  • 资源感知调度器:一种新的调度器实现,在将任务分配给最能满足特定需求的工作进程时考虑了集群中可用的内存和CPU资源;
  • 动态工作进程性能分析:旨在让用户可以从Storm UI获取工作进程性能数据,比如堆转储文件、JStack输出。

读者可以从GitHub上下载Apache Storm 1.0,或者从Storm下载页面上获取各种打包格式。

查看英文原文:Apache Storm Reaches 1.0, Brings Improved Performance, Many New Features

你可能感兴趣的:(Apache Storm 1.0发布,带来性能提升和许多新特性)