Storm核心组件、编程模型

简介: 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中。

目录
相关文章
vscode将本地代码实时同步到服务器
vscode近些年变得越来越流行了,主要是IDEA用上去实在有点卡,机器卡崩溃几次,这段时间也想用vscode体验一下,在自己的一些项目上面,想实现像phpstorm或者goland那样直接把代码通过sftp传到服务器上面,那么怎么来做这个事情呢,经过一番研究,把方案整理下来。
1474 0
|
5月前
|
自然语言处理 监控 安全
从原型到生产:LLM评估框架选型的黄金法则
本文系统解析企业级LLM应用评估体系,涵盖多轮对话、RAG、智能体三大场景,对比主流框架适配性,助力构建科学评估流程。建议点赞收藏。
554 1
|
人工智能 JavaScript 前端开发
利用 AI 进行代码生成:GitHub Copilot 的实践与反思
【10月更文挑战第23天】本文探讨了GitHub Copilot,一个由微软和OpenAI合作推出的AI代码生成工具,其核心功能包括智能代码补全、多语言支持、上下文感知和持续学习。文章介绍了Copilot在加速开发流程、学习新语言、提高代码质量和减少重复工作等方面的应用,并反思了AI在代码生成中的代码所有权、安全性和技能发展等问题。最后,文章提供了实施Copilot的最佳实践,强调了在使用AI工具时保持对代码的控制和理解的重要性。
职场新人:怎么做结构化汇报?
文章介绍了结构化汇报的基本逻辑和四种常用逻辑框架,帮助读者提升职场技能。
849 7
职场新人:怎么做结构化汇报?
|
数据采集 人工智能 自然语言处理
万字干货|复杂表格多Agent方案:从LLM洞察、系统性 思考到实践经验总结
笔者结合实践经验以近期在负责的复杂表格智能问答为切入点,结合大模型的哲学三问(“是谁、从哪里来、到哪里去”),穿插阐述自己对大模型的一些理解与判断,以及面向公共云LLM的建设模式思考,并分享软件设计+模型算法结合的一些研发实践经验。
1285 43
|
安全 芯片
PD快充诱骗芯片PW6606:一键解决电压诱骗,支持多电压5V/9V/12V/20V,兼容性强
PW6606是一款功能强大的智能快充芯片,支持PD和QC协议,具备智能协议选择、电压诱骗和多重保护机制。它广泛应用于智能手机、平板电脑和笔记本电脑等设备,确保安全、快速充电,并兼容多种充电器和数据线。
|
自然语言处理 监控 BI
ERP系统中的多语言与多币种支持
【7月更文挑战第25天】 ERP系统中的多语言与多币种支持
858 3
|
机器学习/深度学习 编解码 自然语言处理
CVPR 2022 | Restormer:高分辨率图像恢复的高效Transformer
CVPR 2022 | Restormer:高分辨率图像恢复的高效Transformer
1090 1
|
人工智能 安全 搜索推荐
AI已经深深地改变了我的日常生活,带来了许多便利和创新
【6月更文挑战第20天】AI提升工作效率,智能助手处理日常任务,释放创意空间;娱乐中个性化推荐节省选择时间,增强游戏体验;然而,隐私安全风险增加,数据保护成关注点;工作岗位变迁,技能更新必要,以应对AI带来的变革。需平衡便利与风险,推动AI负责任发展。
308 5
|
JavaScript Java
kkFileView在线文件预览与项目集成
kkFileView在线文件预览与项目集成
1074 1