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

809

被折叠的 条评论
为什么被折叠?



