Storm,Storm 体系结构,Strom Nimbus,storm Supervisor,Storm | AiTi修炼|重剑无锋,拈花微笑
Header
Header

Storm 体系结构与基础概念

一、Storm体系结构与基本概念

 Storm的集群表面上看和Hadoop的集群非常像。但是在Hadoop上面你运行的是MapReduce的Job,而在Storm上面你运行的是Topology。Storm和Hadoop一个非常关键的区别是Hadoop的MapReduceJob最终会结束,而Storm的Topology会一直运行(除非你显式地杀掉它)。

storm 体系架构

 在storm的体系架构设计中Nimbus和Supervisor之间的通讯是依靠ZooKeeper来完成。并且Nimbus进程和Supervisor都是快速失败(fail-fast)和无状态的。可以用kill -9来杀死Nimbus和Supervisor进程,然后再重启它们,它们可以继续工作。

 在Storm中有 Nimbus 、Supervisor、Topology 、Worker、Task、Tuple以及Stream等重要概念,弄清楚这些概念,有助于我们更好地学习和运用Storm。

  • Topology

    一个实时计算应用程序逻辑被封装在Topology对象中,类似Hadoop中的job,Topology会一直运行直到被显式杀死。

  • Nimbus

负责资源分配和任务调度,类似Hadoop中的JobTracker。

  • Supervisor

负责接受Nimbus分配的任务,启动和停止自己管理的Worker进程。

  • Worker

运行具体处理组件逻辑的进程。

  • Executor

Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程

  • Task

每一个Spout/Bolt具体要干的活,各个节点之间进行Grouping的单位。

  • Tuple

Storm中Tuple是消息传递的基本单元。

  • Stream

在storm中源源不断传递的Tuple就组成了Stream。

  • Spout

在Topology中产生源数据流的组件。通常Spout获取从Kafka、MQ等的数据,然后调用nextTuple函数,发射数据出去供Bolt消费。(启动后相当于死循环,不断得发射数据)
spout storm

  • Bolt

在Topology中接受Spout的数据然后执行处理的组件。Bolt在接收到消息后会调用execute函数,用户可以在其中执行自己想要的操作。

bolt storm

  • Grouping

在Storm中还一个重要的概念需要我们掌握,特别是在利用storm编程解决业务问题的时候会遇到的,如何根据不同的业务场景要求对数据进行消息partition控制,也就是Storm的Grouping,Storm有很多种Grouping包括:shuffle、fields、all、global、none、direct和localOrShuffle等,每一种有不同的partition控制场景。

ps:关于Storm的Grouping详细参考《Storm的Grouping类型总结》

二、Storm的优点

  • 具有易用性

基于Storm的体系架构,只要我们遵守Topology,Spout,Bolt的编程规范即可开发出一个扩展性极好的应用,底层RPC,Worker之间冗余,数据分流之类的操作,开发者完全不用考虑,这就是框架的好处。

  • 具有扩展性

当某一级处理单元速度不够,直接配置一下并发数,即可线性扩展性能。另外Storm本身是支持集群,可以很方便地添加服务器资源扩展集群规模。

  • 具有健壮性

当Worker失效或机器出现故障时,自动分配新的Worker替换失效Worker。

  • 具有准确性

一方面Storm采用Acker机制,保证数据不丢失,另外一方面Storm采用事务机制,保证数据准确性。

rscala.com版权所有,本文Storm 体系结构与基础概念转载请注明出处:http://rscala.com/index.php/406.html

该文章归档分类于 storm实践, 大数据基础

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

*

code