Storm -- 1

Storm

Storm 是 Twitter 开源的分布式实时大数据处理框架,无存储功能。最早开源于 github,从 0.9.1 版本之后,归于 Apache 社区,被业界称为实时版 Hadoop。随着越来越多的场景对 Hadoop 的 MapReduce 高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统 (高频交易、股票) 等等,大数据实时处理解决方案(流计算)的应用日趋广泛,目前已是分布式技术领域最新爆发点,而 Storm 更是流计算技术中的佼佼者和主流。
image.png

image.png

与Hadoop对比

Storm: 分布式实时计算,强调实时性,常用于实时性要求较高的地方
Hadoop: 分布式批处理计算,强调批处理,常用于对已经在的大量数据挖掘、分析

核心组件

Nimbus:即 Storm 的 Master,负责资源分配和任务调度。一个 Storm 集群只有一个 Nimbus。

Supervisor:即 Storm 的 Slave,负责接收 Nimbus 分配的任务,管理所有 Worker,一个 Supervisor 节点中包含多个 Worker 进程。

Worker:工作进程,每个工作进程中都有多个 Task。

Task:任务,在 Storm 集群中每个 Spout 和 Bolt 都由若干个任务(tasks)来执行。每个任务都与一个执行线程相对应。

Topology:计算拓扑,Storm 的拓扑是对实时计算应用逻辑的封装,它的作用与 MapReduce 的任务(Job)很相似,区别在于 MapReduce 的一个 Job 在得到结果之后总会结束,而拓扑会一直在集群中运行,直到你手动去终止它。拓扑还可以理解成由一系列通过数据流(Stream Grouping)相互关联的 Spout 和 Bolt 组成的的拓扑结构。

Stream:数据流(Streams)是 Storm 中最核心的抽象概念。一个数据流指的是在分布式环境中并行创建、处理的一组元组(tuple)的无界序列。数据流可以由一种能够表述数据流中元组的域(fields)的模式来定义。

Spout:数据源(Spout)是拓扑中数据流的来源。一般 Spout 会从一个外部的数据源读取元组然后将他们发送到拓扑中。根据需求的不同,Spout 既可以定义为可靠的数据源,也可以定义为不可靠的数据源。一个可靠的 Spout 能够在它发送的元组处理失败时重新发送该元组,以确保所有的元组都能得到正确的处理;相对应的,不可靠的 Spout 就不会在元组发送之后对元组进行任何其他的处理。一个 Spout 可以发送多个数据流。

Bolt:拓扑中所有的数据处理均是由 Bolt 完成的。通过数据过滤(filtering)、函数处理(functions)、聚合(aggregations)、联结(joins)、数据库交互等功能,Bolt 几乎能够完成任何一种数据处理需求。一个 Bolt 可以实现简单的数据流转换,而更复杂的数据流变换通常需要使用多个 Bolt 并通过多个步骤完成。

扫描二维码关注公众号,回复: 9866290 查看本文章

Stream grouping:为拓扑中的每个 Bolt 的确定输入数据流是定义一个拓扑的重要环节。数据流分组定义了在 Bolt 的不同任务(tasks)中划分数据流的方式。在 Storm 中有八种内置的数据流分组方式。

Reliability:可靠性。Storm 可以通过拓扑来确保每个发送的元组都能得到正确处理。通过跟踪由 Spout 发出的每个元组构成的元组树可以确定元组是否已经完成处理。每个拓扑都有一个 “消息延时” 参数,如果 Storm 在延时时间内没有检测到元组是否处理完成,就会将该元组标记为处理失败,并会在稍后重新发送该元组。

参考资料

发布了593 篇原创文章 · 获赞 57 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/ThePromonkeyOf_HeLuo/article/details/100282830