Storm 实时计算系统

一、Storm概述

1、什么是离线计算

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

代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算数据、Hive批量计算数据

2、什么是流式计算

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

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

3、Storm是什么

Storm是一个免费开源的分布式实时计算系统。Storm能轻松可靠地处理无界的数据流。

4、Storm与Hadoop的区别是什么

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

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

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

5、Storm特点

1)适用场景广泛:Storm可以适用实时处理消息、更新数据库、持续计算等场景。

2)可伸缩性高:Storm的可伸缩性可以让Storm每秒处理的消息量达到很高。扩展一个实时计算任务,你所需要做的就是加机器并且提高这个计算任务的并行度。Storm使用Zookeeper来协调机器内的各种配置使得Storm的集群可以很容易的扩展。

3)保证无数据丢失:Storm保证所有的数据都被处理。、

4)异常健壮:Storm集群非常容易管理,轮流重启节点不影响应用。

5)容错性好:在消息处理过程中出现异常,Storm会进行重试。

二、Storm基础知识

1、 Storm编程模型

1)元组(Tuple)

消息传递的基本单元,元组中的字段可以是任何类型的对象,元组支持所有的基本类型、字符串和字节数组作为字段值,只要实现类型的序列化接口就可以使用该类型的对象,元组是一个value的List。

2)水龙头(Spout)

Spout是拓扑的流的来源,是一个拓扑中产生源数据流的组件。

Spout的主要方法是nextTuple()。

Spout的其他方法是ack()和fail()。当Storm检测到一个元组从Spout发出时,ack()和fail()会被调用,要么成功完成通过拓扑,要么未能完成。Ack()和fail()仅被可靠的Spout调用。

IRichSpout是Spout必须实现的接口。

3)转接头(Bolt)

在拓扑中所有处理都在Bolt中完成,Bolt是流的处理节点,从一个拓扑接收数据,然后执行进行处理的组件。

Bolt是一个被动的角色,接口中有一个execute()方法,在接收到消息后会调用此方法,用户可以在其中执行自己希望的操作。

Bolt可以完成简单的流的转换,而完成复杂的流的转换通常需要多个步骤,因此需要多个Bolt。

4)拓扑(Topology)

拓扑(Topology)是Storm中运行的一个实时应用程序,因为各个组件间的消息流动而形成逻辑上的拓扑结构。

 

2、Storm核心组件

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

zk就是一个管理者,监控者。

总体描述:nimbus下命令(分配任务),zk监督执行(心跳监控,worker、supurvisor的心跳都归它管),supervisor领旨(下载代码),招募人马(创建worker和线程等),worker、executor就给我干活!task就是具体要干的活。

 

3、实时流计算常见架构图

1)Flume获取数据。

2)Kafka临时保存数据。

3)Strom计算数据。

4)Redis是个内存数据库,用来保存数据。

猜你喜欢

转载自blog.csdn.net/qq_40310148/article/details/88371859