精华内容
下载资源
问答
  • 流计算
    千次阅读
    2021-11-06 16:16:00

    Storm是流计算框架,相比于SparkStreaming的将流计算按照时间片将InputDstream切分成多段RDD而言,Storm的流计算可以到达毫秒级别。
    Storm中有以下主要的概念:
    Spouts、Bolt、Stream、Topology、StreamingGrouping、Nimubis、Supervisor
    (1)Spouts
    Spouts是Storm的数据源,一般会从指定外部的数据源当中读取元组(Tuple),在Storm当中最小的数据单元是Tuple。Spouts将数据以Tuple的形式通过Stream传递给Bolt,Spouts主动调用nextTuple()方法,反复读取元组,以便数据流源源不断。
    在这里插入图片描述

    (2)Bolt
    Bolt是数据流处理组件,负责将收到Spouts传递到流数据进行处理,并且将处理生成的数据流以Tuple形式传递给下一个Bolt,Bolt会被动的调用execute()方法,该方法负责处理接收到的Tuple数据流。用户可以在此方法中执行自己的处理逻辑。
    在这里插入图片描述

    (3)Topology
    Topology俗称拓扑,是通过流分组将Spouts和多个Bolt组合而成,Topology不像MapReduce那样,MapReduce作业最终会完成计算然后结束运行,但是Topology将持续处理消息,直到认为停止。
    在这里插入图片描述

    (4)Nimbus和Supervisor
    Nimbus将Topology分解成多个Task,然后将Task分发给相应的Supervisor,接着将Task和Supervisor相关的信息提交到Zookeeper集群上;接着Supervisor从Zookeeper集群上认领自己的Task,并根据机器分到的任务启动一个或多个Worker进程执行任务。
    在这里插入图片描述

    更多相关内容
  • 流计算

    千次阅读 2020-05-12 10:45:59
    数据:数据以大量,快速.时变的形式持续到达. 2.数据特征: 数据快速持续到达,潜在大小也许是无穷无尽的; 数据来源众多,格式复杂; 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档...

    一.概述
    实时获取来自不同数据源的海量数据经过实时分析处理,或的有价值的信息.

    1.数据的处理流程

    • 静态数据:数据不会发生变化,如数据仓库中的数据;
    • 流数据:数据以大量,快速.时变的流形式持续到达.

    2.流数据特征:

    • 数据快速持续到达,潜在大小也许是无穷无尽的;
    • 数据来源众多,格式复杂;
    • 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储;
    • 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序;

    3.数据的分析计算
    在这里插入图片描述

    4. 大数据的典型的三大计算框架

    • Hadoop
    • Spark
    • Strom

    5.流计算基本理念

    • 数据的价值随着时间的流逝而降低;
    • 当事件出现时就应该进行处理,儿不是缓存起来进行批处理;
    • 低延迟,高可靠,可扩展;

    6.流计算系统要求:高性能,海量式,实时性,分布式,易用性,可靠性;

    二.流计算处理流程

    在这里插入图片描述

    1.数据实时采集:通常采集多个数据源的海量数据需要保证实时性,低延迟与稳定可靠;

    2.数据采集系统的基本架构
    在这里插入图片描述

    3.数据实时计算
    在这里插入图片描述
    4.实时查询服务
    在这里插入图片描述

    5.流处理系统和传统的数据处理系统的区别
    在这里插入图片描述

    三.流计算的应用

    • 电子商务
      在这里插入图片描述

    • 实时交通

    四.开源流计算框架Storm

    1.Storm 简介

    1.1 优点:

    • 可以简单,高效,可靠地处理流数据,支持多种编程语言,处理非常灵活;
    • 可以非常方便的与现有数据库系统产品进行融合,从而开发出非常强大的实时计算系统;

    1.2 特点

    • 整合性,简易的API;
    • 可扩展性;
    • 可靠的消息处理;
    • 支持各种编程语言;
    • 快速部署;
    • 免费开源;

    2.Storm 设计思想

    2.1 Storm 将流数据Stream 描述成无限的Tuple 序列,这些Tuple 序列会以分布式的方式并行地创建和处理;
    在这里插入图片描述
    在这里插入图片描述

    2.2 Spout
    在这里插入图片描述
    2.3 Bolt
    在这里插入图片描述
    2.4 Topology
    在这里插入图片描述
    在这里插入图片描述

    2.5 Stream Groupings
    在这里插入图片描述

    在这里插入图片描述

    3.Storm 框架设计

    3.1 Storm 与Hadoop 类似;
    在这里插入图片描述
    在这里插入图片描述
    3.2 Storm 集群采用"Master-Worker"的节点方式.
    在这里插入图片描述

    3.3 Strom 集群架构图
    在这里插入图片描述

    3.4 Worker 进程
    在这里插入图片描述

    3.5 Storm 工作流程
    在这里插入图片描述
    在这里插入图片描述

    四.Spark Streaming,Samza流计算框架及其比较

    4.1 Spark Streaming

    • 面向批处理的实时计算框架,独特的RDD 设计方式;

    4.2 Spark Streaming 的设计

    • 可以整合多种数据源,如Kafka,Flume,HDFS,TCP套接字;
    • 处理后的数据可以存储至文件系统,数据库,或显示在仪表盘里;
      在这里插入图片描述

    4.3 执行流程

    • Spark Streaming 的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark 引擎以类似批处理的方式处理每个时间片数据;
      在这里插入图片描述

    • DStream 操作示意图
      在这里插入图片描述

    • 数据流的建模:
      在这里插入图片描述

    4.4 Spark Streaming 与Storm 的对比
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.5 Samza

    • 基本概念:

      • 作业:
        在这里插入图片描述

      • 分区:每一个分区都是一个消息队列;
        在这里插入图片描述

      • 任务:
        在这里插入图片描述

      • 数据流图:
        在这里插入图片描述

    • Samza 架构:

      • 流数据层:负责数据流的收集分发,流处理层和执行层都被设计成可插拔的,开发人员可以使用其他框架来替代YARN 和Kafka;
      • 执行层;
      • 处理层;
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
    • 对比:
      在这里插入图片描述

    • Storm Spark Streaming和Samza的对比
      在这里插入图片描述

    展开全文
  • 大数据时代的实时流计算简介;主要内容;实时流计算的基础概念;实时流计算的基础概念;实时流计算的基础概念;实时流计算的基本概念;实时流计算的基础概念;实时流计算的基础概念;实时流计算的基础概念;实时流计算的基础...
  • 大数据技术---流计算(Storm)

    千次阅读 2021-10-12 13:50:25
    一、流计算概述 流数据:实时产生的数据,并且实时不断地像流水一样到达。 流数据特征: 1、数据快速持续到达,潜在大小也许是无穷无尽的。 2、数据来源众多,格式复杂。 3、数据量大,但是不是十分关注存储,一旦...

    一、流计算概述

    流数据:实时产生的数据,并且实时不断地像流水一样到达。
    流数据特征:
    1、数据快速持续到达,潜在大小也许是无穷无尽的。
    2、数据来源众多,格式复杂。
    3、数据量大,但是不是十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储。
    4、注重数据的整体价值,不过分关注个别数据。
    5、数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。
    数据类型:静态数据和流数据(动态计算)。
    在这里插入图片描述
    流计算:实时获取来自不同数据源的海量数据经过实时分析处理,获取有价值的信息。
    流计算基本理念:
    1、数据的价值随着时间的流逝而降低。如用户点击流。
    2、当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。
    流计算系统要求:
    1、高性能
    2、海量式
    3、实时性
    4、分布式
    5、易用性
    6、可靠性

    二、流计算处理流程

    流计算的处理流程:
    在这里插入图片描述
    1、数据实时采集阶段
    通常采集多个数据源的海量数据,需要保证实时性、低延迟与稳定可靠。
    开源分布式日志采集系统:scibe、kafka、flume。
    在这里插入图片描述
    2、数据实时计算
    数据实时计算阶段对采集的数据进行实时的分析和计算并反馈实时结果。数据经流处理系统处理后的数据,可以流出给下一个环节继续处理,可以把相关结果处理完以后就丢弃掉,或者存储到相关的存储系统中去。

    3、实时查询服务
    经过流计算框架得出的结果让用户能够进行实时的查询展示和存储。用户需要主动去查询,而流处理计算结果,会不断的去更新,不断的实时推动给用户。

    流处理系统和传统的数据处理系统的区别?
    1、流处理系统处理的是实时的数据,而传统的数据处理系统处理的是预先存储好的静态数据。
    2、用户通过流处理系统获取的一般是实时结果,而传统的数据处理方式获取的都是过去某一个历史时刻的快照。
    3、流处理系统不需要用户主动发出查询,它会实时地把生成的查询结果不断的推动给用户。

    三、Storm

    1、storm特点
    (1)整合性
    (2)简易的API
    (3)可扩展性
    (4)可靠的消息处理
    (5)支持各自编程语言
    (6)快速部署
    (7)免费开源

    2、storm设计思想
    storm主要术语:
    (1)stream:每个tuple是一堆值,每个值有一个名字,并且每个值可以是任何类型。tuple是一个value list(值列表)。
    在这里插入图片描述
    (2)spout:stream的源头。spout会从外部数据源读取数据,然后封装成tuple形式,发送到stream中。spout是一个主动的角色,在接口内部有个nextTuple函数,storm框架会不停的调用该函数。
    (3)bolt:stream的状态转换过程抽象为bolt。bolt可以处理tuple,也可以将处理后的tuple作为新的stream发送给其他bolt。bolt可以执行过滤、函数操作、join、操作数据库等任何操作。bolt是被动的角色,接口中有一个execute(Tuple tuple)方法,在接收到消息之后会调用此函数,用户可以在此方法中执行自己的处理逻辑。
    (4)topology:每一个组件都是并行运行的。bolt中包含多个task,可以在不同机器节点并行地处理,topology中可以指定每个组件的并行度。
    (5)stream groupings:
    在这里插入图片描述
    在这里插入图片描述
    3、storm框架设计
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4、storm工作流程
    在这里插入图片描述
    (1)所有的topology任务的提交必须在storm客户端节点上进行,提交后,由nimbus节点分配给其他supervisor节点进行处理。
    (2)nimbus节点首先将提交的topology进行分片,分成一个个task,分配给相应的supervisor,并将task和supervisor相关的信息提交到zookeeper集群上。
    (3)supervisor会去zookeeper集群上认领自己的task,通知自己的worker进程进行task的处理。

    展开全文
  • Storm(流计算)技术原理

    万次阅读 2018-06-02 14:26:21
    流计算概述 什么是流数据: 数据有静态数据和流数据。 静态数据: 很多企业为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。技术人员可以利用数据挖掘和OLAP(On-Line Analytical...

    流计算概述

    什么是流数据:

    数据有静态数据和流数据。

    静态数据:

    很多企业为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。技术人员可以利用数据挖掘和OLAP(On-Line Analytical Processing)分析工具从静态数据中找到对企业有价值的信息。

    这里写图片描述

    图:静态数据的一般处理流程

    流数据:

    近年来,在Web应用、网络监控、传感监测等领域,兴起了一种新的数据密集型应用——流数据,即数据以大量、快速、时变的流形式持续到达。

    • 实例:PM2.5检测、电子商务网站用户点击流

    流数据具有如下特征:

    • 数据快速持续到达,潜在大小也许是无穷无尽的。
    • 数据来源众多,格式复杂。
    • 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储。
    • 注重数据的整体价值,不过分关注个别数据。
    • 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。

    批量计算和实时计算:

    对静态数据和流数据的处理,对应着两种截然不同的计算模式:批量计算和实时计算。

    • 批量计算:充裕时间处理静态数据,如Hadoop。
    • 流计算:流数据不适合采用批量计算,因为流数据不适合用传统的关系模型建模。流数据必须采用实时计算响应时间为秒级。在大数据时代,数据格式复杂、来源众多、数据量巨大,对实时计算提出了很大的挑战。因此,针对流数据的实时计算——流计算,应运而生。

    这里写图片描述

    图:数据的两种处理模型

    流计算的概念:

    流计算:实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息。

    这里写图片描述

    图:流计算示意图

    流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低,如用户点击流。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。为了及时处理流数据,就需要一个低延迟、可扩展、高可靠的处理引擎.

    对于一个流计算系统来说,它应达到如下需求:

    • 高性能
    • 海量式
    • 实时性
    • 分布式
    • 易用性
    • 可靠性

    Streaming定义:

    Streaming是基于开源Storm,是一个分布式、实时计算框架。

    特点:

    • 实时响应,低延时。
    • 数据不存储,先计算
    • 连续查询
    • 事件驱动

    传统数据库计算:数据先存储,在查询处理。

    流计算与Hadoop:

    Hadoop设计的初衷是面向大规模数据的批量处理。

    MapReduce是专门面向静态数据的批量处理的,内部各种实现机制都为批处理做了高度优化,不适合用于处理持续到达的动态数据。

    可能会想到一种“变通”的方案来降低批处理的时间延迟——将基于MapReduce的批量处理转为小批量处理,将输入数据切成小的片段,每隔一个周期就启动一次MapReduce作业。但这种方式也无法有效处理流数据。

    • 切分成小片段,可以降低延迟,但是也增加了附加开销,还要处理片段之间依赖关系。
    • 需要改造MapReduce以支持流式处理。

    结论:鱼和熊掌不可兼得,Hadoop擅长批处理,不适合流计算。

    Streaming在FusionInsight中的位置:

    这里写图片描述

    图:Streaming在FusionInsight中的位置

    Streaming是一个实时分布式的实时计算框架,在实时业务汇总有广泛的应用。

    流计算框架:

    当前业界诞生了许多专门的流数据实时计算系统来满足各自需求。

    商业级:IBM InfoSphere Streams和IBM StreamBase。

    开源流计算框架

    • Twitter Storm:免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大量的流数据。
    • Yahoo! S4(Simple Scalable Streaming System):开源流计算平台,是通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统。

    公司为支持自身业务开发的流计算框架:

    • Facebook Puma
    • Dstream(百度)
    • 银河流数据处理平台(淘宝)

    流计算的应用:

    流计算是针对流数据的实时计算,可以应用在多种场景中。如百度、淘宝等大型网站中,每天都会产生大量流数据,包括用户的搜索内容、用户的浏览记录等数据。采用流计算进行实时数据分析,可以了解每个时刻的流量变化情况,甚至可以分析用户的实时浏览轨迹,从而进行实时个性化内容推荐。但是,并不是每个应用场景都需要用到流计算的。流计算适合于需要处理持续到达的流数据、对数据处理有较高实时性要求的场景。

    主要应用于以下几种场景:

    1. 实时分析:如实时日志处理、交通流量分析等。
    2. 实时统计:如网站的实时访问统计、排序等。
    3. 实时推荐:如实时的广告定位、时间营销等。

    流计算处理流程

    概述:

    传统的数据处理流程,需要先采集数据并存储在关系数据库等数据管理系统中,之后由用户通过查询操作和数据管理系统进行交互。

    传统的数据处理流程隐含了两个前提:

    • 存储的数据是旧的。存储的静态数据是过去某一时刻的快照,这些数据在查询时可能已不具备时效性了。
    • 需要用户主动发出查询来获取结果。

    流计算的处理流程一般包含三个阶段:数据实时采集、数据实时计算、实时查询服务

    这里写图片描述
    图:流计算处理流程示意图

    数据实时采集:

    数据实时采集阶段通常采集多个数据源的海量数据,需要保证实时性、低延迟与稳定可靠。

    以日志数据为例,由于分布式集群的广泛应用,数据分散存储在不同的机器上,因此需要实时汇总来自不同机器上的日志数据。

    目前有许多互联网公司发布的开源分布式日志采集系统均可满足每秒数百MB的数据采集和传输需求,如:

    • Facebook的Scribe
    • LinkedIn的Kafka
    • 淘宝的Time Tunnel
    • 基于Hadoop的Chukwa和Flume

    数据采集系统的基本架构一般有以下三个部分:

    这里写图片描述

    图:数据采集系统基本框架
    1. Agent:主动采集数据,并把数据推送到Collector部分。
    2. Collector:接收多个Agent的数据,并实现有序、可靠、高性能的转发。
    3. Store:存储Collector转发过来的数据(对于流计算不存储数据)。

    数据实时计算:

    数据实时计算阶段对采集的数据进行实时的分析和计算,并反馈实时结果。

    经流处理系统处理后的数据,可视情况进行存储,以便之后再进行分析计算。在时效性要求较高的场景中,处理之后的数据也可以直接丢弃。

    这里写图片描述

    图:数据实时计算流程

    实时查询服务:

    实时查询服务:经由流计算框架得出的结果可供用户进行实时查询、展示或储存。

    传统的数据处理流程,用户需要主动发出查询才能获得想要的结果。而在流处理流程中,实时查询服务可以不断更新结果,并将用户所需的结果实时推送给用户。

    虽然通过对传统的数据处理系统进行定时查询,也可以实现不断地更新结果和结果推送,但通过这样的方式获取的结果,仍然是根据过去某一时刻的数据得到的结果,与实时结果有着本质的区别。

    可见,流处理系统与传统的数据处理系统有如下不同

    1. 流处理系统处理的是实时的数据,而传统的数据处理系统处理的是预先存储好的静态数据。
    2. 用户通过流处理系统获取的是实时结果,而通过传统的数据处理系统,获取的是过去某一时刻的结果。
    3. 流处理系统无需用户主动发出查询,实时查询服务可以主动将实时结果推送给用户。

    开源流计算框架Storm

    Storm简介:

    Twitter Storm是一个免费、开源的分布式实时计算系统,Storm对于实时计算的意义类似于Hadoop对于批处理的意义,Storm可以简单、高效、可靠地处理流数据,并支持多种编程语言。

    Storm框架可以方便地与数据库系统进行整合,从而开发出强大的实时计算系统。

    Twitter是全球访问量最大的社交网站之一,Twitter开发Storm流处理框架也是为了应对其不断增长的流数据实时处理需求。

    Storm的特点:

    Storm可用于许多领域中,如实时分析、在线机器学习、持续计算、远程RPC、数据提取加载转换等。

    Storm具有以下主要特点:

    • 整合性
    • 简易的API
    • 可扩展性
    • 可靠的消息处理
    • 支持各种编程语言
    • 快速部署
    • 免费、开源

    系统架构:

    这里写图片描述

    图:流计算系统架构图

    基本概念:

    Storm主要术语包括Streams、Spouts、Bolts、Topology和Stream Groupings.

    • Topology:Streaming中运行的一个实时应用程序。

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

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

    • Worker:Topology运行时的物理进程。每个Worker是一个JVM进程。

    • Spout:Storm认为每个Stream都有一个源头,并把这个源头抽象为Spout。

      在一个Topology中产生源数据流的组件。

      通常Spout会从外部数据源(队列、数据库等)读取数据,然后封装成Tuple形式,发送到Stream中。Spout是一个主动的角色,在接口内部有个nextTuple函数,Storm框架会不停的调用该函数。

    • Bolt:在一个Topology中接收数据后然后执行处理的组件。

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

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

    • Stream:Storm将流数据Stream描述成一个无限的Tuple序列,这些Tuple序列会以分布式的方式并行地创建和处理。即无界的Tuple序列

    • Zookeeper:为Streaming服务中各自进程提供分布式的协作服务、主备Nimbus、Supervisor、Worker将自己的信息注册到Zookeeper中,Nimbus据此感知各个角色的监控状态。

    Topology介绍:

    这里写图片描述

    图:Topology示意图

    Storm将Spouts和Bolts组成的网络抽象成Topology,它可以被提
    交到Storm集群执行。Topology可视为流转换图,图中节点是一个Spout或Bolt,边则表示Bolt订阅了哪个Stream。当Spout或者Bolt发送元组时,它会把元组发送到每个订阅了该Stream的Bolt上进行处理。

    Topology里面的每个处理组件(Spout或Bolt)都包含处理逻辑, 而组件之间的连接则表示数据流动的方向。

    Topology里面的每一个组件都是并行运行的:

    • 在Topology里面可以指定每个组件的并行度,Storm会在集群里面分配那么多的线程来同时计算。

    • 在Topology的具体实现上,Storm中的Topology定义仅仅是一些Thrift结构体(二进制高性能的通信中间件),支持各种编程语言进行定义。

    一个Topology是由一组Spout组件(数据源)和Bolt组件(逻辑处理)通过Stream Groupings进行连接的有向无环图(DAG)。

    业务处理逻辑被封装进Streaming中的Topology中。

    Worker介绍:

    这里写图片描述

    图:Worker Process示意图

    Worker:一个Worker是一个JVM进程,所有的Topology都是在一个或者多个Worker中运行的。Worker启动后是长期运行的,除非人工停止。Worker进程的个数取决于Topology的设置,且无设置上限,具体可获得并调度启动的Worker个数则取决于Supervisor配置的slot个数。

    Executor:在一个单独的Worker进程中会运行一个或多个Executor线程。每个Executor只能运Spout或者Bolt中的一个或多个Task实例。

    Task:是最终完成数据处理的实体单元。

    Task介绍:

    这里写图片描述

    图:Task示意图

    Topology里面的每一个Component(组件)(Spout/Blot)节点都是并行运行的。在Topology里面,可以指定每个节点的并发度,Streaming则会在集群里分配响应的Task来同时计算,以增强系统的处理能力。

    消息分发策略(Stream Groupings):

    Groupings:Storm中的Stream Groupings用于告知Topology如何在两个组件间(如Spout和Bolt之间,或者不同的Bolt之间)进行Tuple的传送。每一个Spout和Bolt都可以有多个分布式任务,一个任务在什么时候、以什么方式发送Tuple就是由Stream Groupings来决定的。

    目前,Storm中的Stream Groupings有如下几种方式:

    1. ShuffleGrouping:随机分组,随机分发Stream中的Tuple,保证每个Bolt的Task接收Tuple数量大致一致。
    2. FieldsGrouping:按照字段分组,保证相同字段的Tuple分配到同一个Task中。
    3. AllGrouping:广播发送,每一个Task都会收到所有的Tuple。
    4. GlobalGrouping:全局分组,所有的Tuple都发送到同一个Task中。
    5. NonGrouping:不分组,和ShuffleGrouping类似,当前Task的执行会和它的被订阅者在同一个线程中执行。
    6. DirectGrouping:直接分组,直接指定由某个Task来执行Tuple的处理。

    这里写图片描述

    Storm框架设计:

    Storm集群采用“Master—Worker”的节点方式:

    • Master节点运行名为“Nimbus”的后台程序(类似Hadoop中的“JobTracker”),负责在集群范围内分发代码、为Worker分配任务和监测故障。

    • Worker节点运行名为“Supervisor”的后台程序,负责监听分配给它所在机器的工作,即根据Nimbus分配的任务来决定启动或停止Worker进程,一个Worker节点上同时运行若干个Worker进程。

    • Storm使用Zookeeper来作为分布式协调组件,负责Nimbus和多个Supervisor之间的所有协调工作。借助于Zookeeper,若Nimbus进程或Supervisor进程意外终止,重启时也能读取、恢复之前的状态并继续工作,使得Storm极其稳定。

    这里写图片描述

    图:Storm集群架构示意图

    Nimbus并不直接和Supervisor交换,而是通过Zookeeper进行消息的传递。

    Storm和Hadoop架构组件功能对应关系:

    Storm运行任务的方式与Hadoop类似:Hadoop运行的是MapReduce作业,而Storm运行的是“Topology”。

    但两者的任务大不相同,主要的不同是:MapReduce作业最终会完成计算并结束运行,而Topology将持续处理消息(直到人为终止)。

    这里写图片描述

    图:Storm和Hadoop架构组件功能对应关系

    Storm工作流程:

    这里写图片描述

    图:Storm工作流程示意图

    Storm工作流程为:

    1. 提交Topology
    2. 将任务存储在Zookeeper中
    3. 获取分配的任务,并启动Worker
    4. Worker进程执行具体的任务

    所有Topology任务的提交必须在Storm客户端节点上进行,提交后,由Nimbus节点分配给其他Supervisor节点进行处理。

    Nimbus节点首先将提交的Topology进行分片,分成一个个Task,分配给相应的Supervisor,并将Task和Supervisor相关
    的信息提交到Zookeeper集群上。

    Supervisor会去Zookeeper集群上认领自己的Task,通知自己的Worker进程进行Task的处理。

    Streaming提供的接口:

    REST接口:(Representational State Transfer)表述性状态转移接口。

    Thrift接口:由Nimbus提供。Thrift是一个基于静态代码生成的跨语言的RPC协议栈实现,它可以生成包括C++,Java,Python, Ruby , PHP等主流语言的代码实现,这些代码实现了RPC的协议层和传输层功能,从而让用户可以集中精力与服务的调用和实现。

    Streaming的关键特性介绍

    Nimbus HA:

    这里写图片描述

    图:Nimbus HA架构
    • 使用Zookeeper分布式锁:

      Nimbus HA的实现是使用Zookeeper分布式锁,通过主备间争抢模式完成的Leader选举和主备切换。

    • 主备间元数据同步:

      主备Nimbus之间会周期性的同步元数据,保证在发生主备切换后拓扑数据不丢失,业务不受损。

    容灾能力:

    这里写图片描述

    图:容灾示意图

    容灾能力:节点失效,自动迁移到正常节点,业务不中断。

    整个过程无需人工干预!

    消息可靠性:

    这里写图片描述

    在Streaming里面一个Tuple被完全处理的意思是:这个Tuple所派生的所有tuple都被成功处理。如果这个消息在Timeout所指定的时间内没有成功处理,这个tuple就被认为处理失败了。

    可靠性级别设置:

    ​ 如果并不要求每个消息必须被处理(允许在处理过程中丢失一些信息),那么可以关闭消息的可靠性处理机制,从而可以获得较好的性能。关闭消息的可靠性机制一位着系统中的消息数会减半。

    有三种方法可以关闭消息的可靠性处理机制:

    1. 将参数Config.TOPOLGY_ACKERS设置为0.
    2. Spout发送一个消息时,使用不指定消息message ID的接口进行发送。
    3. Blot发送消息时使用Unanchor方式发送,使Tuple树不往下延伸,从而关闭派生消息的可靠性。

    ACK机制:

    这里写图片描述

    图:Ack机制
    • 一个Spout发送一个Tuple时,会通知Acker一个新的根消息产生了,Acker会创建一个新的Tuple tree,并初始化校验和为0.
    • Bolt发送消息时间向Acker发送anchor tuple,刷新tuple tree,并在发送成功后向Acker反馈结果。如果成功则重新刷新校验和,如果失败则Acker会立即通知Spout处理失败。
    • 当Tuple tree被完成吹了(校验和为0),Acker会通知Spout处理成功。
    • Spout提供ack()和Fail()接口方法用户处理Acker的反馈结果,需要用户实现。一般在fail()方法中实现消息重发逻辑。

    Streaming与其他组件:

    这里写图片描述

    整合HDFS/HBase等外部组件,将实时结构提供给其他组件,进程离线分析。

    Spark Streaming

    Spark Streaming设计:

    Spark Streaming可整合多种输入数据源,如Kafka、Flume、
    HDFS,甚至是普通的TCP套接字。经处理后的数据可存储至文件
    系统、数据库,或显示在仪表盘里。

    这里写图片描述

    图:SPark Streaming支持的输入、输出数据源

    Spark Streaming的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark引擎以类似批处理的方式处理每个时间片数据。

    这里写图片描述

    图:Spark Streaming执行流程

    **Spark Streaming最主要的抽象是DStream(Discretized Stream,离散化数据流),表示连续不断的数据流。**在内部实现上,Spark Streaming的输入数据按照时间片(如1秒)分成一段一段的DStream,每一段数据转换为Spark中的RDD,并且对DStream的操作都最终转变为对相应的RDD的操作。

    这里写图片描述

    图:DStream操作示意图

    Spark Streaming 与 Storm的对比:

    • Spark Streaming和Storm最大的区别在于,Spark Streaming无法实现毫秒级的流计算,而Storm可以实现毫秒级响应。
    • Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+)可以用于实时计算,另一方面,相比于Storm,RDD数据集更容易做高效的容错处理。
    • Spark Streaming采用的小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法,因此,方便了一些需要历史数据和实时数据联合分析的特定应用场合。

    Samza技术原理

    基本概念:

    (1)作业:一个作业(Job)是对一组输入流进行处理转化成输出流的程序。

    (2)分区:

    • Samza的流数据单位既不是Storm中的元组,也不是Spark Streaming中的DStream,而是一条条消息。
    • Samza中的每个流都被分割成一个或多个分区,对于流里的每一个分区而言,都是一个有序的消息序列,后续到达的消息会根据一定规则被追加到其中一个分区里。

    (3)任务:

    • 一个作业会被进一步分割成多个任务(Task)来执行,其中,每个任务负责处理作业中的一个分区。
    • 分区之间没有定义顺序,从而允许每一个任务独立执行。
    • YARN调度器负责把任务分发给各个机器,最终,一个工作中的多个任务会被分发到多个机器进行分布式并行处理。

    (4)数据流图:

    • 一个数据流图是由多个作业构成的,其中,图中的每个节点表示包含数据的流,每条边表示数据传输。
    • 多个作业串联起来就完成了流式的数据处理流程。
    • 由于采用了异步的消息订阅分发机制,不同任务之间可以独立运行。

    这里写图片描述

    图:数据流图

    Samza的系统架构:

    Samza系统架构主要包括:

    1. 流数据层(Kafka)
    2. 执行层(YARN)
    3. 处理层(Samza API)

    流处理层和执行层都被设计成可插拔的,开发人员可以使用其他框架来替代YARN和Kafka。

    这里写图片描述

    图:MapReduce批处理架构和Samza流处理架构对比

    处理分析过程:

    这里写图片描述

    图:处理分析过程图

    处理分析过程如下:

    1. Samza客户端需要执行一个Samza作业时,它会向YARN的ResouceManager提交作业请求。
    2. ResouceManager通过与NodeManager沟通为该作业分配容器(包含了CPU、内存等资源)来运行Samza ApplicationMaster。
    3. Samza ApplicationMaster进一步向ResourceManager申请运行任务的容器。
    4. 获得容器后,Samza ApplicationMaster与容器所在的NodeManager沟通,启动该容器,并在其中运行Samza Task Runner。
    5. Samza Task Runner负责执行具体的Samza任务,完成流数据处理分析。

    Storm、Spark Streaming和Samza的应用场景

    编程的灵活性来讲,Storm是比较理想的选择,它使用Apache Thrift,可以用任何编程语言来编写拓扑结构(Topology)。

    当需要在一个集群中把流计算和图计算、机器学习、SQL查询分析等进行结合时,可以选择Spark Streaming,因为,在Spark上可以统一部署Spark SQL,Spark Streaming、MLlib,GraphX等组件,提供便捷的一体化编程模型

    当有大量的状态需要处理时,比如每个分区都有数十亿个元组,则可以选择Samza。当应用场景需要毫秒级响应时,可以选择Storm和Samza,因为Spark Streaming无法实现毫秒级的流计算。


    以上内容为听华为大数据培训课程和大学MOOC上厦门大学 林子雨的《大数据技术原理与应用》课程而整理的笔记。

    大数据技术原理与应用https://www.icourse163.org/course/XMU-1002335004


    展开全文
  • 流计算框架对比

    千次阅读 多人点赞 2021-07-15 22:04:41
    前言 本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!...支持原生处理,即单事件来处理数据(所有记录一个接一个处理) ...
  • 而作为有希望统一流计算领域的Apache Beam,实际上是构建在各种具体流计算框架上的更高一层统一编程模式,它对流计算中的各种概念和问题做出了总结,是我们追踪流计算领域最新进展的一个好切入点。 最后附上实时...
  • 阿里云基于Flink的流计算平台

    千次阅读 2022-04-12 17:36:22
    01 流计算开发运维痛点 1.1 任务需要底层API开发 1.2 任务逻辑调试 1.3 上下游数据预览 1.4 任务指标曲线 1.5 性能调优 1.6 监控报警 02基于Flink的流计算平台 2.1 阿里云流计算 2.2 ...
  • 1.试述流数据的概念 流数据,即数据以大量、快速、时变的流形式持续到达。 2.试述流数据的特点 流数据具有如下特征: 数据快速持续到达,潜在大小也许是无穷无尽的 ...4.试述流计算的需求 对于...
  • 流计算系统概述

    千次阅读 2018-11-11 22:25:40
    介绍流计算系统的基本概念。 流计算应用需求 静态数据 很多企业为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。技术人员可以利用数据挖掘和OLAP(On-Line Analytical Processing)...
  • 流计算产品预研

    千次阅读 2017-11-19 15:39:58
    国内各大云平台现有流计算产品预研
  • Java 8 - 并行流计算入门

    千次阅读 2021-03-23 23:06:39
    文章目录Pre什么是并行Demo Pre 我们已经看到了新的 Stream 接口可以以声明性方式处理数据集,无需显式实现优化来为数据集的处理加速。到目前为止,最重要的好处是可以对这些集合执行操作流水线,能够自动利用...
  • 流计算与批量计算的对比

    千次阅读 2018-04-16 14:31:02
    相比于批量大数据计算(式)计算整体上还属于较为新颖的计算概念,下面我们从用户/产品层面来理解下两类计算方式的区别。批量计算目前绝大部分传统数据计算和数据分析服务均是基于批量数据处理模型: 使用ETL系统...
  • 流计算 应用场景

    千次阅读 2019-01-10 10:49:35
    Storm处理数据的方式是基于消息的流水线处理, 因此特别适合无状态计算,也就是计算单元的依赖的数据全部在接受的消息中可以找到, 并且最好一个数据不依赖另外一个数据。 因此,常常用于 日志分析,从海量...
  • 本文主要从一下几个方面来介绍流计算处理流程: 概述 数据实时采集 数据实时计算 实时查询服务 概述 传统的数据处理流程,需要先采集数据并存储在关系数据库等数据管理系统中,之后由用户通过查询操作和数据管理...
  • •Spark最初由美国加州伯克利大学(UCBerkeley)的AMP实验室于 2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大 型的、低延迟的数据分析应用程序 •2013年Spark加入Apache孵化器项目后发展迅猛,如今...
  • 在这样的背景下,实时流计算技术应运而生…… 作者:周爽 来源:大数据DT(ID:hzdashuju) 01 大数据时代的新挑战:实时流计算 社会需求和科技进步是螺旋式相互促进和提升的。“大数据”一词最早由Roger Mougalas...
  • python方法——现金流计算

    千次阅读 2021-02-01 11:33:08
    常用现金计算 固定现金现值计算函数 表达式:PresentVal=pv(Rate,NumPeriods,Payment,ExtraPayment,Due) Rate:贴现率 NumPeriods:贴现周期 Payment周期现金 ExtraPayment:最后一次非周期现金,函数默认...
  • 大数据总结【第十章:流计算

    千次阅读 2020-06-11 14:16:33
    【单选题】 流计算秉承一个基本...对于一个流计算系统来说,它应达到如下哪些需求 A、可靠性 B、海量式 C、分布式 D、高性能 我的答案:ABCD 4【多选题】数据采集系统的基本架构包括哪些部分 A、Controller B、Stor
  • 7、Flink 流计算处理和批处理平台

    千次阅读 2018-11-15 12:30:33
    Flink 是一个批处理和处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算数据处理引擎。它的最大亮点是处理,是业界最顶级的开源处理引擎。Flink 与 Storm 类似,属于事件驱动型实时...
  • Flink流计算中SQL表的概念和原理

    千次阅读 2018-12-22 15:02:57
    文章目录前言动态表和动态查询的概念动态表的时间属性...但是相比于窗体的RDBMS而言,流计算过程中的SQL处理难免让人觉得不是很好理解,毕竟数据不是fixed-sized的,而是连续不断的。所以本文,笔者来聊聊这个略显...
  • 问:Spark Streaming是什么软件栈中的流计算?A:Spark,B:Flume,C:Storm,D:Hive正确答案:解析:问:Spark Streaming是什么软件栈中的流计算?A:Spark,B:Flume,C:Storm,D:Hive相关问题:茶树适宜在土质疏松、土层深厚、...
  • 阿里云StreamCompute流计算架构

    千次阅读 2019-06-20 17:48:11
    下图为阿里云流计算全流程系统架构,主要包含:数据采集,流数据,流计算,数据源,数据消费这些过程。 数据采集 用户可以使用流式数据采集工具将数据流式且实时地采集并传输到大数据Pub/Sub系统,该系统将...
  • 1:数据:数据(数据):在时间分布和数量上无限的一系列动态数据的集合体。:2:数据的特点: 1:数据快速到达,潜在大小也许是无穷无尽的。 2:数据来源众多,格式复杂。 3: 数据量大,但是不十分关注...
  • 流计算秉承一个基本理念,即数据的价值随着时间的流逝而 ,如用户点击流。 A.... B....C....D....Hadoop运行的是MapReduce任务,类似地,Storm运行的...对于一个流计算系统来说,它应达到如下哪些需求 A.海量式 B.高性能...
  • Flink在监控流计算中的应用

    万次阅读 2019-01-07 15:29:52
    随着云计算的深入落地,大数据技术有了坚实的底层支撑,不断向前发展并日趋成熟,无论是传统企业还是互联网公司,都不再满足于离线批处理计算,而是更倾向于应用实时流计算,要想在残酷的企业竞...
  • 那些年我们用过的流计算框架

    千次阅读 2017-10-23 00:00:00
    数据时代,从数据中获取业务需要的信息才能创造价值,这类工作就需要计算框架来完成。传统的数据处理流程中,总是先收集数据,然后将数据放到DB中。当人们需要的时候通过DB对数据...基于此,一种新的数据计算结构---
  • Flink实时流计算入门系列(一)

    千次阅读 2020-05-14 06:59:35
    ​阿里巴巴双11大屏在峰值期间可以承担每秒超过4.72亿次的访问,这是多高的访问量……为什么学习Flink?...Flink认为有界数据集是无界数据的一种特例,所以说有界数据集也是一种数据,事件也是
  • 流计算概述(一)

    千次阅读 2016-05-14 10:32:58
    何为流计算? 批计算是已经存在一堆数据,需要用一次计算把这堆数据处理完。 而流计算是有一个源源不断的源头,是一个为了无止境的数据集设计的计算框架。 批计算处理的是有界的数据集,而流计算处理的是一个近似...
  • 流计算 流数据:数据以大量、快速、时变为主要特点 需要实时的处理 流式数据->点击流数据->实时跟踪分析->迅速给出相关分析 特征:快速,无尽、来源众多、数据量大、注重数据整体价值、数据颠倒不完整等 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,180,157
精华内容 472,062
关键字:

流计算

友情链接: 5509_usb_host_driver.zip