Twitter Storm

开放实时数据处理平台
授权协议 EPL
开发语言 Java Python
所属分类 程序开发、 服务框架/平台
软件类型 开源软件
地区 不详
投 递 者 裴彦
操作系统 Linux
开源组织
适用人群 未知
 软件概览

Twitter将Storm正式开源了,这是一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。GitHub上的最新版本是Storm 0.5.2,基本是用Clojure写的。

Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 Storm的主工程师Nathan Marz表示:

Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比 Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。

Storm的主要特点如下:

  1. 简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。

  2. 可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。

  3. 容错性。Storm会管理工作进程和节点的故障。

  4. 水平扩展。计算是在多个线程、进程和服务器之间并行进行的。

  5. 可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。

  6. 快速。系统的设计保证了消息能得到快速的处理,使用ØMQ作为其底层消息队列。

  7. 本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

Storm集群由一个主节点和多个工作节点组成,两者的协调工作是由Apache ZooKeeper来完成的。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节 点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无 状态的;所有状态都保存在ZooKeeper或本地磁盘中,这意味着即使kill -9 杀掉Nimbus和Supervisors,它们也能在启动时从备份中恢复跟没有发生过一样。这样的设计使得Storm集群变得十分健壮。

Storm的术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被处理的数据。Sprout是数据源。Bolt处理数据。Task是运行于Spout或Bolt中的 线程。Worker是运行这些线程的进程。Stream Grouping规定了Bolt接收什么东西作为输入数据。数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者 广播(术语为All),或者总是发给一个Task(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为 Direct)。Topology是由Stream Grouping连接起来的Spout和Bolt节点网络。在Storm Concepts页面里对这些术语有更详细的描述。

可以和Storm相提并论的系统有Esper、Streambase、HStreaming和Yahoo S4。其中和Storm最接近的就是S4。两者最大的区别在于Storm会保证消息得到处理。这些系统中有的拥有内建数据存储层,这是Storm所没有的,如果需要持久化,可以使用一个类似于Cassandra或Riak这样的外部数据库。

入门的最佳途径是阅读GitHub上的官方《Storm Tutorial》。 其中讨论了多种Storm概念和抽象,提供了范例代码以便你可以运行一个Storm Topology。开发过程中,可以用本地模式来运行Storm,这样就能在本地开发,在进程中测试Topology。一切就绪后,以远程模式运行 Storm,提交用于在集群中运行的Topology。Maven用户可以使用clojars.org提供的Storm依赖,地址是 http://clojars.org/repo。

要运行Storm集群,你需要Apache Zookeeper、ØMQ、JZMQ、Java 6和Python 2.6.6。ZooKeeper用于管理集群中的不同组件,ØMQ是内部消息系统,JZMQ是ØMQ的Java Binding。有个名为storm-deploy的子项目,可以在AWS上一键部署Storm集群。关于详细的步骤,可以阅读Storm Wiki上的《Setting up a Storm cluster》。

