Storm实战——第一章 概述

翻译自: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.

【参考翻译】

事务

       你可以通过几乎任何的计算获得准确的消息语义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值