写点什么

Twitter Storm:开源实时 Hadoop

  • 2011-09-29
  • 本文字数:1749 字

    阅读完需:约 6 分钟

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 集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus 和 Supervisor 都能快速失败,而且是无状态的,这样一来它们就变得十分健壮,两者的协调工作是由 Apache ZooKeeper 来完成的。

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》

欲了解Storm 的更多信息,请访问官方 Storm Wiki 。你也可以加入 Storm 邮件列表和 freenode 上的 Storm IRC(#storm-user)。

查看英文原文: Twitter Storm: Open Source Real-time Hadoop

2011-09-29 11:1217261
用户头像

发布了 135 篇内容, 共 64.5 次阅读, 收获喜欢 43 次。

关注

评论

发布
暂无评论
发现更多内容

黑龙江等保测评2025新政策

等保测评

从 “卡顿” 到 “秒开”:外投首屏性能优化的 6 个实战锦囊|得物技术

得物技术

开发语言

火极一时的AI蛋白质解析,怎么样了?

脑极体

AI

NL2SQL 再创佳绩!阿里云论文中选 SIGMOD 2025

阿里云大数据AI技术

人工智能 深度学习 云计算 大数据 阿里云

解决Linxu Obsidian 黑曜石笔记无法关联浏览器插件问题

虚实的星空

Obsidian 黑曜石笔记

如果你想做好生产管理,那么这篇MES 攻略你一定不能错过!

积木链小链

智能制造 mes 生产管理

国泰海通证券、海通期货携手非凸科技,共探期现市场与AI交易深度融合

非凸科技

DApp开发的技术难点

北京木奇移动技术有限公司

dapp开发 区块链开发 软件外包公司

WebGL开发数字孪生项目的流程

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

等保测评常见问题与应对策略

等保测评

大数据-41 Redis 类型集合(2) bitmap geohash Z阶曲线 Base32

武子康

Java redis 大数据 缓存 分布式

稳居全闪一体机市场TOP5 焱融存储推理方案广获市场认可

焱融科技

全闪存储 软件定义存储 大模型推理 焱融存储 IDC报告

刷爆朋友圈,AlphaGPT在法律ai圈子火了,案件仅需3分钟搞定

科技汇

烟草公司×中烟创新 | 同频共振,共赴数字征程

中烟创新

【LazyLLM全面教程(图文版)】新系列来袭!今天学,明天别人追着喊你大佬!

商汤万象开发者

AI 多模态 agent LLM

高德开放平台携手阿里云,面向开发者推出地图服务产品MCP Server

高德开放平台

阿里云 地图服务 MCP

CST的TLM算法仿真5G毫米波阵列天线及手机

思茂信息

cst电磁仿真 CST软件 CST Studio Suite

iCourt“AI先锋计划”入所协助律所团队,提升法律领域AI技术竞争力

科技汇

AI-Compass宝藏资源库

汀丶人工智能

人工智能

Amazon Q in QuickSight 实战:利用自然语言快速生成数据报表与洞察

亚马逊云科技 (Amazon Web Services)

挖掘数据价值,构建数据驱动型财务规划

智达方通

数字化转型 数据驱动 全面预算管理 财务规划 企业运营

东荟城名店仓联乘韩国人气玩偶 BELLYGOM 打造「Dive into Summer」主题活动

编程猫

百万奖金,2025 阿里云「AI安全」全球挑战赛等你来!

新消费日报

透明LED显示屏:重塑建筑美学

Dylan

LED LED display 全彩LED显示屏 led显示屏厂家 LED屏幕

WebGL数字孪生项目的技术方案

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

从零开始学 Dify:搭建你的第一个 LLM 应用平台

测试人

MyEMS开源能源管理系统广泛应用

开源能源管理系统

开源 能源管理系统

DAPP开发的性能优化

北京木奇移动技术有限公司

dapp开发 区块链开发 软件外包公司

AI赋能英语背单词App的技术方案

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI背单词

渣运公司心头好:“充电便宜跑得远,豪沃TX新能源自卸车巴适得板!”

科技热闻

我把PS卸载了!只因这款国产免费AI,动动嘴就能把废片变大片。

田威AI

Twitter Storm:开源实时Hadoop_Java_Bienvenido David_InfoQ精选文章