分布式流式计算框架Storm

Storm是一个用于实时处理的框架,与Hadoop的批处理不同。它提供了类似于Hadoop MapReduce的编程模型,但处理数据的方式是流式而非批量。在Storm的体系结构中,Nimbus负责资源分配和任务调度,Supervisor管理和启动worker进程,Worker运行组件逻辑,包括Spout和Bolt任务。Storm通过Executor和Task实现数据的实时计算,并具备高容错机制,适用于需要快速响应的实时流处理场景。

 Storm用于实时处理,就好比 Hadoop 用于批处理。

        --> 离线计算:批量获取数据,批量传输数据,周期性比量计算数据,数据展示(Sqoop-->HDFS--> MR ---> HDFS)

            --- 代表技术:

                    -- Sqoop 批量导入数据

                    -- HDFS 批量存储数据

                    -- MapReduce 批量计算

                    -- Hive

        --> 流式计算:数据实时产生,数据实时传输,数据实时计算,实时展示(Flume ---> Kafka ---> 流式计算 ---> Redis)

            --- 代表技术:

                    -- Flume 实时获取数据

                    -- Kafka/metaq 实时数据存储

                    -- Storm/JStorm 实时数据计算

                    -- Redis 实时结果缓存,持久化存储(MySQL)

===> Storm 与 Hadoop 的区别

        --> 

Storm

Hadoop

用于实时计算

用于离线计算

处理的数据保存在内存中,连连不断

处理的数据保存在文件系统中

数据通过网络传输进来

从 HDFS 平台获取数据

Storm与Hadoop的编程模型相似

结构

Hadoop

Storm

主节点

JobTracker

Nimbus

从节点

TaskTracker

Supervisor

应用程序

Job

Topology

工作进程名称

Child

Worker

计算模型

Map / Reduce

Spout / Bolt


原文链接:https://blog.csdn.net/weiyongle1996/article/details/77142245  Storm架构与运行原理

 

===> Storm 体系结构

 

===> Storm 运行流程

        --> Storm 结构中各部分职责:

            --- Nimbus: 

                    负责资源分配和任务调度

            --- Supervisor: 

            负责接受 Nimbus 分配的任务,启动和停止属于自己管理的 worker 进程

                  (*)可通过配置文件设置当前 supervisor 上启动几个 worker 进程

            --- Worker:

                    运行具体处理 组件逻辑 ,任务类型有两种:

                    -- Spout任务

                    -- Bolt 任务

            --- Executor: 

                        Storm 0.8 之后, Executor 为 Worker 进程中的具体的物理线程,同一个 Spout/Bolt的 Task可能会共享一个物理线程,一个 Executor 中只能运行隶属于同一个 Spout/Bolt 的 Task

            --- Task: 

                    worker 中每一个 spout/bolt 的线程称为一个 task, 在 storm0.8 之后, task 不再与物理线程对应,不同 spout/bolt 的 task 可能会共享一个物理线程,该 线程称为 executor

https://blog.51cto.com/songqinglong/2067815 Storm 环境部署及简单使用

 

实时流处理,举例:QQ实时在线。源源不断的处理数据,输出数据。Spark streaming

MR批处理,离线处理。类似直梯和扶梯。做不到实时行,两大劣势,1.数据量大PB级,2.经过split,shuffle,reduce,要频繁跟磁盘交互。Storm是放在内存中进行,和磁盘交互少,数据量也少。应用场景不同。

Spark Streaming,微批处理框架。小区小巴凑够人。

Storm,一直在运转,数据量不能大,保证实时性。实时流式处理框架。类似共享单车。一个时间只处理一个table数据。

批处理框架,

分布式数据:切片,镜像全量。

acker机制保证高容错。

Twitter开发,包括redis

 

 

批量和流式的区别:

1.数据处理单位:

批量计算按数据块来处理数据,每一个task接收一定大小的数据块,比如MR,map任务在处理完一个完整的数据块后(比如128M),然后将中间数据发送给reduce任务。

流式计算的上游算子处理完一条数据后,会立马发送给下游算子,所以一条数据从进入流式系统到输出结果的时间间隔较短(当然有的流式系统为了保证吞吐,也会对数据做buffer)。

这样的结果就是:批量计算往往得等任务全部跑完之后才能得到结果,而流式计算则可以实时获取最新的计算结果。

离线=批量?实时=流式?

习惯上我们认为离线和批量等价;实时和流式等价,但其实这种观点并不完全正确。

假设一种情况:

当我们拥有一个非常强大的硬件系统,可以毫秒级的处理Gb级别的数据,那么批量计算也可以毫秒级得到统计结果(当然这种情况非常极端,目前不可能),那我们还能说它是离线计算吗?

所以说

  • 离线和实时应该指的是:数据处理的延迟;
  • 批量和流式指的是:数据处理的方式。
    两者并没有必然的关系。事实上Spark streaming就是采用小批量(batch)的方式来实现实时计算。

 

https://blog.csdn.net/byamao1/article/details/80152950

https://blog.csdn.net/qq_38704184/article/details/85054291

https://blog.csdn.net/kozazyh/article/details/79444762

https://blog.csdn.net/qq_24990561/article/details/87836854

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值