storm程序结构和执行流程 storm 架构与原理_storm程序结构和执行流程

Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。今天,我们就挑一些Storm的安装配置问题来看看吧。




storm程序结构和执行流程 storm 架构与原理_storm程序结构和执行流程_02

1


Q:Storm简介


A:1.Storm是一套分布式的、可靠的,可容错的用于处理流式数据的系统。 

2.Storm也是基于C/S架构来进行工作的,C负责将数据处理的方式的jar(Topology)发送给S,S解析C发送过来的jar(Topology),并按一定规则jar变成多个Task((Spout/Bolt)),生成相关的进程和线程运行里面的Task。 




storm程序结构和执行流程 storm 架构与原理_storm程序结构和执行流程_02

2


Q:topology工作原理


A:1.Storm集群中有两种节点,一种是控制节点(Nimbus节点),另一种是工作节点(Supervisor节点)。 
2.所有Topology任务的 提交必须在Storm客户端节点上进行(需要配置 storm.yaml文件),由Nimbus节点分配给其他Supervisor节点进行处理。 
3.Nimbus节点首先将提交的Topology进行分片(Spout/Bolt),分成一个个的Task,并将Task和Supervisor相关的信息提交到 zookeeper集群上。 
4.Supervisor会去zookeeper集群上认领自己的Task,通知自己的Worker进程进行Task的处理。 




storm程序结构和执行流程 storm 架构与原理_storm程序结构和执行流程_02

3




       Q:Storm有哪些特性?


1.适用场景广泛: storm可以实时处理消息和更新DB,对一个数据量进行持续的查询并返回客户端(持续计算),对一个耗资源的查询作实时并行化的处理(分布式方法调用,即DRPC),storm的这些基础API可以满足大量的场景。


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


    3. 保证无数据丢失: 实时系统必须保证所有的数据被成功的处理。 那些会丢失数据的系统的适用场景非常窄, 而storm保证每一条消息都会被处理, 这一点和S4相比有巨大的反差。


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


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


    6. 语言无关性: Storm的topology和消息处理组件(Bolt)可以用任何语言来定义, 这一点使得任何人都可以使用storm。


4



Q:Storm的集群结构


A:

storm程序结构和执行流程 storm 架构与原理_数据_05

storm程序结构和执行流程 storm 架构与原理_数据_06



storm程序结构和执行流程 storm 架构与原理_storm程序结构和执行流程_02

5

  Q:为什么要用Storm?为什么不用Spark?


  A:很多场景下,我们希望系统能够实时的处理一条数据、甚至是事务。也就是说,在处理数据、事务的过程中,到达系统,并能马上得到结果。其次,在成万上亿条数据大量涌入系统时,也要求“实时”的到事务处理的结果。此时,单个节点已经是杯水车薪了,而Storm的关键一项是因为它支持分布式并行计算!如果说,你遇到了以上相似的场景,那Storm可以当仁不让的扛起实时处理的大旗!

这个问题其实很难界定,因为Spark在RDD粒度上,可以满足实时计算的要求,当然,使用RDD还有其他优势;但总的来说,Storm 的实时性更强。其次,Storm的框架完全按照流式处理的思想构建,和项目场景结合性更强一些。(Spark 用的不是很多,欢迎吐槽。)

在看Storm之前,很多人都对Hadoop有一定了解,为了能更快入戏,我们以Hadoop为参照,以下是它使用yarn之前的架构,对照Storm Server框架理解。

storm程序结构和执行流程 storm 架构与原理_jar_08