Storm核心组件、编程模型

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
实时计算 Flink 版,5000CU*H 3个月
云数据库 Tair(兼容Redis),内存型 2GB
简介: Storm核心组件、编程模型

Storm简介


storm是用来做实时计算的框架,所以介绍storm之前需要知道什么是流式计算。

流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示

代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果。

而Storm用来实时处理数据,特点:低延迟、高可用、分布式、可扩展、数据不丢失。提供简单容易理解的接口,便于开发。


Storm与Hadoop的区别


Storm用于实时计算,Hadoop用于离线计算。

Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批。

Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中。

Storm与Hadoop的编程模型相似


Storm编程模型


image.png

流程分析:

1、storm组件由spout和bolt组成,spout组件(取源数据流的组件)首先从外部获取数据;

2、接着spout会将数据处理后以tuple为单位发射给后续bolt组件(该组件接收数据后进行逻辑处理),至于如何分发有多种规则可选,比如随机发或者按照指定字段发(类似于hadoop中默认的哈希值比上mapreduce,这种情况可以保证相同的字段必发射到某个bolt)。

3、处理逻辑1的bolt组件处理完数据后,会接着往后续处理逻辑2的bolt组件发射数据。

4、经过几个bolt组件处理后,达到要求,将数据保存起来,比如发到redis中。

注:如图所示,两个处理逻辑1 的bolt都接来自spout的数据,但两者的处理逻辑是相同的(两个线程做同样的事情),那么认为该bolt的并发度为

Topology:Storm中运行的一个实时应用程序的名称。(拓扑)


storm核心组件


image.png


组件介绍

1、Nimbus:用来进行资源分配和任务调度的,对任务进行监控;

2、zookeeper:协调服务,保存任务分配的信息、心跳信息、元数据信息;

3、Supervisor:一个Supervisor对应一个物理机,它是当前机器上的管理者,介绍Nimbus分配的任务,按需来启动自己的Worker,而Workder的数量是能通过配置文件来配置的(配置端口即可,将集群搭建的时候会说到);

4、Worker:执行具体的任务的组件,其中任务类型有两种,一种是Spout任务,另一种是Bolt任务,一个Worker中可能有多个Spout任务和Bolt任务;

5、Task:worker中每一个spout/bolt的线程称为一个task。每个Task属于某个组件并发度中的一个,一个Task本质上是一个线程。

默认情况下Task=executor=thread


流式计算架构


image.png

flume实时采集,用来获取数据,低延迟。

Kafka消息队列,用来临时保存数据,低延迟。

Strom实时计算,用来计算数据,低延迟。

Redis实时存储,是个内存数据库,用来保存数据,低延迟。

网站产生日志后,通过Flume来获取日志,接着将日志信息保存到Kafka中,Kafka将数据发送到Storm集群,Strom集群根据需求来进行计算,将结果保存到redis中。

目录
相关文章
|
7月前
|
分布式计算 资源调度 Hadoop
MapReduce分布式编程
MapReduce分布式编程
88 1
|
存储 分布式计算 Hadoop
【大数据处理框架】Hadoop大数据处理框架,包括其底层原理、架构、编程模型、生态圈
【大数据处理框架】Hadoop大数据处理框架,包括其底层原理、架构、编程模型、生态圈
410 0
|
SQL 分布式计算 算法
【大数据处理框架】Spark大数据处理框架,包括其底层原理、架构、编程模型、生态圈
【大数据处理框架】Spark大数据处理框架,包括其底层原理、架构、编程模型、生态圈
545 0
|
流计算
106 Storm编程模型
106 Storm编程模型
51 0
|
调度 流计算
105 Storm核心组件
105 Storm核心组件
29 0
|
分布式计算 搜索推荐 NoSQL
|
消息中间件 传感器 分布式计算
流处理开源框架Flink原理简介和使用(1)
流处理开源框架Flink原理简介和使用(1)
150 0
流处理开源框架Flink原理简介和使用(1)
|
消息中间件 存储 NoSQL
流处理开源框架Flink原理简介和使用(3)
流处理开源框架Flink原理简介和使用(3)
136 0
流处理开源框架Flink原理简介和使用(3)
|
分布式计算 Java API
Flink实战(三) - 编程范式及核心概念(三)
Flink实战(三) - 编程范式及核心概念(三)
127 0
Flink实战(三) - 编程范式及核心概念(三)
|
存储 分布式计算 Java
Flink实战(三) - 编程范式及核心概念(二)
Flink实战(三) - 编程范式及核心概念(二)
168 0
Flink实战(三) - 编程范式及核心概念(二)