`
sungyang
  • 浏览: 21188 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Storm架构

阅读更多

storm是我接触并在项目中用到的第一个实时计算框架,做下总结:

一、首先如果如果让我们自己设 计一个实时计算系统,我们要解决哪些问题?

1、低延迟。都说了是实时计算系统了,延迟是一定要低的。

2、高性能。性能不高就是浪费机器。

3、分布式。系统都是为应用场景而生的,如果你的应用场景、你的数据和计算单机就能搞定,那么不用考虑这些复杂的问题了。我们所说的是单机搞不定的情况。

4、可扩展。伴随着业务的发展,我们的数据量、计算量可能会越来越大,所以希望这个系统是可扩展的。

5、 容错。这是分布式系统中通用问题。一个节点挂了不能影响我的应用。

 

二、如果仅仅需要解决这5个问题,可能会有无数种方案,而且各有千秋,随便举一种方案,使用消息队列+分布在各个机器上的工作进程就ok啦。再继续往下看:

1、容易在上面开发应用程序。你设计的系统需要应用程序开发人员考虑各个处理组件的分布、消息的传递吗?如果是,那有点麻烦啊,开发人员可能会用不好,也不会想去用。

2、消息不丢失。用户发布的一个宝贝消息不能在实时处理的时候给丢了,对吧?更严格一点,如果是一个精确数据统计的应用,那么它处理的消息要不多不少才行。这个要求有点高。

3、消息严格有序。有些消息之间是有强相关性的,比如同一个宝贝的更新和删除操作消息,如果处理时搞乱顺序完全是不一样的效果了。

 

三、storm优势

1. 简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。

2. 服务化,一个服务框架,支持热部署,即时上线或下线App.

3. 可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。

4. 容错性。Storm会管理工作进程和节点的故障。

5. 水平扩展。计算是在多个线程、进程和服务器之间并行进行的。

6. 可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。

7. 快速。系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其底层消息队列。

8. 本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

 

四、storm架构

Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无状态的,这样一来它们就变得十分健壮,两者的协调工作是由Zookeeper来完成的。ZooKeeper用于管理集群中的不同组件,ZeroMQ是内部消息系统,JZMQ是ZeroMQMQ的Java Binding。有个名为storm-deploy的子项目,可以在AWS上一键部署Storm集群.

 

五、相关概念:

首先与hadoop中概念做个比较,如图:



 

Nimbus:负责资源分配和任务调度。

Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。

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

Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。

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

Spout:在一个topology中产生源数据流的组件。通常情况下spout会从外部数据源中读取数据,然后转换为

topology内部的源 数据。Spout是一个主动的角色,其接口中有个nextTuple()函数,storm框架会不停地调用此函数,用户只要在其中生成源数据即可。

Bolt:在一个topology中接受数据然后执行处理的组件。

Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt是一个被 动的角色,其接口中有个execute(Tuple input)函数,在接受到消息后会调用此函数,用户可以在其中执行自己想要的操作。

Tuple:一次消息传递的基本单元。本来应该是一个key-value的map,但是由于各个组件间传递的tuple的字段名称已经事先定义好,所以tuple中只要按序填入各个value

就行了,所以就是一个value list.Stream:源源不断传递的tuple就组成了stream。



 

  • 大小: 67.9 KB
  • 大小: 19.5 KB
0
0
分享到:
评论

相关推荐

    STORM学习文档

    该文档对 Storm 的学习笔记,总结了 Storm 的架构、组件、工作流程等关键知识点。 一、Storm 架构 Storm 的架构主要由四个组件组成:Nimbus、Supervisor、Worker 和 Zookeeper。 * Nimbus:负责接收用户提交的 ...

    浅谈大数据处理技术架构的演进.pdf

    本文将从Hadoop架构的瓶颈到Storm架构的优点,详细讨论大数据处理技术架构的演进过程。 大数据处理技术架构的演进可以分为两个阶段:Hadoop架构和Storm架构。Hadoop架构是大数据处理技术架构的开创者,它使用...

    Twitter storm

    Storm 的架构主要包括三个组件:Nimbus、Zookeeper 和 Supervisor。 - **Nimbus** (主节点):作为集群中的主控节点,负责上传计算任务供执行、分发代码到集群中、在集群中启动工作进程,并监控计算过程,在必要时...

    Storm笔记-PPT

    **三、Storm架构** 1. ** Nimbus**:作为主节点,负责任务调度和资源分配,协调整个集群的工作。 2. **Supervisor**:在工作节点上运行,管理worker进程,接收Nimbus的指令启动或停止任务。 3. **Worker**:实际...

    Storm 源码分析

    #### 二、Storm架构概述 Storm的基本概念包括Topology、Spout、Bolt和Stream。其中,Topology是一个计算任务的定义,由一组Spout和Bolt组成;Spout作为数据源,负责发送数据;Bolt作为数据处理组件,可以接收多个...

    storm实时数据处理

    二、Storm架构 Storm的核心组件包括:Nimbus(主控节点)、Supervisor(工作节点)、Worker进程以及Spout和Bolt。Nimbus负责任务调度,Supervisor管理worker进程,而worker则执行实际的计算任务。Spout是数据源,...

    storm入门 PDF 下载

    1. **Storm架构**:Storm的核心组件包括nimbus(主控节点)、supervisor(工作节点)、worker进程、spout(数据源)和bolt(处理逻辑)。Nimbus负责任务调度,Supervisor管理worker进程,worker运行spout和bolt实例...

    storm学习入门《Getting started with Storm》中英文版

    1. **Apache Storm架构**:Storm的核心组件包括Nimbus(主控节点)、Supervisor(工作节点)、Worker进程、Spout(数据源)和Bolt(处理组件)。Nimbus负责任务调度,Supervisor管理worker进程,worker运行用户代码...

    Flink,Storm,Spark Streaming三种流框架的对比分析

    Storm架构及特性分析 Storm是一个分布式实时计算系统,主要用于处理大规模的数据流。Storm的架构主要包括Topology、Spout、Bolt、acker等组件。Topology是Storm的计算逻辑单元,Spout是数据源,Bolt是处理单元,...

    大数据分析架构师顶级培训课程 Storm基础理论与案例 共57页.pptx

    ### 大数据开发高薪就业指导课程:实时计算框架Storm基础理论与案例 #### Storm简单介绍 - **起源与发展**:...同时,对Storm架构体系和编程模型的深入理解,有助于在实际工作中更好地设计和优化实时数据处理流程。

    收集的storm的pdf版资料

    1. **Storm架构**:Storm由多个组件构成,如Nimbus(主控节点)、Supervisor(工作节点)、Worker进程、Task(任务)和Zookeeper(协调服务)。理解这些组件及其相互作用是掌握Storm的基础。 2. **拓扑结构**:在...

    storm_webservice.zip

    2. **Apache Storm架构**:由多个节点组成,包括Nimbus(任务调度器),Supervisor(工作节点管理器),以及Worker进程(实际执行任务的进程)。拓扑(Topology)是Storm的基本工作单元,定义了数据流的处理逻辑。 ...

    中国移动storm项目代码

    1. **Apache Storm架构**:Storm由多个组件组成,包括Nimbus、Supervisor、Worker、 Nimbus节点负责任务调度,Supervisor管理worker进程,而worker则运行实际的 bolts 和 spouts。理解这些组件及其交互是理解项目的...

    Storm实时数据处理-超清文字版.pdf

    二、Storm架构 Storm的架构由多个组件构成,包括Nimbus、Supervisor、Worker、Task和Zookeeper。Nimbus负责任务调度和分配,Supervisor是工作节点,管理运行在本地的Worker进程。Worker进程则包含多个Task,Task是...

    storm统计单词数的demo

    1. **Storm架构**:Storm的核心组件包括Spout(数据源)、Bolt(处理逻辑)和Topology(拓扑结构)。Spout负责从外部数据源接收数据,Bolt则执行具体的数据处理任务,如清洗、聚合等。Topology将Spout和Bolt通过流...

    Storm企业级应用实战、运维和调优.zip

    2. **Storm架构**:Storm由多个组件构成,包括Nimbus(集群协调器)、Supervisor(工作节点管理器)、Worker进程、Spout(数据源)和Bolt(数据处理器)。了解这些组件的工作原理对于部署和维护Storm集群至关重要。 ...

    基于storm海量数据的实时聚类

    #### Storm架构概述 Storm的核心架构主要包括以下几个部分: - **Spouts(源头)**:负责读取数据源并将数据发送到Storm集群中进行处理。 - **Bolts(螺栓)**:接收来自Spouts或其他Bolts的数据,并执行所需的...

    Getting.Started.with.Storm(2012.8)].Jonathan.Leibiusky.文字版.pdf

    Storm架构设计支持可扩展性,容错性和可靠的处理消息。它的主要操作模式分为本地模式和远程模式。 在本地模式下,用户可以在本地机器上运行和测试Storm拓扑,无需连接到实际的Storm集群。这种方式通常用于开发和...

    第3章storm1

    **3.1 Storm架构** Storm的核心架构由以下几个组件构成: 1. **Nimbus**:Nimbus是Storm的主协调器,类似于Hadoop中的JobTracker。它负责调度任务到各个节点,监控任务状态,并在节点故障时重新分配任务。Nimbus将...

Global site tag (gtag.js) - Google Analytics