Apache Flink核心特性应用场景

news2024/10/1 20:15:32
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 用户

在这里插入图片描述

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

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

相关文章

Global Mapper:地理信息的温柔探索

引言 在这纷繁复杂的世界里,地理信息系统(GIS)如同一把利器,帮助我们剖析、理解和改造这个世界。而在众多GIS软件中,Global Mapper无疑是其中的佼佼者。作为一款功能全面且易于使用的GIS应用程序,Global M…

【Python基础】代码如何打包成exe可执行文件

本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、安装PyInstaller三、使用PyInstaller打包四、验证打包是否成功五、总结 一、前言 本文介绍如何…

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

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

在Windows中使用开源高性能编辑器Zed(持续更新)

简介 “Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter. It’s also open source.” “Zed是一款高性能的支持多人协作的代码编辑器,由Atom和Tree-sitter的创建者开发。它也是开源的。” Zed主打“高性能”&…

4. kvm存储虚拟化

kvm存储虚拟化 一、命令行工具管理虚拟磁盘1、查看虚拟磁盘2、添加磁盘3、删除磁盘 二、qcow2格式的磁盘文件1、创建磁盘文件2、差量镜像/快速创建虚机2.1 创建差量镜像2.2 准备配置文件2.3 创建虚拟机2.4 批量部署虚拟机 三、存储池 storage pool1、类型2、在线迁移2.1 规划后…

CentOS6用文件配置IP模板

CentOS6用文件配置IP模板 到 CentOS6.9 , 默认还不能用 systemctl , 能用 service chkconfig sshd on 对应 systemctl enable sshd 启用,开机启动该服务 ### chkconfig sshd on 对应 systemctl enable sshd 启用,开机启动该服务 sudo chkconfig sshd onservice sshd start …

LLM应用构建前的非结构化数据处理(三)文档表格的提取

1.学习内容 本节次学习内容来自于吴恩达老师的Preprocessing Unstructured Data for LLM Applications课程,因涉及到非结构化数据的相关处理,遂做学习整理。 本节主要学习pdf中的表格数据处理 2.环境准备 和之前一样,可以参考LLM应用构建前…

墨西哥:海外新闻稿媒体分发-海外pr发稿干货分享-大舍传媒

大舍传媒:海外新闻稿媒体分发平台 墨西哥观查者 (mexicoviewer) 墨西哥观查者是墨西哥一家知名的新闻媒体平台,该平台专注于报道墨西哥国内外的时事新闻、政治、经济、文化等多个领域的内容。其更新速度快,报道对象广泛,深受墨西…

WindowsMac共享文件夹设置

共享文件夹设置 共享文件夹设置Windows系统设置步骤一:设置共享文件夹步骤二: 访问共享文件夹 Mac系统中设置共享文件夹步骤一:设置共享文件夹步骤二:访问共享文件夹 小贴士结论 共享文件夹设置 有时需要在多台电脑之间共享文件夹&#xff0…

14-58 剑和诗人32 - 使用矢量数据库增强 LLM 应用程序

GPT-4、Bloom、LaMDA 等大型语言模型 (LLM) 在生成类似人类的文本方面表现出了令人印象深刻的能力。然而,它们在事实准确性和推理能力等方面仍然面临限制。这是因为,虽然它们的基础是从大量文本数据中提取统计模式,但它们缺乏结构化的知识源来为其输出提供依据。 最近,我们…

生产者消费者模型和线程同步问题

文章目录 线程同步概念生产者消费者模型条件变量使用条件变量唤醒条件变量 阻塞队列 线程同步概念 互斥能保证安全,但是仅有安全不够,同步可以更高效的使用资源 生产者消费者模型 下面就基于生产者消费者来深入线程同步等概念: 如何理解生产消费者模型: 以函数调用为例: 两…

VBA实现Excel数据排序功能

前言 本节会介绍使用VBA如何实现Excel工作表中数据的排序功能。 本节会通过下表数据内容为例进行实操: 1. Sort 单列排序 语法:Sort key1,Order1 说明: Key1:表示需要按照哪列进行排序 Order1:用来指定是升序xlAsce…

AI提示词:AI辅导「数学作业」

辅导孩子作业对许多家长来说可能是一件头疼的事,但这部分工作可以在一定程度上交给AI来完成。 打开ChatGPT4,输入以下内容: # Role 数学辅导专家## Profile - author: 姜小尘 - version: 02 - LLM: Kimi - language: 中文 - description: 专门为小学生…

53-4 内网代理6 - frp搭建三层代理

前提:53-3 内网代理5 - frp搭建二级代理-CSDN博客 三级网络代理 在办公区入侵后,发现需要进一步渗透核心区网络(192.168.60.0/24),并登录域控制器的远程桌面。使用FRP在EDMZ区、办公区与核心区之间建立三级网络的SOCKS5代理,以便访问核心区的域控制器。 VPS上的FRP服…

力扣hot100 -- 动态规划(上)

目录 ❄技巧 🌼爬楼梯 🍔杨辉三角 🌊打家劫舍 🐎完全平方数 🌼零钱兑换 🌼单词拆分 ❄技巧 动态规划dp-CSDN博客 👆花 5 分钟快速刷一遍 花 10 分钟浏览一下 线性DP 背包DP&#x1f447…

算法金 | 12 个最佳 Python 代码片段,帮我完成工作自动化,香~

​大侠幸会幸会,我是日更万日 算法金;0 基础跨行转算法,国内外多个算法比赛 Top;放弃 BAT Offer,成功上岸 AI 研究院 Leader; Python是一种多功能的编程语言,它提供了各种功能和库来有效地自动化…

STM32F103RB多通道ADC转换功能实现(DMA)

目录 概述 1 硬件 1.1 硬件实物介绍 1.2 nucleo-f103rb 1.3 软件版本 2 软件实现 2.1 STM32Cube配置参数 2.2 项目代码 3 功能代码实现 3.1 ADC功能函数 3.2 函数调用 4 测试 4.1 DMA配置data width:byte 4.2 DMA配置data width:Half wor…

Qt常用基础控件总结—输入部件(QComboBox类和QLineEdit)

输入部件 下拉列表控件QComboBox 类 QComboBox 类是 QWidget 类的直接子类,该类实现了一个下拉列表(组合框)。 QComboBox 类中的属性函数 1)count:const int 访问函数:int count() const; 获取组合框中的项目数量,默认情况下,对于空组合框或未设置当前项目的组合框,…

Java版Flink使用指南——合流

大纲 新建工程无界流奇数Long型无界流偶数Long型无界流奇数String型无界流 合流UnionConnect 测试工程代码 在《Java版Flink使用指南——分流导出》中,我们通过addSink进行了输出分流。本文我们将介绍几种通过多个无界流输入合并成一个流来进行处理的方案。 新建工…

ArcGIS实战—等高线绘制

今天分享一个使用ArcGIS Pro制作等高线地图的教程,等高线是用来表达地形最常见的形式之一。那么如何制作一个效果比较好的等高线地形图呢?让我们开始今天的教程。 1 DEM数据 第一步:获取DEM地形数据,网址(https://dwt…