天天看点

《Storm分布式实时计算模式》——1.2 单词计数topology的数据流

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

如图1-2所示,单词计数topology由一个spout和下游的三个bolt组成。

《Storm分布式实时计算模式》——1.2 单词计数topology的数据流

1.2.1 语句生成spout

sentencespout类的功能很简单,向后端发射一个单值tuple组成的数据流,键名是“sentence”,键值是字符串格式存储的一句话。如下所示:

《Storm分布式实时计算模式》——1.2 单词计数topology的数据流

为了简化起见,我们的数据源是一个静态语句的列表。spout会一直循环将每句话作为tuple发射。实际应用中,spout通常会连接到动态数据源上,比如通过twitter的api获取推特消息。

1.2.2 语句分割bolt

语句分割bolt(splitsentencebolt)类会订阅sentence spout发射的tuple流。每当收到一个tuple,bolt会获取“sentence”对应值域的语句,然后将语句分割为一个个的单词。每个单词向后发射一个tuple:

《Storm分布式实时计算模式》——1.2 单词计数topology的数据流

1.2.3 单词计数bolt

单词计数bolt(wordcountbolt)订阅splitsentencebolt类的输出,保存每个特定单词出现的次数。每当bolt接收到一个tuple,会将对应单词的计数加一,并且向后发送该单词当前的计数。

《Storm分布式实时计算模式》——1.2 单词计数topology的数据流

1.2.4 上报bolt

上报bolt订阅wordcountbolt类的输出,像wordcountbolt一样,维护一份所有单词对应的计数的表。当接收到一个tuple时,上报bolt会更新表中的计数数据,并且将值在终端打印。

)