本软件介绍内容来自 InfoQ

  • Twitter将Storm正式开源了,这是一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。GitHub上的最新版本是Storm 0.5.2,基本是用Clojure写的。   Storm为分布式实时计算提供了一组通用原语,可被用于“流处

  • 过去的十年是数据处理变革的十年, MapReduce, Hadoop以及一些相关的技术使得我们能处理的数据量比以前要大得多得多。但是这些数据处理技术都不是实时的系统 — 它们设计的目的也不是为了实时计算。没有什么办法可以简单地把hadoop变成一个实时计算系统。实时数据处理系统和批量数据处理系统在需求上有着本质的差别。 然而大规模的实时数据处理已经越来越成为一种业务需求了, 而缺少一个“实时版本的

  • Twitter Storm twitter storm是twitter的流计算框架。本文简单的介绍该框架。 twitter主要包括4个东东 Nimbus 用户提交一个topology首先是提交给nimbus,nimbus对提交过来的topology开始分配任务,将任务信息写入到zookeeper中。这是主要的工作,还有其他的一些工作,比如定是清理一些jar包,目录什么的。 Supervisor 这

  • 在这个教程里面我们将学习如何创建Topologies, 并且把topologies部署到storm的集群里面去。Java将是我们主要的示范语言, 个别例子会使用python以演示storm的多语言特性。 准备工作 这个教程使用storm-starter项目里面的例子。我推荐你们下载这个项目的代码并且跟着教程一起做。先读一下:配置storm开发环境和新建一个strom项目这两篇文章把你的机器设置好。

  • 提交Topologies 命令格式:storm jar 【jar路径】 【拓扑包名.拓扑类名】 【拓扑名称】 样例:storm jar /storm-starter.jar storm.starter.WordCountTopology wordcountTop #提交storm-starter.jar到远程集群,并启动wordcountTop拓扑。 停止Topologies 命令格式:storm

  • Twitter将Storm正式开源了,这是一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。GitHub上的最新版本是Storm 0.5.2,基本是用Clojure写的。   Storm为分布式实时计算提供了一组通用原语,可被用于“流处

  • 发表于 2011 年 12 月 30 日 由 xumingming 作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://xumingming.sinaapp.com/410/twitter-storm-code-analysis-acker-merchanism/ 概述 我们知道storm一个很重要的特性是它能够保证你发出的每

  • 配置项 配置说明 storm.zookeeper.servers ZooKeeper服务器列表 storm.zookeeper.port ZooKeeper连接端口 storm.local.dir storm使用的本地文件系统目录(必须存在并且storm进程可读写) storm.cluster.mode Storm集群运行模式([distributed|local]) storm.local.mo

  • 本篇幅讲述Twitter Storm安装配置,也作为自己的笔记。 storm的官方安装说明(e文):https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster storm的安装分为单机版和集群版,只是配置稍微有点区别,大致一样。 要使用storm首先要安装以下工具: python、zookeeper、zeromq、jzmq

  • 1. storm的topology是从启动开始一直运行,只要有tuple到来,各个环节就会被出发执行。 2. stream是storm的核心概念,一个stream是一个持续的tuple序列,这些tuple被以分布式并行的方式创建和处理。 3. spouts是一个stream的源头,spouts负责从外部系统读取数据,并组装成tuple发射出去,tuple被发射后就开始再topology中传播。  

  • SplitSentence对于句子里面的每个单词发射一个新的tuple, WordCount在内存里面维护一个单词->次数的mapping, WordCount每收到一个单词, 它就更新内存里面的统计状态。 有好几种不同的stream grouping: 最简单的grouping是shuffle grouping, 它随机发给任何一个task。上面例子里面RandomSentenceSpout和S

  • 转载自:徐明明的博客,原文地址 这篇文章翻译自: https://github.com/nathanmarz/storm/wiki/Creating-a-new-Storm-project 这篇文章主要介绍如何新建一个storm项目, 主要步骤: 1. 把storm的jar包加到classpath里面去。 2. 如果使用storm的多语言特性的话, 把multilang目录也加到classpath

  • 实际上安装Twitter Storm是上周三的事情了,周三的时候安装了一个单机版的,用WordCount跑了一下,感觉还不错。周四试着在集群上安装,碰到了一些问题,一直折腾到周五,留了个尾巴(没有做测试),这周一终于跑了WordCount,先开始出了一些问题,查了很多资料终于解决了。 一直想要把这个过程记录一下,一直都比较犯懒,今天因为也要写文档,但还没有什么特别好的思路,所以先把整个安装过程恢复

 相关资料
  • 钉钉开发平台为企业定制属于自己的钉钉。目前,超过30000名开发者,正在基于钉钉开放平台的300多个开放接口,为企业用户提供优质的产品和服务。 应用中心 开通第三方应用 ● 选择适合自己行业的精品应用开通,管理员每日10点可以抢1个应用 手机端工作应用-右上角图标 电脑端工作应用-应用中心 钉无忧 · 企业服务保障计划 数据安全 ● 阿里数年安全技术沉淀,保障数据安全,再也不用担心数据泄露问题。

  • 在我的新公司,我是一名数据工程师,负责构建google cloud platform(GCP)批处理ETL管道。我的团队的数据科学家最近给了我一个数据模型(用Python3.6编写的.py文件)。 数据模型有一个主函数,我可以调用它并获得一个dataframe作为输出,我打算将这个dataframe附加到一个bigquery表中。我是否可以只导入这个主函数,并使用apache beam(Dataf

  • 当我尝试使用Oracle数据库作为RDBMS安装单节点IBM开放平台集群时,我有点困惑。 首先,我知道IBM Big Insights的Hadoop部分不是相应Apache版本的修改版本(正如HortonWorks所做的),因此,当Ambari(来自IBM repo)提供给我使用外部Oracle数据库时,我认为它应该可以工作。我可能错了,我在蹩脚的IBM安装指南中找不到任何oracle参考来正确设

  • 数据处理 可将字段的值进行处理得到最终结果 html标签过滤 内容替换 批量替换 关键词过滤 条件判断 截取字符串 翻译 工具箱 将文本链接标记为图片链接:如果字段的值是完整的url链接(非<img>标签内的链接),可将链接识别为图片 使用函数 调用接口

  • 欢迎使用炼金台助贷风控服务。炼金台与平台方合作,帮助核心企业实施上下游贷款业务。通过风险清洗筛掉不良客户,并将合格客户的不规则数据“冶炼” 成标准的风控半成品,批量推送给金融机构。 · 万能插头,平台方、金融机构无需IT开发,快速对接。 · 在线融资,数据无缝推入金融机构,节省大量人工,风险预处理,流水线式“信贷工厂”。

  • 使用场景:适用于需要开放部分接口給第三方系统接入,第三方系统根据给定的签名规则构建参数请求接口,实现两个系统相互访问。这部分提供了一个开放平台管理,对第三方平台进行管理、授权验证 创建应用 获取app_id与app_secret 首次获取app_secret需要重置 所有的请求需要都要带上app_id与sign 签名规则 假如GET请求的参数中含有url,url参数需要urlencode,参与签名

  • 诸葛io作为一家专注数据服务的公司,提供了开放的数据平台,您可以通过以下方式导出数据并进行二次开发: 原始数据导出; SQL查询导出:诸葛io提供了SQL查询导出功能,便于数据分析师等直接使用SQL获取数据进行分析,也可以导出结合其他数据进行分析; 查询API:诸葛io提供的查询API包括数据统计API、用户查询API、用户行为轨迹API。通过API接口,您可以将获取的数据做进一步的分析和利用。

  • 1980年,英国BBC电视台策划了一系列关于计算机的电视节目。但导演发现一个问题:怎么给没见过电脑的观众画饼? 节目之一"Micro Live" 此时,大洋彼岸的苹果公司已经推出适于个人使用的微型电脑。Apple-II电脑在70年代末创造出销售神话,从而开发出个人电脑这个新市场。个人电脑在美国风靡,温吞吞的英国人节奏却慢了一拍。对于英国人来说,计算机还是限于科研、国防、制造领域的高科技设备,和自己