Storm0.9.0发布通知中文翻译版(2013/12/10 by 富士通邵贤军 有错误一定告诉我 shaoxianjun@hotmail.com^_^

我们很高兴宣布Storm 0.9.0已经成功发布,你可以从the downloads page下载. 本次发布对茁壮成长的Storm来说是一次巨大的进步。

我们追加了一些新特性,你会在下面看到详细的介绍, 此外这次发布的另一个着重点是修复了大量跟稳定性相关的 bug. 虽然很多用户已经在自己的环境中把0.9.x版本的Storm成功运行起来,但我们不保证那些版本的稳定性。0.9.0是目前最稳定的版本,我们强烈推荐各位使用,特别是0.8.x的用户们。

特性1:Netty做消息传输层

第一个重大的特点是新的传输层。我们引入了使用纯Java语言编写的Netty作为我们的传输层,这个工作是由好基友Yahoo! Engineering完成的。关于Storm的核心消息传输层能以插拔形式更换这一点,我想大家都知道了,只可惜原来只有ZeroMQ,而现在Storm提供了两种消息传输层实现,分别是原来的ZeroMQ和新的Netty。

在以前的版本里,Storm只能依赖ZeroMQ做消息的传输,但它其实并不好,我也不晓得Nathan为什么头脑热使用了ZeroMQ。为什么ZeroMQ不好呢?这是由于:

1.ZeroMQ是一个本地化的消息库,它过度依赖操作系统环境;

2.安装起来比较麻烦;

3.ZeroMQ的稳定性在不同版本之间差异巨大,并且目前只有2.1.7版本的ZeroMQ能与Storm协调的工作。

我们引入Netty的原因是:

1.平台隔离,Netty是一个纯Java实现的消息队列,可以帮助Storm实现更好的跨平台特性,同时基于JVM的实现可以让我们对消息有更好的控制;

2.高性能,Netty的性能要比ZeroMQ快两倍左右,这里有一篇文章this blog post 专门比较了ZeroMQ和Netty的性能(待翻译)。

3. 安全性认证,使得我们将来要做的 worker 进程之间的认证授权机制成为可能。

如果要在Storm里使用Netty做传输层,只需要简单的把下面的内容加入到storm.yaml中,并根据你的实际情况调整参数即可:

storm.messaging.transport: "backtype.storm.messaging.netty.Context"
storm.messaging.netty.server_worker_threads: 1
storm.messaging.netty.client_worker_threads: 1
storm.messaging.netty.buffer_size: 5242880
storm.messaging.netty.max_retries: 100
storm.messaging.netty.max_wait_ms: 1000
storm.messaging.netty.min_wait_ms: 100

如果你不喜欢ZeroMQ或者Netty,你也可以通过实现backtype.storm.messaging.IContextinterface来用自己的消息传输层,但是要满足几个条件,这里就不多说了。

特性2:日志查看UI

新版本的Storm增加了一个很给力的特性用来调试和监视topology——logviewer进程。在早期的版本里,查看Worker节点的日志决定于Worker节点的位置(host/port),典型的是通过Storm UI,然后用ssh连接那个主机查看该主机上worker的日志文件。在最新的日志查看机制里,现在可以很容易的去访问一个指定worker节点的日志,你只需要在浏览器中的StormUI里点击worker的port就可以了。

新的logviewer进程与supervisor是相对独立的进程,如果要在新的Storm里启动它,你只需要在集群的supervisor节点执行如下命令:

    $ storm logviewer

特性3:跨平台

在以前的版本里,如果想在Windows平台上运行Storm,你需要安装ZeroMQ,修改Storm的源码,追加一些Windows平台特定的脚本。而在新的版本里,因为用netty替换了ZeroMQ,由于netty用纯java实现,因此使得Storm具有更好的跨平台特性,现在要在Windows上运行Storm比以前容易很多。

特性4:安全

安全,认证,授权这些一直是非常重要的领域,我们在后续会持续追加相关的特性,Storm0.9.0提供了API用来实现可插拔的Tuple序列化,并且有一个基于BlowFish的加密算法来用于加密Tuple的实现。

特性5:API 兼容性和升级

对大多数的Storm开发者来说,更新到0.9.0只是简单的更新它的依赖包而已,Storm的核心API自从0.8.2以来变更很少。而在生产环境中的开发运维方面,如果要更新最新的Storm,最好在升级之前把已经存在的状态信息给清空,比如ZooKeeper上的信息和storm.local.dir配置的信息。

特性6:日志方式变更

另一个非常大的变化是对日志的改变,Storm里面大量使用slf4j 的API,而有些Storm的依赖库或Storm的使用者则依赖于log4j的API。所以现在Storm改为依赖于log4j-over-slf4j,它可以在log4j与slf4j之间架起一座桥梁。这些改变会涉及到已经使用log4jAPI的拓扑和拓扑组件。总之,如果可以的话,还是尽可能的使用slf4j的API来做日志记录吧!

鸣谢

最后特别感谢那些为Storm的贡献的小伙伴们,不管是贡献代码、文档、提BUG或者在邮件列表里为其他人提供帮助的人,你们都功不可没,Nathan爱你们,Storm小组爱你们。

0.9.0变更日志

  • Update build configuration to force compatibility with Java 1.6
  • Fixed a netty client issue where sleep times for reconnection could be negative (thanks brndnmtthws)
  • Fixed an issue that would cause storm-netty unit tests to fail
  • Added configuration to limit ShellBolt internal _pendingWrites queue length (thanks xiaokang)
  • Fixed a a netty client issue where sleep times for reconnection could be negative (thanks brndnmtthws)
  • Fixed a display issue with system stats in Storm UI (thanks d2r)
  • Nimbus now does worker heartbeat timeout checks as soon as heartbeats are updated (thanks d2r)
  • The logviewer now determines log file location by examining the logback configuration (thanks strongh)
  • Allow tick tuples to work with the system bolt (thanks xumingming)
  • Add default configuration values for the netty transport and the ability to configure the number of worker threads (thanks revans2)
  • Added timeout to unit tests to prevent a situation where tests would hang indefinitely (thanks d2r)
  • Fixed an issue in the system bolt where local mode would not be detected accurately (thanks miofthena)
  • Fixed storm jar command to work properly when STORM_JAR_JVM_OPTS is not specified (thanks roadkill001)
  • All logging now done with slf4j
  • Replaced log4j logging system with logback
  • Logs are now limited to 1GB per worker (configurable via logging configuration file)
  • Build upgraded to leiningen 2.0
  • Revamped Trident spout interfaces to support more dynamic spouts, such as a spout who reads from a changing set of brokers
  • How tuples are serialized is now pluggable (thanks anfeng)
  • Added blowfish encryption based tuple serialization (thanks anfeng)
  • Have storm fall back to installed storm.yaml (thanks revans2)
  • Improve error message when Storm detects bundled storm.yaml to show the URL's for offending resources (thanks revans2)
  • Nimbus throws NotAliveException instead of FileNotFoundException from various query methods when topology is no longer alive (thanks revans2)
  • Escape HTML and Javascript appropriately in Storm UI (thanks d2r)
  • Storm's Zookeeper client now uses bounded exponential backoff strategy on failures
  • Automatically drain and log error stream of multilang subprocesses
  • Append component name to thread name of running executors so that logs are easier to read
  • Messaging system used for passing messages between workers is now pluggable (thanks anfeng)
  • Netty implementation of messaging (thanks anfeng)
  • Include topology id, worker port, and worker id in properties for worker processes, useful for logging (thanks d2r)
  • Tick tuples can now be scheduled using floating point seconds (thanks tscurtu)
  • Added log viewer daemon and links from UI to logviewers (thanks xiaokang)
  • DRPC server childopts now configurable (thanks strongh)
  • Default number of ackers to number of workers, instead of just one (thanks lyogavin)
  • Validate that Storm configs are of proper types/format/structure (thanks d2r)
  • FixedBatchSpout will now replay batches appropriately on batch failure (thanks ptgoetz)
  • Can set JAR_JVM_OPTS env variable to add jvm options when calling 'storm jar' (thanks srmelody)
  • Throw error if batch id for transaction is behind the batch id in the opaque value (thanks mrflip)
  • Sort topologies by name in UI (thanks jaked)
  • Added LoggingMetricsConsumer to log all metrics to a file, by default not enabled (thanks mrflip)
  • Add prepare(Map conf) method to TopologyValidator (thanks ankitoshniwal)
  • Bug fix: Supervisor provides full path to workers to logging config rather than relative path (thanks revans2)
  • Bug fix: Call ReducerAggregator#init properly when used within persistentAggregate (thanks lorcan)
  • Bug fix: Set component-specific configs correctly for Trident spouts

原文地址:http://storm-project.net/2013/12/08/storm090-released.html

实时流式计算框架Storm 0.9.0发布通知(中文版)的更多相关文章

  1. 实时流式计算框架——JStorm

    1.本地调试 a.步骤:生成Topology——实现Spout接口——实现Bolt接口——编译运行 b.加入依赖 <!-- JStorm --> <dependency> &l ...

  2. Storm:分布式流式计算框架

    Storm是一个分布式的.高容错的实时计算系统.Storm适用的场景: Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中. 由于Storm的处理组件都是分布式的,而且处理 ...

  3. Storm简介——实时流式计算介绍

    概念 实时流式计算: 大数据环境下,流式数据将作为一种新型的数据类型,这种数据具有连续性.无限性和瞬时性.是实时数据处理所面向的数据类型,对这种流式数据的实时计算就是实时流式计算. 特征 实时流式计算 ...

  4. 流式处理框架storm浅析(上篇)

    本文来自网易云社区 作者:汪建伟 前言 前一段时间参与哨兵流式监控功能设计,调研了两个可以做流式计算的框架:storm和spark streaming,我负责storm的调研工作.断断续续花了一周的时 ...

  5. 【流处理】Kafka Stream-Spark Streaming-Storm流式计算框架比较选型

    Kafka Stream-Spark Streaming-Storm流式计算框架比较选型 elasticsearch-head Elasticsearch-sql client NLPchina/el ...

  6. 流式处理框架storm浅析(下篇)

    本文来自网易云社区 作者:汪建伟 举个栗子 1 实现的目标 设计一个系统,来实现对一个文本里面的单词出现的频率进行统计. 2 设计Topology结构: 这是一个简单的例子,topology也非常简单 ...

  7. Storm 流式计算框架

    1. 简介 是一个分布式, 高容错的 实时计算框架 Storm进程常驻内存, 永久运行 Storm数据不经过磁盘, 在内存中流转, 通过网络直接发送给下游 流式处理(streaming) 与 批处理( ...

  8. 大数据入门第十六天——流式计算之storm详解(一)入门与集群安装

    一.概述 今天起就正式进入了流式计算.这里先解释一下流式计算的概念 离线计算 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据 ...

  9. 流式计算之Storm简介

    Storm是一个分布式的.容错的实时计算系统,遵循Eclipse Public License 1.0,Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比H ...

随机推荐

  1. 浅谈压缩感知(二十七):压缩感知重构算法之稀疏度自适应匹配追踪(SAMP)

    主要内容: SAMP的算法流程 SAMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.SAMP的算法流程 前面所述大部分OMP及其前改算法都需要已知信号的稀疏度 ...

  2. Java-认识字符集-转载

    问题起源 对于计算机而言,它仅认识两个0和1,不管是在内存中还是外部存储设备上,我们所看到的文字.图片.视频等等“数据”在计算机中都是已二进制形式存在的.不同字符对应二进制数的规则,就是字符的编码.字 ...

  3. 插件~NuGet与packages管理项目的包包

    NuGet NuGet是一个工具,已经被集成到VS开发环境里,直接使用它可以快速安装第三方的包包,包包就是一组DLL和资源,开发者把它们打包一个包包,或者叫做package,而我们使用nuget可以将 ...

  4. atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制

    atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制 1. token机制and  session保持状态机制 1 ...

  5. linux云主机怎么安装WDCP

    linux云主机 教你成功安装WDCP的2个方法(第一个不成功就试第2个) 工具/原料   Xshell 云服务器 方法/步骤   1 先用Xshell连接你的服务器 2 输入一下代码    wget ...

  6. 搭建windows的solr6服务器(二)

    首先搭建solr环境,如:solr6.0学习(一)环境搭建 修改各种配置文件. 1.修改solrhome下的solr.xml文件 注解掉zookeeper搭建集群配置,我们后面会采用master-sl ...

  7. 你的项目真的需要Session吗?

    在web开发中,Session这个东西一直都很重要,至少伴随我10年之久, 前一段时间发生一个性能问题,因为Redis session 问题,后来想想 其实我的项目session 是不需要的. 先看看 ...

  8. 在github上写博客

    在github上混了几个月,收获颇多.作为一个开源的坚定信仰者,深深觉得每一个码农都应该参与到开源社区中,github提供了一个平台,让你为开源项目提交代码变得异常简单和直接.以前由于工作异常繁忙和繁 ...

  9. linux内核设计模式

    原文来自:http://lwn.net/Articles/336224/ 选择感兴趣内容简单翻译了下: 在内核社区一直以来的兴趣是保证质量.我们需要保证和改善质量是显而易见的.但是如何做到却不是那么简 ...

  10. ELK——Logstash 2.2 mutate 插件【翻译+实践】

    官网地址 本文内容 语法 测试数据 可选配置项 mutate 插件可以在字段上执行变换,包括重命名.删除.替换和修改.这个插件相当常用. 比如: 你已经根据 Grok 表达式将 Tomcat 日志的内 ...