Apache Flink核心特性应用场景

Flink的定义
  • Apache Flink是一个分布式处理引擎,用于处理 无边界数据流, 有边界数据流上金秀贤有状态的计算。Flink能在所有常见的集群环境中运行,并能以内存速度和任意规模进行计算
  • 如下Flink官网的一张图
    在这里插入图片描述
Flink 与Spark的区别
  • Flink 中处理所有事件都可以看成是流事件,批数据可以看成是一种特殊的流数据,即有边界数据流
  • Spark计算框架则相反,Spark中批处理是基本操作,流处理可以划分为一小批一小批数据进行微批处理,以此达到实时的效果
无界流 & 有界流
  • 无界流:有定义流的开始,但是没有定义流的结果,他会无休止的产生数据,无界流的数据必须持续处理,即数据被社区后要立刻处理掉。不可能等所有数据到达后在一次性批处理,因为输入是无限的,任何时候都不会完成,比如用户行为数据
  • 有界流:有定义流的开始,也有定义流的结束。有界流可以在的到所有数据之后在统一处理计算。有界流所有数据可以被排序,所以并不需要有序的获取,有界流通畅被称为批处理。
数据架构演变
业务处理-单体架构

在这里插入图片描述

  • 传统单体架构,初期效率高,后期业务多了,系统复杂庞大,越来越难维护,并且不同业务系统之间可能有一些共同模块,做不到复用。因此演化出微服务
业务处理-微服务架构

在这里插入图片描述

  • 每一个服务都拆解成不同模块单独部署,独立存储,利用RestApi通讯
  • 微服务架构存储上缺点:要做OLAP业务操作的时候,我们需要对企业内部进行数据分析(OLAP)或者数据挖掘之类的应用,需要从n多个不同微服务的DB里面抽数据,将不同数据周期性同步到仓库统一清洗分析处理,最终给结果提供给不同的数据集市场和应用
数据分析-大数据Lambda架构

在这里插入图片描述

  • 离线数据处理:基于大数据平台构建数据仓库的过程,数据一般周期性同步到大数据平台,完成一系列ETL转换操作后,最终形成数据提供给数据集市展示使用,这就是通常说的离线数分析
  • 实时数据处理:对于事实数据处理,例如报表要求是实时性高,必须有非常低的延时统计结果,这就是我们说的事实数据分析
  • Lambda 架构缺点:框架太多导致平台复杂性高,运维成本高,例如离线计算用Hive,MapReduce离线计算框架,事实计算需要使用Storm,对应用开发者和运维来说成本很高。
有状态流计算架构

在这里插入图片描述

  • 基于有状态计算的方式最大的优势是不需要将原市数据重新从外部存储拿出来,从而进行全量计算。例如数据流中的数据都对A进行操作,每一条数据进入操作后都存储中间状态K,之后的操作都以为K为基础计算,结果赋值给K,利用动态规划的思想完成流式计算。K可以存储在内存
  • Apache Flink就是有状态流计算框架,通过实现Google DataFlow 流式计算模型实现了高吞吐,低延迟,高性能兼具的事实计算框架,同Flink 海支持高度容错状态管理,防止异常情况的数据丢失。Flink通过分布式快照技术CheckPoint 实现状态持久化维护即使在系统停机或者异常情况最终也能计算出结果
Flink 核心特性
流批一体化
  • Flink可以在底层用同样数据抽象和计算模型来进行批处理和流处理。也就是我们定义一套POJO对象,以及POJO对象的计算逻辑,同时应用在批处理和流处理上。这样Flink能帮我们去掉各种流处理,批处理框架,大大降低了架构设计,开发,运维复杂度,可以节省大量人力成本。
同时支持高吞吐,低延迟,高性能
  • Apache Spark也只能兼顾高吞吐 和 高性能特性,主要因为在SparkStreaming流式计算中无 法做到低延迟保障
  • Apache Storm 只能支持低延迟 和 高性能,但是无法满足高吞吐
  • Apache Flink 是唯一能支持 高吞吐,低延迟,高性能三个目标的流式计算框架。
支持事件时间(Event Time)概念
  • 流式计算中窗口计算的功能非常重要,大多数框架窗口计算实现用的是系统的时间(Process Time),也就是事件传输到计算框架处理的时间。
  • Flink 能支持基于事件时间(Event Time) 语义进行窗口计算,也就是使用事件产生的时间。这种机制使的即使是乱序到达的事件,流系统也能计算出精确结果,比如给A数据改状态,我们就必须按顺序来计算,利用滑动窗口,一个窗口内的数据安EventTime排序来做流式计算,避免了硬件,网络带来的影响
支持有状态计算
  • Flink在1.4版本实现状态管理,就是流式计算的过程中将中间结果数据保存在内存或者文件系统中,等下一个事件到来后可以从之前的状态中获取中间结果,从而做到无需每次都基于全部数据统计结果来进行计算,极大提升系统性能。
