您现在的位置是:首页 > 文章详情

wwwtl222333com什么是Storm13O9439III2?

日期:2019-10-23点击:583

什么是Storm

本文的将介绍一些 storm 入门的基础知识,包括 storm 的核心概念,storm 的并发机制和消息可靠处理机制基于 storm 1.0.x版本。

什么是Storm?

Strom 是一款开源的分布式实时计算框架,是一种基于数据流的实时处理系统,数据吞吐量大,实时性高。

为什么使用Storm?

来自官方的回答:

It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate.

确实如官方所言,本人在使用 storm 的过程中深有感触,其可以帮助开发人员很容易的针对海量数据实现实时、可靠的数据处理。

Storm的核心概念

Storm 计算结构中的几个核心概念为 topology,stream,spout,bolt,下面我们将依次介绍。

Topology

Topology 是 storm 中最核心的概念,其是运行在 storm 集群上的一个实时计算应用,相当于 hadoop 中的一个 job,区别于 job 的时,job 会有明确的开始和结束,而 topology 由于实时的流式计算的特殊性,从启动的那一刻起会永远的运行下去,直到手动停止。

Topology 由 stream,spouts,bolts 组成,可以描述为一个有向无环图,如下:

Stream

Stream 是 storm 中对数据流的抽象,是由无限制的 tuple 组成的序列。Tuple 可以理解为包含一个或多个键值对的 hash。Tuples 在 stream 中流经 bolts,被逐步处理,最终得到预设的结果。

Stream 可比作一条源源不绝的河流,tuple 就是组成这条河流的无数水滴。每一个 stream 在 storm 中都有一个唯一标示的 id。

Spout

从图一可以看出,spout 是一个 topology 的数据源,负责连接数据源,并将数据转化为 tuple emit 到 topology中,经由 bolts 处理。

Spout 提供了一对核心方法来保障 storm 在数据没有被正确处理的情况下,不会被丢弃,仍能被重新处理,当然这是可选的,我们也可以不关心 tuple 是否被正确的处理,只负责向topology 中 emit 数据(在某些场景下可能不需要)。具体实现原理在后文会详细介绍。

Storm + Kakfa 是很常见的组合,storm提供了storm-kafka扩展,封装了多个可用的 kafka spouts 供直接使用,相关文档可以参考这里。

Bolt

Bolt 是 topology 中的数据处理单元,每个 bolt 都会对 stream 中的 tuple 进行数据处理。复杂的数据处理逻辑一般拆分成多个简单的处理逻辑交由每个 Bolt 负责。

Bolt 可以执行丰富的数据处理逻辑,如过滤,聚合,链接,数据库操作等等。

Bolt 可以接受任意个数据流中的 tuples,并在对数据进行处理后选择性的输出到多个流中。也就是说,bolt 可以订阅任意数量的spouts 或其他 bolts emit 的数据流,这样最终形成了复杂的数据流处理网络,如图一。

理解了 storm 的核心概念后,下文将介绍storm的并发机制。

以下是付费内容

Storm 的并发

上文提到 storm 是 scalable 的,是因为 storm 能将计算切分成多个独立的 tasks 在集群上并发执行,从而支持其在多台设备水平扩容。那 storm 的并发是如何实现的呢?回答这个问题之前先来看一下 topology 是如何运行在 storm 集群中的:
QQ_20191024182757

原文链接:https://yq.aliyun.com/articles/722375
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章