Storm简介

作者: TZX_0710 | 来源:发表于2020-03-20 23:35 被阅读0次

Storm是一个开源的分布式实时计算框架,可以简单、可靠的方式进行大数据流处理。通常用于实时分析,在线机器学习,次序计算,分布式RPC、ETL等场景。Storm具有如下特点

支持水平横向拓展
具有高容错性
处理速度非常快,每个节点每秒能处理超过一百万个tuples(元组)
易于操作和设置,并且可以与任何编程一起使用
支持本地模式运行,开发简单
支持图形化管理界面

Storm对比Hadoop

Hadoop采用mapreduce处理数据,而Mapreduce主要是对数据进行批处理,这使得Hadoop更适合于海量离线数据处理的场景。而Storm的设计目表是对数据进行实时计算

Storm与SparkStreaming

在前面讲解SparkStreaming的时候,已经提过SparkStreaming真正意义上并不能算做是一个流处理框架,SparkStreming接受实时数据,对数据拆分,然后进行微批处理。只不过SparkStreming可以将数据进行小粒度拆分,使得其能够接近于流处理的效果,但其本质上还是批处理(微批处理)

Storm对比Flink

Storm和Flink都是真正意义上的实时计算框架对比如下

storm flink
状态管理 无状态 有状态
窗口支持 对事件窗口支持弱,缓存整个窗口的所有数据,窗口结束时一起计算 窗口支持较为完善,自带一些窗口聚合方法并且会自动管理窗口状态
消息传递 At Most Once 、At Least Once At Most Once、At Least Once、Exactly Once
容错方式 ACK 机制:对每个消息进行全链路跟踪,失败或者超时时候进行重发 检查点机制:通过分布式一致性快照机制,对数据流和算子状态进行保存。在发生错误时,使系统能够进行回滚。
Storm流程图

一、Storm核心概念

1.Topologies(拓扑)

一个完整Strom流处理程序被成为Strom topology。它是一个有SpoutsBlots通过Stream连接起来的有向无环图,Storm会保持每个提交到集群topology持续地运行,从而源源不断的数据流,直到你将其杀死为止。

2. Stream流

Stream是Storm中的核心概念。一个Stream是无界的、以分布式方式并行创建和处理的Tuple序列。Tuple可以包含大多数基本类型以及自定义类型的数据。简单来说Tuple是流数据的载体,Stream就是一系列Tuple

3. Spouts

Spouts是数据流的源头,一个Spout可以向不止一个Streams中发送数据。Spout通常分为可靠和不可靠。可靠的Spout能够在失败的时候重新发送Touple。不可靠的Spout一旦把Tuple发送出去就不关心其去处了。

Bolts

Bolts是流处理的处理单元,它可以从一个或多个Streams中接受数据,处理完成后再发射新的Streams中,Bolts可以执行过滤,聚合,连接等操作,并能与文件系统或者数据库交互。

二、Stream groupings

Stream Groupings
注:一个圆圈表示一个Task

Spouts和bolts在集群上执行任务时,是由多个Task并行执行的,当一个Tuple需要从BoltA 发送到BoltB执行的时候。这些操作都是由Stream groupings分组策略来决定的,Strom一共有8个内置的Stream Grouping 。用户也可以自己实现CustomStreamGrouping接口自定义实现。

1. shuffle grouping

Tuple随机的分发到每个Bolt的每个Task上,每个Bolt获取等量的Tuples

2. Fields grouping

Streams通过grouping指定的字段field来分组。假设通过userid字段进行分区,那么具有相同的user-id的Tuples就会发送到一个Task

3. Partial Key grouping

Streams通过grouping中指定的字段field来分组,与fields grouping相似。但是对于两个下游的Bolt来说是负载均衡的,可以在输入数据不平均的情况下更好的优化。

4. All Grouping

Streams 会被所有的Bolts的Task进行复制,但是会存在数据重复处理,所以需要谨慎使用。

5. Global grouping

整个Streams会进入Bolt的其中一个Task,通常会进入id最小的Task。

6. None grouping

当前的None grouping和shuffle grouping等价,随机分发

