storm架构原理及集群部署

本文详细介绍了Storm实时计算的概念,包括离线计算与实时计算的区别,以及Storm与Hadoop的差异。重点阐述了Storm的核心组件如Nimbus、Supervisor、Worker和Task,并分析了其与Spark Streaming的适用场景和技术特点。此外,文章还讨论了流式计算的一般架构,提供了集群部署的基本流程和配置指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Storm 流式计算

1. 概念

1.1 离线计算和实时计算

离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示

​ 代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算数据、Hive批量计算数据、zookeeper任务调度

1、hivesql

2、调度平台

3、Hadoop集群运维

4、数据清洗(脚本语言)

5、元数据管理

6、数据稽查

7、数据仓库模型架构

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

​ 代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。

​ 一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果

区别

​ 最大的区别:实时收集、实时计算、实时展示

1.2 Storm是什么?

​		 ![img](img/storm-flow.png)

​ Flume实时采集, 低延迟

​ Kafka消息队列, 低延迟

​ Storm实时计算, 低延迟

​ Redis实时存储, 低延迟

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

1.3 Storm与Hadoop的区别

  • Storm用于实时计算,Hadoop用于离线计算。
  • Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批。
  • Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中。
  • Storm与Hadoop的编程模型相似

1561338076765

Job:任务名称

JobTracker:项目经理

TaskTracker:开发组长、产品经理

Child:负责开发的人员

Mapper/Reduce:开发人员中的两种角色,一种是服务器开发、一种是客户端开发

Topology:任务名称

Nimbus:项目经理

Supervisor:开组长、产品经理

Worker:开人员

Spout/Bolt:开人员中的两种角色,一种是服务器开发、一种是客户端开发


Storm:进程、线程常驻内存运行,数据不进入磁盘,数据通过网络传递。

MapReduce:为TB、PB级别数据设计的批处理计算框架。

1561341354801

1.4 Storm应用场景及行业案例

Storm用来实时计算源源不断产生的数据,如同流水线生产。

  1. 运用场景

日志分析

​ 从海量日志中分析出特定的数据,并将分析的结果存入外部存储器用来辅佐决策。

管道系统

​ 将一个数据从一个系统传输到另外一个系统,比如将数据库同步到Hadoop

消息转化器

​ 将接受到的消息按照某种格式进行转化,存储到另外一个系统如消息中间件

  1. 行业案例

一淘-实时分析系统:实时分析用户的属性,并反馈给搜索引擎

最初,用户属性分析是通过每天在云梯上定时运行的MR job来完成的。为了满足实时性的要求,希望能够实时分析用户的行为日志,将最新的用户属性反馈给搜索引擎,能够为用户展现最贴近其当前需求的结果。

携程-网站性能监控:实时分析系统监控携程网的网站性能

利用HTML5提供的performance标准获得可用的指标,并记录日志。Storm集群实时分析日志和入库。使用DRPC聚合成报表,通过历史数据对比等判断规则,触发预警事件。

阿里妈妈-用户画像:实时计算用户的兴趣数据

为了更加精准投放广告,阿里妈妈后台计算引擎需要维护每个用户的兴趣点(理想状态是,你对什么感兴趣,就向你投放哪类广告)。用户兴趣主要基于用户的历史行为、用户的实时查询、用户的实时点击、用户的地理信息而得,其中实时查询、实时点击等用户行为都是实时数据。考虑到系统的实时性,阿里妈妈使用Storm维护用户兴趣数据,并在此基础上进行受众定向的广告投放。

2. Storm核心组件(重要)

在这里插入图片描述

Nimbus:是整个集群的控管核心,负责topology的提交、运行状态监控、任务重新分配等工作。

zookeeper就是一个管理者,监控者,Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeeper上面写状态信息来分配任务,supervisor,task通过从zookeeper中读状态来领取任务,同时supervisor, task也会定义发送心跳信息到zookeeper,使得nimbus可以监控整个storm集群的状态,从而可以重启一些挂掉的task。ZooKeeper使得整个storm集群十分的健壮,任何一台工作机器挂掉都没有关系,只要重启然后从zookeeper上面重新获取状态信息就可以了。

Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。通过配置文件设置当前supervisor上启动多少个worker,默认4个。

Wor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值