Storm入门之第一章

原书下载地址 译者:吴京润   编辑:方腾飞

译者注:本文翻译自《Getting Started With Storm》,本书中所有Storm相关术语都用斜体英文表示。 这些术语的字面意义翻译如下,由于这个工具的名字叫Storm,这些术语一律按照气象名词解释

  • spout 龙卷,读取原始数据为bolt提供数据
  • bolt 雷电,从spout或其它bolt接收数据,并处理数据,处理结果可作为其它bolt的数据源或最终结果
  • nimbus 雨云,主节点的守护进程,负责为工作节点分发任务。

下面的术语跟气象就没有关系了

  • topology 拓扑结构,Storm的一个任务单元
  • define field(s) 定义域,由spoutbolt提供,被bolt接收

本文是该书的第一章。

基础知识

Storm是一个分布式的,可靠的,容错的数据流处理系统。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt, bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt。你可以想象一下,一个Storm集群就是在一连串的bolt之间转换spout传过来的数据。

这里用一个简单的例子来说明这个概念。昨晚我在新闻节目里看到主持人在谈论政治人物和他们对于各种政治话题的立场。他们一直重复着不同的名字,而我开始考虑这些名字是否被提到了相同的次数,以及不同次数之间的偏差。

想像播音员读的字幕作为你的数据输入流。你可以用一个spout读取一个文件(或者socket,通过HTTP,或者别的方法)。文本行被spout传给一个bolt,再被bolt按单词切割。单词流又被传给另一个bolt,在这里每个单词与一张政治人名列表比较。每遇到一个匹配的名字,第二个bolt为这个名字在数据库的计数加1。你可以随时查询数据库查看结果, 而且这些计数是随着数据到达实时更新的。所有组件(spoutsbolts)及它们之间的关系请参考拓扑图1-1

现在想象一下,很容易在整个Storm集群定义每个bolt 和spout的并行性级别,因此你可以无限的扩展你的拓扑结构。很神奇,是吗?尽管这是个简单例子,你也可以看到Storm的强大。

有哪些典型的Storm应用案例?

数据处理流

正如上例所展示的,不像其它的流处理系统,Storm不需要中间队列。

连续计算

连续发送数据到客户端,使它们能够实时更新并显示结果,如网站指标。

分布式远程过程调用

频繁的CPU密集型操作并行化。

Storm组件

对于一个Storm集群,一个连续运行的主节点组织若干节点工作。

在Storm集群中,有两类节点:主节点master node和工作节点worker nodes。主节点运行着一个叫做Nimbus的守护进程。这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。Supervisor守护进程作为拓扑的一部分运行在工作节点上。一个Storm拓扑结构在不同的机器上运行着众多的工作节点。

因为Storm在Zookeeper或本地磁盘上维持所有的集群状态,守护进程可以是无状态的而且失效或重启时不会影响整个系统的健康(见图1-2)

