Flink

article/2025/9/8 2:21:57

文章目录

  • Flink
    • 1.Flink简介
    • 2.为什么选择Flink
      • 2.1 传统数据处理架构
      • 2.2 大数据Lambda架构
      • 2.3 流处理架构
      • 2.4 Flink是理想的流计算框架
      • 2.5 Flink的优势
    • 3.Flink应用场景
      • 3.1 事件驱动型应用
      • 3.2 数据分析应用
      • 3.3 数据流水线应用
    • 4.Flink技术栈
    • 5.Flink体系架构

Flink

1.Flink简介

  1. 项目基本信息
    • 性质与定位:Apache软件基金会顶级项目,是分布式、高性能、随时可用、准确的开源流处理框架,支持实时和批量计算 。
    • 起源与发展:源于2010 - 2014年柏林工业大学、柏林洪堡大学和哈索普拉特纳研究所联合开展的Stratosphere项目。2014年4月代码贡献给Apache软件基金会成为孵化项目,同年12月成为顶级项目,是Apache软件基金会5大 大数据项目之一 。
    • 社区与应用:全球有350多位开发人员,在国内被阿里巴巴、美团、滴滴等知名互联网企业大规模用作分布式大数据处理引擎 。
  2. 功能特性
    • 功能多样性:能支持不同类型应用程序,具备批流一体化、精密状态管理、事件时间支持、精确一次的状态一致性保障等特性 。
    • 部署灵活性:可在YARN、Mesos、Kubernetes等多种资源管理框架运行,也支持裸机集群独立部署,启用高可用选项可避免单点失效 。
    • 性能优势:可扩展至数千核心,状态达TB级别时仍保持高吞吐、低延迟,被众多严苛流处理应用采用 。

2.为什么选择Flink

2.1 传统数据处理架构

  • 架构特点:采用中心化数据库系统存储事务性数据,如ERP系统的供应链数据、订单系统的订单数据、CRM系统的客户数据等都存入该数据库 。

2.2 大数据Lambda架构

  • 架构组成:包含批处理层和实时处理层。批处理层用MapReduce、Spark等技术处理批量数据;实时处理层用Storm、Spark Streaming等技术处理实时数据 。

2.3 流处理架构

  • 架构构成:一般设消息传输层和流处理层。消息传输层采集数据源数据并传输给订阅应用;流处理层处理、聚合数据并维持应用状态 。
  • 核心组件:消息队列是核心,连接应用程序并作为共享数据源,取代大型集中式数据库。流处理器从消息队列订阅数据处理,处理后数据可流向其他消息队列或存入本地数据库 。
  • 优势趋势:逐步取代传统和Lambda架构。避免传统架构中数据库负载过重问题,将批处理视为流处理子集,用一个流处理框架统一处理流计算和批量计算,解决多框架管理难题 。

2.4 Flink是理想的流计算框架

  • 流处理架构需求:需低延迟、高吞吐和高性能 。
  • 其他框架不足:Storm能低延迟但无法高吞吐和准确处理故障时计算状态;Spark Streaming通过微批处理实现高吞吐和容错,但牺牲低延迟和实时处理能力 。
  • Flink优势:实现Google Dataflow流计算模型,兼具高吞吐、低延迟和高性能,支持批处理和流处理,有高度容错的状态管理,防止状态丢失,满足流处理架构要求 。

2.5 Flink的优势

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

3.Flink应用场景

