不多说,直接上干货!

数据流模型

  数据流模型是由数据流、数据处理任务、数据节点、数据处理任务实例等构成的一种数据模型。本节将介绍的数据流模型如图1所示。
  分布式流处理系统由多个数据处理节点(node)组成,每个数据处理节点上运行有多个数据任务实例,每个数据任务实例属于一个数据任务定义。任务实例是在任务定义的基础上,添加了输入流过滤条件和强制输出周期属性后,可实际推送到数据处理节点上运行的逻辑实体;数据任务定义包含输入数据流、数据处理逻辑和输出数据流属性。

数据流模型简介
  首先介绍数据流模型中的一些重要概念。
  1. 数据流
  数据流是时间分布和数量上无限的一系列数据记录的集合体。数据记录是数据流的最小组成单元,每条数据记录包括三类数据:数据流名称(stream name)、标识数据(key)和具体数据处理逻辑所需的数据(value)。

             

                        图1    数据流处理流程图

  2. 定义数据处理任务
  定义数据处理任务只是定义一个数据处理任务的基本属性,任务还无法直接执行,必须将其实现为具体的任务实例。数据处理任务的基本属性包括输入流、输出流和数据处理逻辑。
(1)输入流(可选)
  输入流描述该任务依赖哪些数据流作为输入,是一个数据流名称列表;数据流产生源不会依赖其他数据流,可忽略该配置。
(2)输出流(可选)
  输出流描述该任务产生哪个数据流,是一个数据流名称;数据流处理链末级任务不会产生新的数据流,可忽略该配置。
(3)数据处理逻辑
  数据处理逻辑描述该任务具体的处理逻辑,如由独立进程执行的外部处理逻辑。

  3. 数据处理节点
  数据处理节点是可容纳多个数据处理任务实例运行的实体机器,每个数据处理节点的IPv4地址必须保证唯一。

  4. 数据处理任务实例
  对一个数据处理任务定义进行具体约束后,可将其推送到某个处理节点上运行具体的逻辑实体。数据处理任务基本属性包括数据处理任务定义、输入流过滤条件、强制输出周期,下面进行具体介绍。
  (1)数据处理任务定义
  数据处理任务定义指向该任务实例对应的数据处理任务定义实体。
  (2)输入流过滤条件
  输入流过滤条件是一个布尔类型表达式列表,描述每个输入流中符合什么条件的数据记录可以作为有效数据交给处理逻辑。若某个输入流中所有数据记录都是有效数据,则可直接用true表示。
  (3)强制输出周期(可选)
  强制输出周期描述以什么频率强制该任务实例产生输出流记录,可以用输入流记录数或间隔时间作为周期。如果忽略该配置,则输出流记录产生周期完全由处理逻辑自身决定,不受框架约束。   

        

     

Storm数据流模型
  数据流(Stream)是Storm中对数据进行的抽象,它是时间上无界的Tuple元组序列。在Topology中,Spout是Stream的源头,负责为Topology从特定数据源发射Stream(Spout并不需要接收流,只会发射流);Bolt可以接收任意多个流作为输入,然后进行数据的加工处理过程,如果需要,Bolt还可以发射出新的流给下级Bolt处理。Topology内部Spout和Bolt之间的数据流关系图如图2所示。

              

                        图2    Spout和Bolt中的数据流关系图

  Topology中每一个计算组件(Spout和Bolt)都有一个并行执行度(Task),在创建Topology时可以指定,Storm会在集群内分配对应并行度个数的线程来同时执行这一组件。Storm提供了若干种数据流分发(Stream Grouping)策略来解决在两个组件(Spout和Bolt)之间发送Tuple。在定义Topology时,需要为每个Bolt指定接收什么样的流作为其输入。

Storm概念学习系列 之数据流模型、Storm数据流模型的更多相关文章

  1. Storm概念学习系列之核心概念(Tuple、Spout、Blot、Stream、Stream Grouping、Worker、Task、Executor、Topology)(博主推荐)

    不多说,直接上干货! 以下都是非常重要的storm概念知识. (Tuple元组数据载体 .Spout数据源.Blot消息处理者.Stream消息流 和 Stream Grouping 消息流组.Wor ...

  2. Storm概念学习系列之storm流程图

    把stream当做一列火车, tuple当做车厢,spout当做始发站,bolt当做是中间站点!!! 见 Storm概念学习系列之Spout数据源 Storm概念学习系列之Topology拓扑 Sto ...

  3. Storm概念学习系列之Worker、Task、Executor三者之间的关系

    不多说,直接上干货! Worker.Task.Executor三者之间的关系 Storm集群中的一个物理节点启动一个或者多个Worker进程,集群的Topology都是通过这些Worker进程运行的. ...

  4. Storm概念学习系列之storm的雪崩

    不多说,直接上干货! Storm的雪崩问题的解决办法1: Storm概念学习系列之并行度与如何提高storm的并行度 Storm的雪崩问题的解决办法2:

  5. Storm概念学习系列之storm的特性

    不多说,直接上干货! storm的特性 Storm 是一个开源的分布式实时计算系统,可以简单.可靠地处理大量的数据流. Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快 ...

  6. Storm概念学习系列之Tuple元组(数据载体)

    不多说,直接上干货! Tuple元组 Tuple 是 Storm 的主要数据结构,并且是 Storm 中使用的最基本单元.数据模型和元组. Tuple 描述 Tuple 就是一个值列表, Tuple ...

  7. Storm概念学习系列之并行度与如何提高storm的并行度

    不多说,直接上干货! 对于storm来说,并行度的概念非常重要!大家一定要好好理解和消化. storm的并行度,可以简单的理解为多线程. 如何提高storm的并行度? storm程序主要由spout和 ...

  8. Storm概念学习系列之storm核心组件

    不多说,直接上干货! Storm核心组件 了解 Storm 的核心组件对于理解 Storm 原理非常重要,下面介绍 Storm 的整体,然后介绍 Storm 的核心. Storm 集群由一个主节点和多 ...

  9. Storm概念学习系列之storm-starter项目(完整版)(博主推荐)

    不多说,直接上干货! 这是书籍<从零开始学Storm>赵必厦 2014年出版的配套代码! storm-starter项目包含使用storm的各种各样的例子.项目托管在GitHub上面,其网 ...

随机推荐

  1. C#程序运行计时

    var stp = new System.Diagnostics.Stopwatch(); stp.Start();//计时启动 ..........程序代码........... stp.Stop( ...

  2. 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单

    目录(?)[-] 什么是Alternative menu替代菜单 小例子说明 Alternative menu代码 关于Category和规范代码写法 关于flags 多个匹配的itemId等参数 什 ...

  3. Spring Boot中使用RabbitMQ

    很久没有写Spring Boot的内容了,正好最近在写Spring Cloud Bus的内容,因为内容会有一些相关性,所以先补一篇关于AMQP的整合. Message Broker与AMQP简介 Me ...

  4. Java常见设计模式之责任链模式

    原文地址:  http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html 在阎宏博士的<JAVA与模式>一书中开 ...

  5. cdh ntpdate 问题

    ntpdc -np 一个正常一个不正常

  6. MS SQL 取分组后的几条数据

    SELECT uploaddate ,ptnumber ,instcount FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY uploaddate ORDE ...

  7. .clearfix:after

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. centos7 安装mysql 5.7多实例

    一. Mysql多实例即一台服务器上运行多个Mysql服务进程 ,开启不同的服务端口,通过不同的socket 监听不同的服务端口来提供各自的服务. 二. Mysql多例有以下几个特点: 1.  有效利 ...

  9. eclipse中使用Maven插件报错:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.

    步骤: 1.添加M2_HOME的环境变量 2.Preference->Java->Installed JREs->Edit 选择一个jdk 3.添加 -Dmaven.multiMod ...

  10. C++使用RabbitMQ类库做客户端与RabbitMQ Server通讯,生成C++可调用的rabbimq.*.dll的过程

    Step: download the latest rabbitmq-c via: https://github.com/alanxz/rabbitmq-c follow the document, ...