美文网首页
Storm从入门到精通1:Storm简介

Storm从入门到精通1:Storm简介

作者: 金字塔下的小蜗牛 | 来源:发表于2020-04-03 09:16 被阅读0次

Storm是Hadoop生态下的一款分布式流处理引擎。相比于Spark Streaming和FIink而言,Storm当属于第一代流处理引擎。本节就来介绍Storm的相关知识。

1.什么是Storm

Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理团队及工作者集群的另一种方式。Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将计算结果以流的形式输出给用户。它还可以被用于“分布式RPC”,以并行的方式运行昂贵的运算。

Storm可以方便的在一个计算机集群中编写与扩展复杂的实时计算,Storm用于实时处理,就好比Hadoop用于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒钟可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。

2.离线计算和流式计算

2.1 离线计算

  1. 离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示
  2. 代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算、Hive

2.2 流式计算

  1. 流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示
  2. 代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(MySQL)。
  3. 总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果。

2.3 常见的实时计算框架

  1. Apache Storm
  2. JStorm:阿里巴巴
  3. Spark Streaming
  4. Apache Flink

下面是一个最经典的流式计算的例子:自来水厂生产自来水的过程。

image

3.Storm和Hadoop的比较

(1)相同点:

  1. 二者都是分布式计算框架
  2. 二者的编程模型相似

(2)不同点:

  1. Storm用于实时计算,Hadoop用于离线计算;
  2. Storm处理的数据保存在内存中,且源源不断,Hadoop处理的数据保存在HDFS上,成批处理;
  3. Storm的数据通过网络传输进来,Hadoop的数据来自HDFS。

4.Storm的体系结构

Storm的体系结构如下图所示:

image
  1. Nimbus:负责资源分配和任务调度,将任务存到ZooKeeper中。
  2. ZooKeeper:负责监控Supervisor的状态和分发任务。
  3. Supervisor:负责接收Nimbus分配到任务,启动和停止属于自己管理的Worker进程。通过配置文件设置当前Supervisor上启动多少个Worker。
  4. Worker:运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务(采集数据),一种是Bolt任务(处理数据),Bolt任务可以级联。
  5. Executor:Storm-0.8之后,Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程,一个Executor中只能运行隶属于同一个Spout/Bolt的Task。
  6. Task:Worker中每一个Spout/Bolt的线程称为一个Task。在Storm-0.8之后,Task不再与物理线程对应,不同Spout/Bolt的Task可能会共享一个物理线程,该线程称为Executor。

5.Storm的任务调度过程

image image

6.Storm的运行机制

image
  1. 整个处理流程的组织协调不需要用户去关心,用户只需要去定义每一个步骤中的具体业务处理逻辑即可
  2. 具体执行任务的是Worker,Worker执行任务时具体的行为由我们定义的业务逻辑决定。
image

相关文章

网友评论

      本文标题:Storm从入门到精通1:Storm简介

      本文链接:https://www.haomeiwen.com/subject/midkdhtx.html