支持高度灵活的窗口(Window)操作
  • 流处理中,数据大多不连续,要通过窗口对一定时间范围内数据进行聚合
  • 例如统计过去1分钟多少用户点击网页,我们可以不同维护划分窗口:基于Time,Count,Session,以及Data-driven等类型的窗口操作。可以定义不同窗口出触发机制来满足不同的需求
基于轻量级分布式快照(Snapshot)实现容错
  • Flink能分布式运行在上千个节点上,将一个大型计算任务流程拆开成小的计算过程,然后将task粉不到并行节点上进行处理。
  • 在任务执行过程中,能够自动发现事件处理过程中的错误而导致数 据不一致的问题,比如:节点宕机、网路传输问题,或是由于用户因为升级或修复问题而导致计算服 务重启等。在这些情况下,通过基于分布式快照技术的Checkpoints,将执行过程中的状态信息进行 持久化存储,一旦任务出现异常停止,Flink就能够从Checkpoints中进行任务的自动恢复,以确保 数据在处理过程中的一致性(Exactly-Once)。
基于JVM实现独立的内存管理
  • Flink实现了自身管理内存的机制,尽可能减少JVM GC对系统的影响
  • Flink 通过序列化/反序列化方法将所有数据对象转换成二进制在内存中存储,降低数据存储大小同时,能更加有效的对内存空间进行利用,降低GC带来的性能下降或者任务异常的风险,因此Flink更稳定
Save Point(保存点)
  • 对于7*24小时运行的流式计算应用,数据源源不断,一段时间内应用重启可能导致数丢失或者计算结果异常。例如进行集群版本升级等停机维护。
  • Flink通过SavePints机制,将执行任务快照保存到存储中。任务重启的时候,可以直接从事先保存的SavePoints回复原有的计算状态,使得任务继续按照停机之前的状态运行,SavePoints技术让用户更好管理流式应用
多层级API
  • Flink提供多个层级API,用户可以根据自己表达力和易用性的需求来选择,不同API层级可以混用以实现复杂的业务逻辑。
Flink 应用场景
实时智能推荐
  • 根据用户历史行为,通过智能推荐算法训练模型,预测用户未来可能做的事件。
复杂事件处理
  • 复杂事件处理意义在于,我们需要从多个行为事件触发后的到一个异常的事件结果,也就是当发生了A,B,C,D的时候,我们得出结论E,根据E来做决策,通常这种事件的实时性要求高,我们可以应用Flink SQL进行事件数据的转换
实时欺诈检测
  • 金融领域业务,出现各种类型欺诈,例如信用卡盗刷欺诈,贷款申请等,这种以前都需要按小时计算来的的到的数据分析结论显然是无法阻止事件的发生,
  • 运用Flink流式计算技术能在几毫秒内完成对欺诈判断,实时对交易流水进行规则判断或者模型预测,这样一旦出现交易存在欺诈,则直接拦截,避免因处理不及时导致经济损失
实时数仓库与ETL
  • 对流式数据进行实时清洗,归并,结构化处理,为离线数仓进行补充和优化
流数据分析
  • 实时计算各类数据指标,并利用实时结果及时调整在线系统相关策略,在各类内容投放、无线智能推 送领域有大量的应用。流式计算技术将数据分析场景实时化,帮助企业做到实时化分析Web应用或 者App应用的各项指标,包括App版本分布情况、Crash检测和分布等,同时提供多维度用户行为分 析,支持日志自主分析,助力开发者实现基于大数据技术的精细化运营、提升产品质量和体验、增强 用户黏性。
实时报表分析
  • 实时报表是很多公司采用的报表统计方案之一,其中最主要的应用便是实时大屏展示。利 用流式计算实时得出的结果直接被推送到前端应用,实时显示出重要指标的变换情况。最典型的案例 便是淘宝的双十一活动的成交额
Flink 用户

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《大语言模型的临床和外科应用:系统综述》

这篇题为《大语言模型的临床和外科应用:系统综述》的文章对大语言模型(LLM)目前在临床和外科环境中的应用情况进行了全面评估。 大语言模型(LLM)是一种先进的人工智能系统,可以理解和生成类似人类的文本。…

理解 LibTorch 的工作流程

深入理解 LibTorch 的工作流程 摘要 本文详细介绍了 LibTorch 的工作流程,包括模型定义、数据准备、训练、评估和推理。通过具体的伪代码示例,帮助读者深入理解 LibTorch 的基本原理和使用方法。 关键字 LibTorch, 深度学习, 动态计算图, 自动微分, …

Sharding-JDBC分库分表之SpringBoot主从配置

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 前言 在开发中,如果对数据库的读和写都在一个数据服务器中操作,面对日益增加的访问量&#x…

HI3559AV100四路IMX334非融合拼接8K视频记录

下班无事,写篇博客记录海思hi3559av100四路4K视频采集拼接输出8K视频Demo 一、准备工作: 软件:Win11系统、VMware虚拟机Ubuntu14、Hitool、Xshell等 硬件:HI3559AV100开发板4路imx334摄像头、串口线、电源等 附硬件图&#xff1…