3.1 事件驱动型应用

  • 什么是事件驱动型应用
    • 定义:一类具有状态的应用,从一个或多个事件数据流中读取事件,并依据到来事件做出反应,像触发计算、更新状态或执行其他外部动作等 。
    • 与传统应用区别:传统应用设计中,计算和数据存储层相互独立,应用从远程事务数据库读写数据。而事件驱动型应用建立在有状态流处理基础上,数据和计算不分离,应用访问本地(内存或磁盘)获取数据,通过定期向远程持久化存储写入检查点实现容错 。
    • 典型应用:反欺诈、异常检测、基于规则的报警、业务流程监控、Web应用(社交网络)等 。
  • 事件驱动型应用的优势
    • 性能优势:访问本地数据,无需查询远程数据库,在吞吐量和延迟方面性能更优。向远程持久化存储写入检查点可异步、增量进行,对常规事件处理影响小 。
    • 协调优势:传统分层架构中多个应用共享数据库,数据库变化时需谨慎协调。事件驱动型应用只关注自身数据,数据表示方式改变或应用升级时,协调工作量少 。
  • Flink是如何支持事件驱动型应用的
    • 状态与时间处理:Flink提供丰富状态操作原语,可管理TB级大量数据,保障“精确一次”一致性;支持事件时间、高度可定制窗口逻辑和细粒度时间控制,助于实现高级商业逻辑;拥有复杂事件处理(CEP)类库,用于检测数据流模式 。
    • 保存点特性:“保存点”是一致性状态镜像,可作为诸多相互兼容应用的初始化点,方便应用升级、扩容及开展A/B测试 。

3.2 数据分析应用

  • 什么是数据分析应用
    • 传统分析:从原始数据提取信息,先记录事件,再对有界数据集执行批量查询。要融入最新数据需添加到数据集并重新运行查询,结果写入存储系统或形成报表 。
    • 流式分析:高级流处理引擎支持实时数据分析,获取实时事件流,连续产生和更新查询结果,结果存于外部数据库或作为内部状态维护,仪表盘应用可读取结果 。
    • 典型应用:电信网络质量监控、移动应用产品更新及实验评估分析、消费者技术实时数据即席分析、大规模图分析等 。
  • 流式分析应用的优势
    • 延迟优势:与批量分析相比,消除周期性导入和查询,获取洞察结果延迟更低,且无需处理输入数据人为边界 。
    • 架构优势:流式分析应用架构更简单。批量分析流水线组件独立,需周期性调度数据提取和查询执行,组件失败影响整体;流式分析应用(如基于Flink)整合数据提取到结果计算步骤,依赖底层引擎故障恢复机制 。
  • Flink是如何支持数据分析应用的
    • 接口与语义:Flink同时支持批处理和流处理,提供符合ANSI规范SQL接口,为批处理和流处理提供一致语义,SQL查询在静态数据集和实时数据流上结果相同 。
    • 自定义功能:提供丰富用户自定义函数,便于在SQL查询中执行自定义代码;DataStream API和DataSet API提供底层控制;Gelly库为基于批量数据集的大规模高性能图分析提供算法和构建模块支持 。

3.3 数据流水线应用

  • 什么是数据流水线
    • 与ETL关系:Extract-transform-load(ETL)是在存储系统间转换和移动数据的常用方法,ETL作业周期性触发,将事务型数据库数据复制到分析型数据库或数据仓库。数据流水线功能类似ETL,可转换、清洗数据或转移存储系统,但以连续流模式执行,非周期性触发 。
    • 工作示例:数据源生成数据时,数据流水线读取并低延迟转移。如监控文件系统目录,新文件生成时读取内容写入事件日志;将事件流物化到数据库或增量构建、优化查询索引 。
    • 典型应用:电子商务实时查询索引构建、电子商务持续ETL等 。
  • 数据流水线的优势
    • 延迟优势:相较于周期性ETL作业,减少数据转移延迟 。
    • 功能优势:能持续消费和发送数据,用途更广,支持更多用例 。
  • Flink如何支持数据流水线应用
    • 数据转换:Flink的SQL接口(或Table API)及丰富用户自定义函数,可解决常见数据转换问题 。
    • 强大功能实现:使用DataStream API可实现功能更强大的数据流水线 。
    • 连接与监控:提供大量连接器,可连接Kafka、Kinesis、Elasticsearch、JDBC数据库等多种数据存储系统;提供面向文件系统的连续型数据源,监控目录变化,还提供数据槽(sink),支持按时间分区写入文件 。

4.Flink技术栈

Flink发展越来越成熟,已经拥有了自己的丰富的核心组件栈。Flink核心组件栈分为三层:API&Libraries层、Runtime核心层和物理部署层。

物理部署层
Runtime核心层
API&Libraries层
本地
单个JVM
集群
Standalone, YARN, Kubernetes

GCE, EC2
Runtime
分布式数据流
CEP
事件处理
Table API & SQL
关系型
FlinkML
机器学习
DataStream API
流处理

5.Flink体系架构

Flink系统主要由两个组件组成,分别为JobManager和TaskManager,Flink 架构也遵循Master-Slave架构设计原则,JobManager为Master节点,TaskManager为Slave节点.
在这里插入图片描述


http://www.hkcw.cn/article/vKWfbNPqIK.shtml

相关文章

使用C# 快速删除Excel表格中的重复行数据-详解

目录 简介 使用工具 C# 删除Excel工作表中的重复行 C# 删除指定Excel单元格区域中的重复行 C# 基于特定列删除重复行 RemoveDuplicates 方法快速比较 简介 重复行是指在Excel表格中完全相同的多行数据。这些冗余行的存在可能源于多种原因,例如: …

OpenCv高阶(十九)——dlib关键点定位

文章目录 一、什么是人脸关键点定位?二、关键点模型的下载及关键信息的理解三、dlib关键点定位的简单实现(1)导入必要的库(2)从指定路径读取图像文件(3)创建dlib的正面人脸检测器对象&#xff0…

【Java】线程池的实现原理是怎样的?CPU密集型任务与IO密集型任务的区别?

一、CPU密集型与IO密集型任务 1.CPU密集型任务(CPU-bound) 定义:需要大量CPU计算资源,大部分时间都在进行运算的任务。 这类任务的特点是计算量大,CPU占用率高。 特点: 主要消耗CPU资源执行速度取决于CPU的计算能力通常涉及复…

【QT】理解QT的“元对象系统”

目录 前置知识: (1)C运行时多态 (2)RTTI QT的元对象系统 1.元对象系统基本内容 2.元对象代码 3.元对象系统其它特性 前置知识: (1)C运行时多态 C的运行时多态是由虚函数和继…

Windows Server 2019--10 网络地址转换

本章要点 了解 NAT 技术的核心原理。掌握 NAT 技术的应用。掌握 NAT 网关的配置。 IP 地址分为两类,分别是私有IP地址(Private IP)与公用IP地址(Public IP)。 位于内部网络中的计算机使用的是私有IP地址,其不需要向IP地址发放机构提出申请。私有IP地址…

掌握STP技术:网络环路终结者实战

实验目的 理解生成树协议(STP)的基本原理及其在网络中的作用。掌握STP的配置方法,包括根桥选举、端口状态转换等关键机制。通过实验验证STP如何防止网络环路并实现冗余路径的优化管理。 实验环境 设备:支持STP的交换机&#xf…

通义灵码2.5——基于MCP打造我的12306火车票智能查询小助手

前沿技术应用全景图 本项目作为通义灵码2.5的标杆实践案例,展现了AI辅助开发在复杂业务系统中的革命性突破。通过深度集成12306 MCP服务体系,我们构建了一个融合智能决策、环境感知和自主优化的新一代火车票查询系统。 #mermaid-svg-4D7QqwJjsQRdKVP7 {…

不可变集合类型转换异常

记录一个异常:class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目录 1、原因2、解决方式一3、解决方式二4、关于不可变集合的补充4.1 JDK8和9的对比4…

初学python的我开始Leetcode题10-1

提示:100道LeetCode热题10-1主要是回溯相关,包括四题:全排列、子集、电话号码的字母组合、组合总和。由于初学,所以我的代码部分仅供参考。 前言 下周是第十六周,然后是两周的期末周,所以马上会缺两周左右…

IPTV电视直播 1.6.0 | 手机电视直播 秒播无卡顿

电视直播是一款功能强大且用户体验优秀的电视直播软件。它提供了丰富的节目资源,并支持高清画质播放,无论是家庭娱乐、移动办公还是学习,都能满足用户的需求。该应用完全无广告、无弹窗,确保用户享受纯净的观看体验。此外&#xf…

BugKu Web渗透之备份是个好习惯

启动场景后,网页显示一段字符串。 看起来像md5值,但是又过长了。 步骤一:右键查看源代码,没有发现任何异常。 步骤二:使用dirsearch去查看是否有其他可疑文件。 在终端输入: dirsearch -u http://117.72.…

深入理解 SELinux:通过 Nginx 和 SSH 服务配置实践安全上下文与端口策略

目录 一、引言 二、实验环境说明 三、实验 1:Nginx 服务安全上下文配置 3.1 实验目标 3.2 操作步骤 1. 开启 SELinux 并重启系统 2. 安装 Nginx 并创建自定义目录 3. 配置 Nginx 指向自定义目录 4. 分析 SELinux 上下文冲突 5. 修改上下文为合法类型 6. 验…

Linux 开发工具

1.sudo白名单 我们如果要让普通用户有sudo的权限 我们就要登录root用户 在/etc/sudoers目录下 通过文本编辑器(我用的是vim) 将要添加的用户 直接添加进去 如下图光标行就是我添加的白名单用户 然后我们添加的这个ly_centos就有sudo的权限了 2.gcc…

React 第四十九节 Router中useNavigation的具体使用详解及注意事项

前言 useNavigation 是 React Router 中一个强大的钩子,用于获取当前页面导航的状态信息。 它可以帮助开发者根据导航状态优化用户体验,如显示加载指示器、防止重复提交等。 一、useNavigation核心用途 检测导航状态:判断当前是否正在进行…

从数据持久化到网络通信与OpenCV:Qt应用程序开发的深度探索与实战

文章目录 前言一、QSettings:轻量级数据持久化方案1.1 QSettings 主要特点1.2 QSettings 常用函数整理 二、数据库2.1 连接SQLite数据库2.2 建表2.3 增删改 三、网络编程3.1 网络分层3.2 IP地址3.3 端口号3.4 基于TCP的Socket通信3.4 相关接口3.4.1核心类3.4.2 通信…

【产品经理从0到1】自媒体端产品设计

后台的定义 “后台” 与“前台”都是相对独立的平台,前台是服务于互联网用户的平台 ,后台主要是支撑前台页面内容、数据及对前台业务情况的统计分析的系统; 后台与前台的区别 第1:使用用户不同 前台用户:互联网用户…

Ubuntu20.04操作系统ssh开启oot账户登录

文章目录 1 前提2 设置root密码3 允许ssh登录root账户3.1 编辑配置文件3.2 重启ssh服务 4 安全注意事项 1 前提 ssh可以使用普通用户正常登录。 2 设置root密码 打开终端,设置密码 sudo passwd root # 设置root密码3 允许ssh登录root账户 3.1 编辑配置文件 su…

四叉树实现四边形网格

import matplotlib.pyplot as plt import matplotlib.patches as patches import numpy as np # 四叉树节点 class QuadNode:def __init__(self, x, y, width, height, depth):self.x xself.y yself.width widthself.height heightself.depth depthself.children []self.…

园区智能化集成平台汇报方案

该方案为园区智能化集成平台设计,依据《智能建筑设计标准》等 20 余项国家与行业规范,针对传统园区信息孤岛、反应滞后、经验流失、管理粗放等痛点,构建可视化智慧园区管理平台,实现大屏数据可视化、三维设备监控、智慧运维(含工单管理、巡检打卡)、能源能耗分析、AI 安防…

C#中的BeginInvoke和EndInvoke:异步编程的双剑客

文章目录 引言1. BeginInvoke和EndInvoke的基本概念1.1 什么是BeginInvoke和EndInvoke1.2 重要概念解释 2. 委托中的BeginInvoke和EndInvoke2.1 BeginInvoke方法2.2 EndInvoke方法2.3 两者的关系 3. 使用方式与模式3.1 等待模式3.2 轮询模式3.3 等待句柄模式3.4 回调模式 4. 底…