在系统底层,Storm使用了zeromq(0mq, zeromq(http://www.zeromq.org))。这是一种先进的,可嵌入的网络通讯库,它提供的绝妙功能使Storm成为可能。下面列出一些zeromq的特性。

  • 一个并发架构的Socket库
  • 对于集群产品和超级计算,比TCP要快
  • 可通过inproc(进程内), IPC(进程间), TCP和multicast(多播协议)通信
  • 异步I / O的可扩展的多核消息传递应用程序
  • 利用扇出(fanout), 发布订阅(PUB-SUB),管道(pipeline), 请求应答(REQ-REP),等方式实现N-N连接

NOTE: Storm只用了push/pull sockets

Storm的特性

在所有这些设计思想与决策中,有一些非常棒的特性成就了独一无二的Storm。

  • 简化编程    如果你曾试着从零开始实现实时处理,你应该明白这是一件多么痛苦的事情。使用Storm,复杂性被大大降低了。
  • 使用一门基于JVM的语言开发会更容易,但是你可以借助一个小的中间件,在Storm上使用任何语言开发。有现成的中间件可供选择,当然也可以自己开发中间件。
  • 容错         Storm集群会关注工作节点状态,如果宕机了必要的时候会重新分配任务。
  • 可扩展    所有你需要为扩展集群所做的工作就是增加机器。Storm会在新机器就绪时向它们分配任务。
  • 可靠的    所有消息都可保证至少处理一次。如果出错了,消息可能处理不只一次,不过你永远不会丢失消息。
  • 快速        速度是驱动Storm设计的一个关键因素
  • 事务性   You can get exactly once messaging semantics for pretty much any computation.你可以为几乎任何计算得到恰好一次消息语义。
时间: 2024-09-20 00:44:43

Storm入门之第一章的相关文章

vb入门教程-第一章HELLO WORLD

教程|入门教程 第一章 HELLO WORLD! 没学过编程的人常常会问,编程难不难,这个问题很难回答.难,的确很难,要编一个好的程序尤其是这样,并且有些程序还要用到一些其他专业的知识,比如说一个图形处理程序,就要对图像的格式有所了解,甚至一些美术知识:但编程也很容易,就拿VB来说,编一个自娱自乐的小工具还是一件相当惬意的事情呢,当然它没法完全代替人工,譬如说完成你的家庭作业.向学校发射导弹-- 作为第四代计算机语言,VB的特点是显而易见的.因为是"可视的"所以我们不妨先看看VB的界面

Storm入门之第8章事务性拓扑

Storm入门之第8章事务性拓扑 本文翻译自<Getting Started With Storm>译者:吴京润    编辑:郭蕾 方腾飞 正如书中之前所提到的,使用Storm编程,可以通过调用ack和fail方法来确保一条消息的处理成功或失败.不过当元组被重发时,会发生什么呢?你又该如何砍不会重复计算?   Storm0.7.0实现了一个新特性--事务性拓扑,这一特性使消息在语义上确保你可以安全的方式重发消息,并保证它们只会被处理一次.在不支持事务性拓扑的情况下,你无法在准确性,可扩展性,以

[C# 3.0 入门] [第一章 Lambda表达式] 第五节

[C# 3.0 入门] [第一章 Lambda表达式] 第五节:Lambda表达式的使用范例 & Lambda表达式的各种变体 Lambda表达式的使用范例 到现在为止的例子大多数,完全都是从文法上到功能上的说明,多数情况下不必使用Lambda表达式也能够写出来.最后,我还是来展示几个有一定实用性的Lambda表达式的实例. 这里是一个,输入整形的数组,以其值为除数,执行除法运算后输出结果的程序.因为要执行除法运算,所以输入的值可能存在不能接受的值(0)的情况(就是说,这个示例代码可以在输入值不

[C# 3.0 入门] [第一章 Lambda表达式] 第四节

[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况 成问题的是,虽然为了源代码的简洁性,很想用Lambda表达式,但是要写的代码却不能全部都用Lambda表达式来写. 那么, Lambda表达式究竟能做到什么程度呢? 习惯了C/C++编程风格的程序员,一定以为因C#语法与之很相似,所以用C#编写相对复杂的程序应该也没有问题.可是很遗憾,情况不是这样.那是因为C/C++具有能写出复杂功能的表达式的逗号表达式,而C#却没有. 例如,

Knockout应用开发指南 第一章:入门

原文:Knockout应用开发指南 第一章:入门 1    Knockout简介 (Introduction) Knockout是一个轻量级的UI类库,通过应用MVVM模式使JavaScript前端UI简单化. Knockout有如下4大重要概念: 声明式绑定 (Declarative Bindings):使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上. UI界面自动刷新 (Automatic UI Refresh):当您的模型状态(model state)改变时,您的UI

ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉Windows的基本操作 · 接触过地理信息系统的概念 · 理解地理数据的特点 1.2 预期效果 我们期望用户在阅读完本指南后对以下知识有一定的了解: · 了解ArcGIS for Desktop的组成与功能 · 熟悉使用ArcGIS for Desktop进行数据编辑.整饰和输出的流程 · 如何使用A

《PADS 9.5电路设计与仿真从入门到精通》——第一章 绪论 1.1 PCB的基本概念及设计工具

第一章 绪论 PADS 9.5电路设计与仿真从入门到精通 本章主要介绍PADS的基本概念及特点,包括PCB设计的一般原则.基本步骤.标准规范等.着重介绍了美国Mentor Graphics公司的PCB设计软件:PADS 9.5,包括了PADS 9.5的发展过程以及它的新特点.PADS 9.5是一款非常优秀的PCB设计软件,它具有完整强大的PCB绘制工具,界面和操作十分简洁,希望用户好好学习本书,以便更加方便地使用PADS 9.5软件. 1.1 PCB的基本概念及设计工具 PADS 9.5电路设计

《Storm入门》中文版

本文翻译自<Getting Started With Storm>译者:吴京润    编辑:郭蕾 方腾飞 本书的译文仅限于学习和研究之用,没有原作者和译者的授权不能用于商业用途. 译者序 Storm入门终于翻译完了.首先感谢并发编程网同意本人在网站上首发本书译文,同时还要感谢并发编程网的各位大牛们的耐心帮助.这是本人翻译的第一本书,其中必有各种不足请诸位读者朋友不吝斧正. 译完此书之后,我已经忘记了是如何知道的Storm这个工具了.本人读过的所有技术书籍大部分都是在地铁上完成的,现在已经成了习

Programming Microsoft Office 2000 Web Components第一章

web 译者说明:<Programming Microsoft Office 2000 Web Components>是我从网上下载的一本讲述OWC技术的英文电子书,之所以要翻译这本书,是基于以下几个想法:1.阅读英文资料时常常会不求甚解,忽略很多细节和不容易阅读的句子,如果强迫自己逐句的翻译出来,则会对原来的英文资料有更加全面.详细和深刻的了解.2.可以锻炼自己在英语方面的能力.3.能够给其他需要这方面的资料的朋友提供一定的帮助. 这是本人初次进行这方面的工作,本人的技术和英文能力都很一般,