阿里发布大模型发布图结构长文本处理智能体,超越GPT-4-128k

随着大语言模型的发展,处理长文本的能力成为了一个重要挑战。虽然有许多方法试图解决这个问题,但都存在不同程度的局限性。最近,阿里巴巴的研究团队提出了一个名为GraphReader的新方法,通过将长文本组织成图结构,并利用…

《RWKV》论文笔记

原文出处 [2305.13048] RWKV: Reinventing RNNs for the Transformer Era (arxiv.org) 原文笔记 What RWKV(RawKuv):Reinventing RNNs for the Transformer Era 本文贡献如下: 提出了 RWKV 网络架构,结合了RNNS 和Transformer 的优点,同…

【GC 垃圾回收算法和回收器】

作者:ofLJli 链接:https://juejin.cn/post/7003213289425633287?searchId20240709085629749958B21D886D4E67D4 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 概述 在JVM中主要的结构为&…

工作助手VB开发笔记(1)

1.思路 1.1 样式 样式为常驻前台的一个小窗口,小窗口上有三到四个按钮,为一级功能,是当前工作内容的常用功能窗口,有十个二级窗口,为选中窗口时的扩展选项,有若干后台功能,可选中至前台 可最…

C++入门基础(1)

因为6月中旬学校事情多,许久未更新,让我们继续学习吧! 目录 前言: 一、命名空间: 1、定义: 2、使用: 3、访问命名空间域: 二、C输入、输出函数: 1、输入函数: 2、输出…

【正点原子i.MX93开发板试用连载体验】项目计划和开箱体验

本文最早发表于电子发烧友:【   】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)https://bbs.elecfans.com/jishu_2438354_1_1.html 有一段时间没有参加电子发…

入门PHP就来我这(高级)19 ~ 捕获sql错误

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享 路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。 接着上篇我们来看下sql错误的捕获模式。 1 PDO中捕获SQL语句中的错误 在PDO中有3种方法可以捕…

【前端从入门到精通:第十二课: JS运算符及分支结构】

JavaScript运算符 算数运算符 关于自增自减运算 自增或者自减运算就是在本身的基础上进行1或者-1的操作 自增或者自减运算符可以在变量前也可以在变量后,但是意义不同 自增自减运算符如果在变量前,是先进行自增或者自减运算,在将变量给别人用…

Python | Leetcode Python题解之第221题最大正方形

题目: 题解: class Solution:def maximalSquare(self, matrix: List[List[str]]) -> int:if len(matrix) 0 or len(matrix[0]) 0:return 0maxSide 0rows, columns len(matrix), len(matrix[0])dp [[0] * columns for _ in range(rows)]for i in…

HumbleBundle7月虚幻捆绑包30件军事题材美术模型沙漠自然环境大逃杀模块化建筑可定制武器包二战现代坦克飞机道具丧尸士兵角色模型20240705

HumbleBundle7月虚幻捆绑包30件军事题材美术模型沙漠自然环境大逃杀模块化建筑可定制武器包二战现代坦克飞机道具丧尸士兵角色模型202407051607 这次HumbleBundle捆绑包是UE虚幻军事题材的,内容非常多。 有军事基地、赛博朋克街区、灌木丛景观环境等 HB捆绑包虚幻…

高,实在是高

go,去 //本义音通义通汉字“高”,指太阳升起、上升,即高上去 god | God,神,上帝 //本义音通义通“高的”,指太阳高高在上的,至高无上的 glad,高兴的 //本义音通义通“高了的”&#…

关于10G光模块中SR, LR, LRM, ER 和 ZR的区别?

在10Gbps(10千兆比特每秒)光模块中,SR、LR、LRM、ER 和 ZR 是用来描述不同类型的模块及其适用的传输距离和光纤类型。下面是这些缩写的详细解释: 1.SR (Short Range) 2.LR (Long Range) 3.LRM (Long Reach Multimode) 4.ER (E…

注解复习(java)

文章目录 注解内置注解**Deprecated**OverrideSuppressWarnings【不建议使用】Funcationallnterface 自定义注解元注解RetentionTargetDocumentedInherited 和 Repeatable 反射注解 前言:笔记基于动力节点 注解 注解可以标注在 类上,属性上&#xff0c…

鸿蒙语言基础类库:【@ohos.util.Deque (线性容器Deque)】

线性容器Deque 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 Deque(double ended queue)根据循环队列的数据结构实现,符合先进先出以及先进后出的特点&…

【Stable Diffusion】(基础篇三)—— 关键词和参数设置

提示词和文生图参数设置 本系列笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 本文主要讲…

深入理解 LXC (Linux Containers)

目录 引言LXC 的定义LXC 的架构LXC 的工作原理LXC 的应用场景LXC 在 CentOS 上的常见命令实验场景模拟总结 1. 引言 在现代 IT 基础设施中,容器技术已经成为一种重要的应用和部署方式。与虚拟机相比,容器具有更高的效率、更轻量的特性和更快的启动速度…