7. Direct grouping

Direct grouping 只能被用于 direct streams。使用这种方式需要由Tuple的生产者直接指定由哪个Task进行处理

8. Local of shuffle grouping

如果目标Bolt有Tasks和当前Bolt的Tasks在同一个worker进程,那么则优先将Tuple Shuffled到处于同一个进程的目标Bolt的Tasks上,可以减少网络传输,否则和Shuffle grouping一样处理

Storm 架构

三、Storm架构

1.Nimbus进程

也叫做Master Node,是Storm集群工作的全局指挥官。主要功能如下:

  1. 通过Thirft接口,监听接受client提交的topology
  2. 根据集群的Workers的资源情况,将Client提交到Topology进行任务分配,分配结果写入zookeeper
  3. 通过Thirft接口,监听Supervisor的下载Topology代码的请求,并且提供下载。
  4. 通过Thrift接口,监听UI对统计信息的读取,从zookeeper上读取统计信息,返回给UI。
  5. 若进程退出后,立即在本机重启,不影响集群运行

2. Supervisor进程

也叫做worker Node,是Storm集群的资源管理者,按需启动Workerj进程。主要功能如下

  1. 定时从zookeeper检查是否有新的Topology代码未下载到本地,删除旧的Topology代码
  2. 根据Nimbus的任务计划,在本机按需启动一个或者多个worker进程,并且监控进程情况。
  3. 若进程退出,则本机重启,不影响集群

3. Worker进程

Storm集群的任务构造者,构造spoult或Bolt的Task实例,启动Executor线程。主要功能如下:
1.根据zookeeper上分配的Task,在本进程启动一个或者多个Executor线程,将构造好的Task实例交给Executor运行。

  1. 向zookeeper写入心跳
  2. 维持传输队列,发送Tuple到其他的Worker
  3. 若进程退出,立即本机重启,不影响集群

4. Executor线程

Storm集群的任务执行者,循环执行Task代码。执行一个或者多个Task,执行Acker机制,负责发送Task处理状态给对应的Spout所在worker

5. zookeeper

Nimbus和Supervisor进程都被设计为快速失败(遇到任何意外情况时进程自毁),和无状态(所有状态保存在zookeeper或磁盘上)。如果进程意外被销毁,重启的时候只需要从zookeeper上获取之前的状态数据即可,不会丢失数据。

6. 并行度

并行度
  1. 一个运行中的Topology由集群中的多个worker进程组成
  2. 默认情况下,每个worker进程默认启动一个线程
  3. 默认情况下 每个executor默认启动一个Task线程
  4. Task是组成Compoment的代码单元(spout或者Bolt)

相关文章

  • java大数据之storm

    一、Storm简介 1.1 Storm是什么 Apache Storm(http://storm.apache.o...

  • storm简介

    Storm:Apache Storm is a free and open source distributed ...

  • Storm 简介

    Storm是一个分布式的,可靠的,容错的数据流处理系统。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简...

  • storm简介

    概述 Storm是Twitter开源的分布式实时大数据处理框架,最早开源于github,从0.9.1版本之后,归于...

  • Storm简介

    Storm是一个开源的分布式实时计算框架,可以简单、可靠的方式进行大数据流处理。通常用于实时分析,在线机器学习,次...

  • Apache Storm简介

    Apache Storm简介 转载: https://www.w3cschool.cn/apache_storm/...

  • storm

    Storm是什么Storm官方网站有段简介Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易...

  • 【Storm的简介】

    storm分布式实时计算框架,在整个程序中,spout接收数据源并封装数据为tuple,然后将tuple发送给bo...

  • 1 Storm简介

    为什么选择Storm 因为公司业务需求实时性高。尝试了sparkstream,实时性没有storm高。所以就选择了...

  • Storm 概念简介

    刚刚甩了自己几个大嘴巴子,让自己好好静一静。不多说了,重新整理下Storm的简介。按下自己看啥都难受的心。 一、A...

网友评论

    本文标题:Storm简介

    本文链接:https://www.haomeiwen.com/subject/vidjyhtx.html