您的位置:首页 > 其它

Storm实战——第一章 概述

2013-06-02 21:44 309 查看
翻译自:Getting Started With Storm (作者:Jonathan Leibiusky, Gabriel Eisbruch and Dario Simonassi)

由于本人英文水平和理解有限,翻译难免错误,还望大家多多指正,请联系storm_getstarted@126.com

欢迎大家留言跟帖或邮件至storm_getstarted@126.com,共同学习Storm

Storm是分布式、可靠的、具有容错性的流数据处理系统。它将任务委派给各种负责简单特定任务处理的组件。Storm集群的输入流被一个称作spout的组件进行处理,spout组件将数据以某种方式传给bolt组件。Bolt要么存储数据,要么将它传给其它的bolt。你可以设想storm集群是由许多bolt组件组成的链式处理结构,每个bolt对spout发射出的数据进行各种转换操作。

为了解释这个概念,这里有一个简单例子。昨晚我看新闻,主持人开始播报政客和他的对手在不同主题上的政见。他们持续重复着不同的姓名,我想知道是否每个姓名提到了相同的次数,或者在提到的数目上存在偏见。

设想将主持人正在说到的副标题作为流数据的输入,你应该有一个spout从文件(socket连接、HTTP、或其它方式)读入数据。当文字一行行流入时,spout将它们传给第一个bolt,它会将它们拆分成一个个单词。单词流传给另一个预存了政客姓名的链表的bolt,它会比较每个单词与链表中姓名。当匹配时,第二个bolt将在数据库中的该姓名的计数加1。任何时候只要你想知道结果,你只要对数据库进行查询,它会随着数据的实时输入而不断更新。所有组件(包括spouts和bolts)的排列和通信被称作topology(如图1-1所示)。



图1-1 一个简单的topology
现在设想简单地为每个bolt和spout在跨整个集群中定义并行级别,以便你可以无限地扩展你的topology 。是不是很令人吃惊?尽管这个一个简单示例,但你可以看出Storm的威力。

Storm的典型实例案例有哪些?

流处理

如之前示例所解释的,与其它流处理系统不同,Storm无需中间队列。

持续计算

持续地向客户发送数据,如站点度量,以使他们能够实时更新和显示结果。

分布式远程过程调用

简单并行的CPU密集型操作。

Storm组件

在一个Storm集群中,所有节点在主节点的组织下持续运行。

在Storm集群中,存在两种不同的节点:主节点和工作节点。主节点运行着Nimbus后台进程,它负责在集群中分发代码,分配任务给每个工作节点,同时监控失败。工作节点运行着Supervisor的后台进程,它负责执行topology的一部分。Storm中的一个topology由跨不同的机器的多个工作节点运行着。

因Storm维护着所有集群状态在Zookeeper中或本地磁盘中,进程是无状态的,在失败或重启时不会影响系统的正常运行(如图1-2)。



图1-2 Storm集群组件
在底层,Storm使用到了zeromq(0mq)的一些非常精彩的特性。zeromq是一个高级的,可嵌入式的网络库。下面列举一些zeromq的特征。

l 虽然是一个Socket库,但却更像是一个并发开发框架

l 对并发项目与超级计算来讲,比TCP协议要快

l 提供进程内、进程间、机器间和广播方式的消息通讯。

l 对可扩展的多核消息传递应用程序提供异步I/O支持。

l 在多对多的网络环境中提供多对一,发布/订阅(one-to-many),管道(one-to-one),请求/响应等模型。

Storm仅使用推/拉sockets。

Storm特点

在这些设计概念和章节中,Storm拥有一些非常优秀的特点,使得Storm非常独特。

编程简单

如果你已经尝试从头开始做实时处理,你将非常清楚地体会到那是多么痛苦。有了Storm,复杂性将被神奇地降低了。

多编程语言支持

它不仅在基于Java虚拟机的语言上非常容易开发,Storm还支持任意的语言,只要你使用或实现一个小的中间库。

容错性

Storm集群关注机器的实效,当需要时会重新分配任务。

可扩展性

为了扩展,你需要做的只是加入更多的机器到集群中。Storm将在它们变得可用时将任务重分配给新的机器。

可靠性

所有的消息均保证至少被处理一次。如果出错,消息可能会被处理超过一次,但你不会漏掉任何消息。

快速

速度是驱动Storm设计的一个关键因素

Transactional

You can get exactly once messaging semantics for pretty much anycomputation.

【参考翻译】

事务

你可以通过几乎任何的计算获得准确的消息语义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: