流计算、Flink和图计算

news2024/11/25 17:51:52

流计算

  • 流计算
    • 流计算概述
      • 静态数据和流数据
      • 批量计算和实时计算
      • 流计算概念
      • 流计算与Hadoop
      • 流计算框架
    • 流计算处理流程
      • 数据处理流程
      • 数据实时采集
      • 数据实时计算
      • 实时查询服务
    • 流计算的应用
    • 开源流计算框架Storm
      • Storm简介
      • Storm的特点
  • Flink
    • Flink简介
    • 为什么选择Flink
      • 传统数据处理架构
      • 大数据Lambda架构
      • 流处理架构
      • Flink的优势
    • Flink应用场景
  • 图计算
    • 图计算简介
      • 图结构数据
      • 传统图计算解决方案的不足之处
      • 图计算通用软件
    • Pregel简介

流计算

流计算概述

静态数据和流数据

很多企业为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。
技术人员可以利用数据挖掘和OLAP(On-Line Analytical Processing)分析工具从静态数据中找到对企业有价值的信息。
在这里插入图片描述
近年来,在Web应用、网络监控、传感监测等领域,兴起了一种新的数据密集型应用——流数据,即数据以大量、快速、时变的流形式持续到达
流数据具有如下特征:

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

批量计算和实时计算

对静态数据和流数据的处理,对应着两种截然不同的计算模式:批量计算和实时计算
批量计算:充裕时间处理静态数据,如Hadoop
流数据不适合采用批量计算,因为流数据不适合用传统的关系模型建模
流数据必须采用实时计算,响应时间为秒级
数据量少时,不是问题,但是,在大数据时代,数据格式复杂、来源众多、数据量巨大,对实时计算提出了很大的挑战。因此,针对流数据的实时计算——流计算,应运而生
在这里插入图片描述

流计算概念

流计算:实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息
在这里插入图片描述

  • 流计算的基本理念:数据的价值随着时间的流逝而降低
  • 当事件出现时就应该立即处理,而不是缓存起来进行批量处理。
  • 为了及时处理流数据,就需要一个低延迟、可扩展、高可靠处理引擎
  • 对于一个流计算系统来说,它应达到如下需求:
    (1)高性能:处理大数据的基本要求,如每秒处理几十万条数据
    (2)海量式:支持TB级甚至是PB级的数据规模
    (3)实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别
    (4)分布式:支持大数据的基本架构,必须能够平滑扩展
    (5)易用性:能够快速进行开发和部署
    (6)可靠性:能可靠地处理流数据

流计算与Hadoop

Hadoop设计的初衷是面向大规模数据的批量处理,每台机器并行运行MapReduce任务,最后对结果进行汇总输出
MapReduce是专门面向静态数据的批量处理的,内部各种实现机制都为批处理做了高度优化,不适合用于处理持续到达的动态数据可能会想到一种“变通”的方案来降低批处理的时间延迟——将基于MapReduce的批量处理转为小批量处理,将输入数据切成小的片段,每隔一个周期就启动一次MapReduce作业。但这种方式也无法有效处理流数据:

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

流计算框架

目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架
商业级:IBM InfoSphere Streams和IBM StreamBase
较为常见的是开源流计算框架:Twitter Storm、Yahoo! S4(Simple Scalable Streaming System)
公司为支持自身业务开发的流计算框架:Facebook Puma、Flink、Dstream(百度)、银河流数据处理平台(淘宝)

流计算处理流程

数据处理流程

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

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

流计算的处理流程
流计算的处理流程一般包含三个阶段:

  • 数据实时采集
  • 数据实时计算
  • 实时查询服务
    在这里插入图片描述

数据实时采集

  • 数据实时采集阶段通常采集多个数据源的海量数据,需要保证实时性、低延迟和稳定可靠
  • 以日志数据为例,由于分布式集群的广泛应用,数据分散存储在不同的机器上,因此需要实时汇总来自不同机器上的日志数据
  • 数据采集系统的基本架构一般有以下三个部分:
    (1)Agent:主动采集数据,并把数据推送到Collector部分
    (2)Collector:接收多个Agent的数据,并实现有序、可靠、高性能的转发
    (3)Store:存储Collector转发过来的数据(对于流计算不存储数据)
    在这里插入图片描述

数据实时计算

  • 数据实时计算阶段对采集的数据进行实时的分析和计算,并反馈实时结果
  • 经流处理系统处理后的数据,可视情况进行存储,以便之后再进行分析计算
  • 在时效性要求较高的场景中,处理之后的数据也可以直接丢弃
    在这里插入图片描述

实时查询服务

  • 实时查询服务:经由流计算框架得到的结果可供用户进行实时查询、展示或储存
  • 在流处理流程中,实时查询服务可以不断更新结果,并将用户所需的结果实时推送给用户
  • 虽然通过对传统的数据处理系统进行定时查询,也可以实现不断地更新结果和结果推送,但通过这样的方式获取的结果,仍然是根据过去某一时刻得到的结果,与实时计算有着本质的区别。

流处理系统与传统的数据处理系统的区别:

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

流计算的应用

流计算是针对流数据的实时计算,可以应用在多种场景中,如Web服务、机器翻译、广告投放、自然语言处理、气候模拟预测等
并不是每个应用场景都需要用到流计算。流计算适合于需要处理持续到达的流数据、对数据处理有较高实时性要求的场景

开源流计算框架Storm

批处理系统关注吞吐率,流处理系统关注延时

Storm简介

  • Twitter Storm是一个免费、开源的分布式实时计算系统,Storm对于实时计算的意义类似于Hadoop对于批处理的意义,Storm可以简单、高效、可靠地处理流数据,并支持多种编程语言
  • Storm框架可以方便地与数据库系统进行整合,从而开发出强大的实时计算系统在这里插入图片描述

Storm的特点

  • 整合性:Storm可方便地与队列系统和数据库系统进行整合
  • 简易的API:Storm的API在使用上即简单又方便
  • 可扩展性:Storm的并行特性使其可以运行在分布式集群中
  • 容错性:Storm可自动进行故障节点的重启、任务的重新分配
  • 可靠的消息处理:Storm保证每个信息都能完整处理
  • 支持各种编程语言:Storm支持使用各种编程语言来定义任务
  • 快速部署:Storm可以快速进行部署和使用
  • 免费、开源:Storm是一款开源框架,可以免费使用

Flink

Flink简介

  • Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架,并且可以同时支持实时计算和批量计算
  • Flink具有十分强大的功能,可以支持不用类型的应用程序。Flink的主要特性包括:批流一体化、精密的状态管理、时间事件支持以及精确一次的状态一致性保障等。
  • Flink不仅可以运行在包括YARN、Mesos、Kubernetes等在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,不存在单点失效问题。

为什么选择Flink

传统数据处理架构

显著特点是采用一个中心化的数据库系统,用于存储事务性数据
在这里插入图片描述

大数据Lambda架构

主要包含两层,即批处理层和实时处理层
在批处理层中,采用MapRedice、Spark等技术进行批量数据处理
在实时处理层中,采用Storm、Spark Streaming等技术进行数据的实时处理

流处理架构

为了高效地实现流处理架构,一般需要设置消息传输层和流处理层
消息传输层从各种数据源采集连续事件产生的数据,并传输给订阅了这些数据的应用程序
流处理层会持续地将数据在应用程序和系统间移动,聚合并处理事件,并在本地维持应用程序的状态
在这里插入图片描述
流处理架构的核心是使各种应用程序互连在一起的消息队列,消息队列连接应用程序,并作为新的共享数据源,这些消息队列取代了从前的大型集中式数据库。
流处理器从消息队列中订阅数据并加以处理,处理后的数据可以流向另一个消息队列,这样,其他应用程序都可以共享流数据。
在一些情况下,处理后的数据会被存放到本地数据库中。
在这里插入图片描述
流处理架构正在逐步取代传统数据处理架构和Lambda架构,成为大数据处理架构的一种新趋势。
在流处理架构中,批处理被看做是流处理的一个子集,因此, 就可以用面向流处理的框架进行批处理,这样就可以用一个流处理框架来统一处理流计算和批量计算,避免了Lambda架构中存在的“多个框架难管理”的问题。

Flink的优势

Flink是一种兼高吞吐、低延迟和高性能的实时流计算框架,并且同时支持批处理和流处理
总体而言,Flink具有以下优势:

  • 同时支持高吞吐、低延迟、高性能
  • 同时支持流处理和批处理
  • 高度灵活的流式窗口
  • 支持有状态计算
  • 具有良好的容错性
  • 具有独立的内存管理
  • 支持迭代和增量迭代

Flink应用场景

  • 事件驱动型应用
  • 数据分析应用
  • 数据流水线应用

图计算

图计算简介

图结构数据

  • 许多大数据都是以大规模图或网络的形式呈现,如社交网络、传染病传播途径、交通事故对路网的影响
  • 许多非图结构的大数据,也常常会被转换为图模型后进行分析
  • 图数据结构很好地表达了数据之间的关联性
  • 关联性计算是大数据计算的核心——通过获得数据的关联性,可以从噪音很多的海量数据中抽取有用的信息

传统图计算解决方案的不足之处

传统的图计算算法都存在以下几个典型问题:
(1)常常表现出比较差的内存访问局部性
(2)针对单个顶点的处理工作过少
(3)计算过程中伴随着并行度的改变
针对大型图(比如社交网络和网络图)的计算问题,可能的解决方案及其不足之处具体如下:
(1)为特定的图应用定制相应的分布式实现
(2)基于现有的分布式计算平台进行图计算
(3)使用单机的图算法库
(4)使用已有的并行图计算系统

图计算通用软件

传统的图计算解决方案无法解决大型图的计算问题,因此,就需要设计能够用来解决这些问题的通用图计算软件
针对大型图的计算,目前通用的图计算软件主要包括两种:

  • 第一种主要是基于遍历算法的、实时的图数据库,如Neo4j、OrientDB、DEX和 Infinite Graph
  • 第二种则是以图顶点为中心的、基于消息传递批处理的并行引擎,如GoldenOrb、Giraph、Pregel和Hama,这些图处理软件主要是基于BSP模型实现的并行图处理系统

一次BSP(Bulk Synchronous Parallel Computing Model,又称“大同步”模型)计算过程包括一系列全局超步(所谓的超步就是计算中的一次迭代),每个超步主要包括三个组件:

  • 局部计算:每个参与的处理器都有自身的计算任务,它们只读取存储在本地内存中的值,不同处理器的计算任务都是异步并且独立的
  • 通讯:处理器群相互交换数据,交换的形式是,由一方发起推送(put)和获取(get)操作
  • 栅栏同步:当一个处理器遇到“路障”(或栅栏),会等到其他所有处理器完成它们的计算步骤;每一次同步也是一个超步的完成和下一个超步的开始
    在这里插入图片描述

Pregel简介

  • Pregel是一种基于BSP模型实现的并行图处理系统
  • 为了解决大型图的分布式计算问题,Pregel搭建了一套可扩展的、有容错机制的平台,该平台提供了一套非常灵活的API,可以描述各种各样的图计算
  • Pregel作为分布式图计算的计算框架,主要用于图遍历、最短路径、PageRank计算等等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/647369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三年 Android 开发的技术人生,浅谈自身面试的感悟

文章素材来源于网友 本篇主要记录了一个 Android 菜瓜三年的面试之旅,希望对大家面试、跳槽有所帮助。 一些唠叨 从进入这行开始,就是听说Android端凉了,寒冬这又如何那又如何的事情,很多的风言风语缠绕着这个圈子。但是老弟觉得…

电商系统架构设计系列(三):关于「订单系统」有哪些问题是要特别考虑的?

订单系统是整个电商系统中最重要的一个子系统,订单数据也就是电商企业最重要的数据资产。 上篇文章中,我给你留了一个思考题:当系统在创建和更新订单时,如何保证数据准确无误呢? 今天这篇文章,主要聊一下&…

DM8:达梦数据库开启SQL日志sqllog

DM8:达梦数据库开启SQL日志sqllog 环境介绍1 修改配置文件sqllog.ini2 开启与关闭 DMSQLLOG2.1 开启 sql 日志记录功能2.2 查询 sql 日志记录是否开启:0 关闭,1/2/3开启);2.3 关闭 sql 日志记录功能 3 sqllog.ini 详细介绍4 更多达梦数据库使用经验总结 …

辅助驾驶功能开发-功能算法篇(3)-ACC-弯道速度辅助

1、功能架构:ACC弯道速度辅助(CSA) 2、CSA功能控制 2.1 要求 2.1.1 CSA ASM:弯道速度辅助 1. 模式管理器:驾驶员应能够激活/关闭功能 应存在处理 CSA 功能的模式管理器。模式管理器由驾驶员输入和系统状态控制。 模式管理器有两个由 CSAStatus 定义的状态。状态转换定义…

ubuntu 系统解决GitHub无法访问问题

先后试了网上两个教程,终于解决。通过修改host文件实现访问。 教程1: 1)终端输入: sudo gedit /etc/hosts 打开hosts文件; 2)使用ip查找工具查询 http://github.com和IP:http://github.global.ssl.fastly.net的ip地址并添加到hosts文件末尾; 3)关掉hosts文件,在终端…

HTTPS协议-保障数据安全【安全篇】

我们都知道由于HTTP是明文的,整个传输过程完全透明,任何人都能够在链路中监听、修改、伪造请求/响应报文。所以不能满足我们的安全要求。比我如我们上网的信息会被轻易的截获,所浏览的网站真实性也无法验证。黑客可以伪装成银行、购物网站来盗…

接口测试常见接口类型?

常见接口类型 1.根据协议区分 1、webService接口:是走soap协议通过http传输请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有Soapul、jmeter、loadrunner等; 2、http接口:是走http协议,…

Vue向pdf文件中添加二维码

这两天刚看到一个需求,简单描述一下,就是我们拿到一个pdf文件流(文件流可以是后端返回的,也可以是从自己本地选的)和一个url链接 ,现在要将url链接生成二维码,并将这个二维码添加到这个pdf文件中…

一元线性回归分析

一元线性回归分析: (1)假设X与Y有线性相关关系,求Y与X样本回归直线方程,并求 的无偏估计; (2)检验Y和X之间的线性关系是否显著(α0.05); (3)当Xx0…

通过电脑屏幕传输文件

简介 本文介绍一套用于通过屏幕传输文件信息的软件。 通过屏幕传输文件,即非接触式,非插入式传递文件,是除了常用的网络传输,硬盘类介质拷贝之外的文件信息传输方式,基本原理就是将待传输的文件转换为二维码&#xf…

SkipList(跳表)

基本概述 SkipList(跳表)首先是链表,但与传统链表相比有几点差异: 元素按照升序排列存储节点可能包含多个指针,指针跨度不同【根据元素个数不同,可以建立多级指针(最多可以建立32级指针&#…

liunx优化命令之free命令

free 这里写目录标题 一、free命令描述:1.free命令的语法:2.free命令的选项:3.free命令的输出格式: 二、压力测试工具stress:1.工具简介:2.参数详解:3.下载压力测试工具: 三、模拟实…

基于51单片机设计的红外遥控器

一、项目介绍 遥控器是现代生活中必不可少的电子产品之一,目前市面上的遥控器种类繁多,应用范围广泛。而 NEC 红外遥控器协议则是目前应用最为广泛的一种协议之一,几乎所有的电视、空调等家用电器都支持该协议。 本项目是基于 51 单片机设计支持 NEC 协议的红外遥控器,实…

TPU-MLIR的环境搭建和使用

1、开发环境配置 Linux开发环境 一台安装了Ubuntu16.04/18.04/20.04的x86主机&#xff0c;运行内存建议12GB以上下载SophonSDK开发包(v23.03.01) &#xff08;1&#xff09;解压缩SDK包 sudo apt-get install p7zip sudo apt-get install p7zip-full 7z x Release_<date&…

docker数据管理---数据卷,数据卷容器

在Docker中&#xff0c;数据卷&#xff08;data volumes&#xff09;和数据卷容器&#xff08;data volume containers&#xff09;是用于在容器之间共享和持久化数据的两种不同的机制。 一、数据卷 数据卷是一个特殊的目录或目录&#xff0c;可以绕过容器文件系统的常规层&a…

CSDN 周赛 58 期

CSDN 周赛 58 期 前言1、题目名称&#xff1a;打家劫舍2、题目名称&#xff1a;小Q的鲜榨柠檬汁3、题目名称&#xff1a;收件邮箱4、题目名称&#xff1a;莫名其妙的键盘后记 前言 很多人都知道&#xff0c;CSDN 周赛的题目出自每日一练&#xff0c;甚至连用例都不会变动&…

【一起啃书】《机器学习》第九章 聚类

文章目录 第九章 聚类9.1 聚类任务9.2 性能度量9.2.1 外部指标9.2.2 内部指标 9.3 距离计算9.3.1 欧氏距离9.3.2 曼哈顿距离9.3.3 切比雪夫距离9.3.4 闵可夫斯基距离9.3.5 标准化的欧几里得距离9.3.6 马氏距离9.3.7 兰氏距离9.3.8 余弦距离9.3.9 汉明距离9.3.10 编辑距离 9.4 原…

替换CentOS 6.x系统中 X11图形界面的启动logo

这个属于定制一个系统的logo了。 网上有很多方法&#xff0c;直接修改一个是最简单的了。 看操作&#xff1a; 下载CentOS 的主题&#xff0c;网上自己搜一个喜欢的就行了。 [rootlocalhost Downloads]# tar zxvf vizta-use-it.tar.gz [rootlocalhost Downloads]# cd vizta …

目标检测数据集:红外图像弱小飞机目标检测数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

ArduPilot开源代码之AP_VideoTX

ArduPilot开源代码之AP_VideoTX 1. 源由2. AP_VideoTX子模块2.1 AP_VideoTX2.1.1 AP_VideoTX::init2.1.1 AP_VideoTX::update 2.2 AP_Tramp2.2.1 AP_Tramp::init2.2.2 AP_Tramp::update2.2.3 AP_Tramp::process_requests 2.3 AP_SmartAudio2.3.1 AP_SmartAudio::init2.3.2 AP_S…