MAPREDUCE服务 MRS-Storm基本原理:Storm原理

时间:2025-05-19 17:35:58

Storm原理

  • 基本概念
    表1 概念介绍

    概念

    说明

    Tuple

    Storm核心数据结构,是消息传递的基本单元,不可变Key-Value对,这些Tuple会以一种分布式的方式进行创建和处理。

    Stream

    Storm的关键抽象,是一个无边界的连续Tuple序列。

    Topology

    在Storm平台上运行的一个实时应用程序,由各个组件(Component)组成的一个DAG(Directed Acyclic Graph)。一个Topology可以并发地运行在多台机器上,每台机器上可以运行该DAG中的一部分。Topology与Hadoop中的MapReduce Job类似,不同的是,它是一个长驻程序,一旦开始就不会停止,除非人工中止。

    Spout

    Topology中产生源数据的组件,是Tuple的来源,通常可以从外部数据源(如消息队列、数据库、文件系统、TCP连接等)读取数据,然后转换为Topology内部的数据结构Tuple,由下一级组件处理。

    Bolt

    Topology中接受数据并执行具体处理逻辑(如过滤,统计、转换、合并、结果持久化等)的组件。

    Worker

    是Topology运行态的物理进程。每个Worker是一个JVM进程,每个Topology可以由多个Worker并行执行,每个Worker运行Topology中的一个逻辑子集。

    Task

    Worker中每一个Spout/Bolt的线程称为一个Task。

    Stream groupings

    Storm中的Tuple分发策略,即后一级Bolt以什么分发方式来接收数据。当前支持的策略有:Shuffle Grouping, Fields Grouping, All Grouping, Global Grouping, Non Grouping, Directed Grouping。

    图3描述了一个由Spout、Bolt组成的DAG,即Topology。图中每个矩形框代表Spout或者Bolt,矩形框内的节点表示各个并发的Task,Task之间的“边”代表数据流——Stream。

    图3 Topology示意图
  • 可靠性

    Storm提供三种级别的数据可靠性:

    • 至多一次:处理的数据可能会丢失,但不会被重复处理。此情况下,系统吞吐量最大。
    • 至少一次:保证数据传输可靠,但可能会被重复处理。此情况下,对在超时时间内没有获得成功处理响应的数据,会在Spout处进行重发,供后续Bolt再次处理,会对性能稍有影响。
    • 精确一次:数据成功传递,不丢失,不冗余处理。此情况下,性能最差。

    可靠性不同级别的选择,需要根据业务对可靠性的要求来选择、设计。例如对于一些对数据丢失不敏感的业务,可以在业务中不考虑数据丢失处理从而提高系统性能;而对于一些严格要求数据可靠性的业务,则需要使用精确一次的可靠性方案,以确保数据被处理且仅被处理一次。

  • 容错

    Storm是一个容错系统,提供较高可用性。表2从Storm的不同部件失效的情况角度解释其容错能力:

    表2 容错能力

    失效场景

    说明

    Nimbus失效

    Nimbus是无状态且快速失效的。当主Nimbus失效时,备Nimbus会接管,并对外提供服务。

    Supervisor失效

    Supervisor是工作节点的后台守护进程,是一种快速失效机制,且是无状态的,并不影响正在该节点上运行的Worker,但是会无法接收新的Worker分配。当Supervisor失效时, OMS 会侦测到,并及时重启该进程。

    Worker失效

    该Worker所在节点上的Supervisor会在此节点上重新启动该Worker。如果多次重启失败,则Nimbus会将该任务重新分配到其他节点。

    节点失效

    该节点上的所有分配的任务会超时,而Nimbus会将这些Worker重新分配到其他节点。

support.huaweicloud.com/productdesc-mrs/mrs_08_001401.html
提示

您即将访问非华为云网站,请注意账号财产安全