实时流式计算框架Storm 0.9.0发布通知(中文版)

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


转自:http://www.cnblogs.com/alephsoul-alephsoul/p/3467651
2019-03-02 23:55

知识点

相关教程

更多

【译】流式计算框架-Storm简介

在当前的数据分析领域,对实时数据的计算需求越来越强烈,在此领域,出现了各类计算框架,如:Storm、S4等。目前本土公司对这些流式计算框架的应用也比较广泛,但苦于相关文档英文居多,缺少成系列且与官方相对应的中文手册。本系列试图从官方文档翻译入手,给大家呈现较为完备的中文资料,同时也是对自身知识的总结沉淀。 在这个系列博客中,我们选择了twitter的Storm框架,原因很简单,因为本人长期使用的就

从Storm和Spark 学习流式实时分布式计算的设计

0. 背景 最近我在做流式实时分布式计算系统的架构设计,而正好又要参加CSDN博文大赛的决赛。本来想就写Spark源码分析的文章吧。但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量不够。因此,我将最近一直在做的系统架构的思路整理出来,形成此文。为什么要参考Storm和Spark,因为没有参照效果可能不会太好,尤其是对于Storm和Spark由了解的同学来说,可能通过对比,更能体

流式计算之Storm简介

http://blog.sina.com.cn/s/blog_406d9bb00100ui5p.html  流式计算之Storm简介     (2011-11-04 14:51:39)     转载▼         Storm是一个分布式的、容错的实时计算系统,遵循Eclipse Public License 1.0,Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于

[zz]流式计算之Storm简介

转载自:http://blog.sina.com.cn/s/blog_406d9bb00100ui5p.html Storm是一个分布式的、容错的实时计算系统,遵循Eclipse Public License 1.0,Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中

流式计算之Storm简介

Storm是一个分布式的、容错的实时计算系统,遵循Eclipse Public License 1.0,Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。可以使用任意编程语言来做开发。 主要商业应用及案例:Twitter Storm的优

storm实时流式计算框架集群搭建过程

Storm集群安装配置过程  ——by comaple.zhang  这几天在其他同事的帮助下,调研了twitter的开源流式计算框架storm的使用,下面分享一下storm集群的安装配置过程。以作备忘之用。 我的实验机器为:195和196 如果转载请注明出处:comaple的博客 首先:安装依赖包 1, ZeroMQ 2.1.7 2, JZMQ 3, Java 4, Python 5, Unzi

Storm分布式实时流计算框架相关技术总结

Storm作为一个开源的分布式实时流计算框架,其内部实现使用了一些常用的技术,这里是对这些技术及其在Storm中作用的概括介绍。以此为基础,后续再深入了解Storm的内部实现细节。 1. Zookeeper集群 Zookeeper是一个针对大型分布式系统的可靠协调服务系统,其采用类似Unix文件系统树形层次结构的数据模型(如:/zoo/a,/zoo/b),节点内可存储少量数据(<1M,当节点

实时计算、流式处理系统简介和资料搜集

实时计算、流式处理系统简介与简单分析 一、实时计算一些基本概念 http://www.cnblogs.com/panfeng412/archive/2011/10/28/2227195.html 二、早期产品 1. IBM的StreamBase: StreamBase是IBM开发的一款商业流式计算系统,在金融行业和政府部门使用 官方网站:http://www.streambase.com 2. B

实时计算、流式处理系统简介与简单分析

一、实时计算一些基本概念 http://www.cnblogs.com/panfeng412/archive/2011/10/28/2227195.html 二、早期产品 1.IBM的StreamBase: StreamBase是IBM开发的一款商业流式计算系统,在金融行业和政府部门使用 官方网站:http://www.streambase.com 2. Borealis:Brandeis Uni

Storm Tutorial 中文版 — Storm Tutorial 中文版

Storm Tutorial 中文版 — Storm Tutorial 中文版   Storm Tutorial 中文版¶   Storm 是一个 Python ORM 库,本文是 Storm 官方教程的简体中文翻译版。 项目 Github 库: https://github.com/huangz1990/storm_orm_tutorial_cn 。 转自:http://www.cnb

Storm 实战:构建大数据实时计算

Storm 实战:构建大数据实时计算(阿里巴巴集团技术丛书,大数据丛书。大型互联网公司大数据实时处理干货分享!来自淘宝一线技术团队的丰富实践,快速掌握Storm技术精髓!) 阿里巴巴集团数据平台事业部商家数据业务部 编著  ISBN 978-7-121-22649-6 2014年8月出版 定价:59.00元  184页 16开 编辑推荐 Storm以其简单、灵活、健壮而著称。随着大数据实时处理需求

Hadoop权威指南(中文版-带目录索引)PDF

什么是谷歌帝国的基石?MapReduce算法是也!Apache Hadoop架构作为MapReduce算法的一种开源应用,是应对海量数据的理想工具。项目负责人Tom White透过本书详细阐述了如何使用Hadoop构建可靠、可伸缩的分布式系统,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装和运行Hadoop集群。   本书是您纵情享用数据之美的得力助手。作为处理海量数据集的理想工具

顶 Solr In Action 中文版 第一章(一)

第一章 Solr 简介 本章速览: ·搜索引擎处理的数据特性 ·常见搜索引擎用例 ·Solr核心模块介绍 ·选择Solr的理由 ·功能概述 伴随着社交媒体、云计算、移动互联网和大数据等技术的高速发展,我们正迎来一个令人激动的计算时代。软件架构师们开始面对的主要挑战之一,便是如何处理全球巨大的用户基数所产生及使用的海量数据。此外,

Solr In Action 中文版 第一章(一)

1.1我到底需要一个搜索引擎吗?    第一章Solr简介 本章速览: ·搜索引擎处理的数据特性 ·常见搜索引擎用例 ·Solr核心模块介绍 ·选择Solr的理由 ·功能概述 伴随着社交媒体、云计算、移动互联网和大数据等技术的高速发展,我们正迎来一个令人激动的计算时代。软件架构师们开始面对的主要挑战之一,便是如何处理全球巨大的用

Solr In Action 中文版 第一章(四、五)

1.1功能概览1. 4 最后,让我们再按照下面的分类,快速的过一下Solr的主要功能: ·用户体验 ·数据建模 ·Solr 4的新功能 在本书中,为你的用户提供良好的搜索体验会一直贯穿全书的主题。所以我们就从用户体验开始,看看Solr是如何让你的用户感觉到爽的。 1.4.1用户体验类功能 Solr提供了一系列的重要功能来帮助你搭建一个易用的,符合用户直觉的

最新教程

更多

java线程状态详解(6种)

java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞

redis从库只读设置-redis集群管理

默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave.  127.0.0.1:6382> set k3 111  (error) READONLY You can't write against a read only slave. 如果你要开启从库

Netty环境配置

netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。

Netty基于流的传输处理

​在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据

Netty入门实例-使用POJO代替ByteBuf

使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。

Netty入门实例-时间服务器

Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现

Netty入门实例-编写服务器端程序

channelRead()处理程序方法实现如下

Netty开发环境配置

最新版本的Netty 4.x和JDK 1.6及更高版本

电商平台数据库设计

电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表

HttpClient 上传文件

我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。

MongoDB常用命令

查看当前使用的数据库    > db    test  切换数据库   > use foobar    switched to db foobar  插入文档    > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new

快速了解MongoDB【基本概念与体系结构】

什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

windows系统安装MongoDB

安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我

Spring boot整合MyBatis-Plus 之二:增删改查

基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baom

分布式ID生成器【snowflake雪花算法】

基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案