天天看点

《Storm分布式实时计算模式》——第1章 分布式单词计数1.1 Storm topology的组成部分——stream、spout和bolt

本节书摘来自华章计算机《storm分布式实时计算模式》一书中的第1章,第1.1节,作者:(美)p. taylor goetz brian o’neill 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

本章将介绍使用storm建立一个分布式流式计算应用时涉及的核心概念。我们通过建立一个简单的计数器程序实现这个目的。计数器将持续输入的一句句话作为输入流,统计其中单词出现的次数。单词计数这个例子浅显易懂,引入了多种数据结构、技术和设计模式。这些都是实现更复杂计算所必须的基础。

本章首先概要介绍storm的数据结构,然后实现一个完整storm程序所需的各个组成部分。读完本章,读者将会了解storm计算的基本结构、搭建开发环境的方法、storm程序的开发和调试技术。

本章包括以下主题:

strom topology的基本组成部分——stream、spout和bolt。

搭建storm开发环境。

实现单词计数程序。

并发和容错机制。

并发计算任务以实现扩容。

storm分布式计算结构称为topology(拓扑),由stream(数据流),spout(数据流的生成者),bolt(运算)组成,如图1-1所示。storm topology大致等同与hadoop这类批处理运算中的job。然而,批处理运算中的job对运算的起始和终止有着明确定义,storm topology会一直运行下去,除非进程被杀死或被取消部署。

《Storm分布式实时计算模式》——第1章 分布式单词计数1.1 Storm topology的组成部分——stream、spout和bolt

https://yqfile.alicdn.com/22038b0f9457d69f3739b84f8e706b23007317b1.png" >

1.1.1 stream

storm的核心数据结构是tuple。tuple是包含了一个或者多个键值对的列表,stream是由无限制的tuple组成的序列。如果你对复杂事务处理(complex event processing,cep)比较熟悉,tuple就相当于cep中的event。

1.1.2 spout

spout代表了一个storm topology的主要数据入口,充当采集器的角色,连接到数据源,将数据转化为一个个tuple,并将tuple作为数据流进行发射。

你会发现storm为实现spout提供了非常简单的api。开发一个spout的主要工作就是编写代码从数据源或者api消费数据。数据源可能包括以下几种:

web或者移动程序的点击流

twitter或其他社交网络的消息

传感器的输出

应用程序的日志事件

因为spout通常不会用来实现业务逻辑,所以在多个topology中常常可以复用。

1.1.3 bolt

bolt可以理解为计算程序中的运算或者函数,将一个或者多个数据流作为输入,对数据实施运算后,选择性地输出一个或者多个数据流。bolt可以订阅多个由spout或者其他bolt发射的数据流,这样就可以建立复杂的数据流转换网络。

像spout api一样,bolt可以执行各式各样的处理功能,bolt的编程接口简单明了,bolt可以执行的典型功能包括:

过滤tuple

连接(join)和聚合操作(aggregation)

计算

数据库读写

继续阅读