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。
相关推荐
该文档对 Storm 的学习笔记,总结了 Storm 的架构、组件、工作流程等关键知识点。 一、Storm 架构 Storm 的架构主要由四个组件组成:Nimbus、Supervisor、Worker 和 Zookeeper。 * Nimbus:负责接收用户提交的 ...
本文将从Hadoop架构的瓶颈到Storm架构的优点,详细讨论大数据处理技术架构的演进过程。 大数据处理技术架构的演进可以分为两个阶段:Hadoop架构和Storm架构。Hadoop架构是大数据处理技术架构的开创者,它使用...
Storm 的架构主要包括三个组件:Nimbus、Zookeeper 和 Supervisor。 - **Nimbus** (主节点):作为集群中的主控节点,负责上传计算任务供执行、分发代码到集群中、在集群中启动工作进程,并监控计算过程,在必要时...
**三、Storm架构** 1. ** Nimbus**:作为主节点,负责任务调度和资源分配,协调整个集群的工作。 2. **Supervisor**:在工作节点上运行,管理worker进程,接收Nimbus的指令启动或停止任务。 3. **Worker**:实际...
#### 二、Storm架构概述 Storm的基本概念包括Topology、Spout、Bolt和Stream。其中,Topology是一个计算任务的定义,由一组Spout和Bolt组成;Spout作为数据源,负责发送数据;Bolt作为数据处理组件,可以接收多个...
二、Storm架构 Storm的核心组件包括:Nimbus(主控节点)、Supervisor(工作节点)、Worker进程以及Spout和Bolt。Nimbus负责任务调度,Supervisor管理worker进程,而worker则执行实际的计算任务。Spout是数据源,...
1. **Storm架构**:Storm的核心组件包括nimbus(主控节点)、supervisor(工作节点)、worker进程、spout(数据源)和bolt(处理逻辑)。Nimbus负责任务调度,Supervisor管理worker进程,worker运行spout和bolt实例...
1. **Apache Storm架构**:Storm的核心组件包括Nimbus(主控节点)、Supervisor(工作节点)、Worker进程、Spout(数据源)和Bolt(处理组件)。Nimbus负责任务调度,Supervisor管理worker进程,worker运行用户代码...
Storm架构及特性分析 Storm是一个分布式实时计算系统,主要用于处理大规模的数据流。Storm的架构主要包括Topology、Spout、Bolt、acker等组件。Topology是Storm的计算逻辑单元,Spout是数据源,Bolt是处理单元,...
### 大数据开发高薪就业指导课程:实时计算框架Storm基础理论与案例 #### Storm简单介绍 - **起源与发展**:...同时,对Storm架构体系和编程模型的深入理解,有助于在实际工作中更好地设计和优化实时数据处理流程。
1. **Storm架构**:Storm由多个组件构成,如Nimbus(主控节点)、Supervisor(工作节点)、Worker进程、Task(任务)和Zookeeper(协调服务)。理解这些组件及其相互作用是掌握Storm的基础。 2. **拓扑结构**:在...
2. **Apache Storm架构**:由多个节点组成,包括Nimbus(任务调度器),Supervisor(工作节点管理器),以及Worker进程(实际执行任务的进程)。拓扑(Topology)是Storm的基本工作单元,定义了数据流的处理逻辑。 ...
1. **Apache Storm架构**:Storm由多个组件组成,包括Nimbus、Supervisor、Worker、 Nimbus节点负责任务调度,Supervisor管理worker进程,而worker则运行实际的 bolts 和 spouts。理解这些组件及其交互是理解项目的...
二、Storm架构 Storm的架构由多个组件构成,包括Nimbus、Supervisor、Worker、Task和Zookeeper。Nimbus负责任务调度和分配,Supervisor是工作节点,管理运行在本地的Worker进程。Worker进程则包含多个Task,Task是...
1. **Storm架构**:Storm的核心组件包括Spout(数据源)、Bolt(处理逻辑)和Topology(拓扑结构)。Spout负责从外部数据源接收数据,Bolt则执行具体的数据处理任务,如清洗、聚合等。Topology将Spout和Bolt通过流...
2. **Storm架构**:Storm由多个组件构成,包括Nimbus(集群协调器)、Supervisor(工作节点管理器)、Worker进程、Spout(数据源)和Bolt(数据处理器)。了解这些组件的工作原理对于部署和维护Storm集群至关重要。 ...
#### Storm架构概述 Storm的核心架构主要包括以下几个部分: - **Spouts(源头)**:负责读取数据源并将数据发送到Storm集群中进行处理。 - **Bolts(螺栓)**:接收来自Spouts或其他Bolts的数据,并执行所需的...
Storm架构设计支持可扩展性,容错性和可靠的处理消息。它的主要操作模式分为本地模式和远程模式。 在本地模式下,用户可以在本地机器上运行和测试Storm拓扑,无需连接到实际的Storm集群。这种方式通常用于开发和...
**3.1 Storm架构** Storm的核心架构由以下几个组件构成: 1. **Nimbus**:Nimbus是Storm的主协调器,类似于Hadoop中的JobTracker。它负责调度任务到各个节点,监控任务状态,并在节点故障时重新分配任务。Nimbus将...