Flink

news2024/12/25 22:38:53

文章目录

  • 1. 概述
    • 1.1 Apache Flink
    • 1.2 特点
    • 1.3 Flink VS Spark Streaming
  • 2. 安装与部署
  • 2. Flink运行时的组件
    • 2.1 作业管理器(JobManager)
    • 2.2 任务管理器(TaskManager)
    • 2.3 资源管理器(ResourceManager)
    • 2.4 分发器(Dispatcher)
  • 3. 任务提交流程
  • 4. Flink API
    • 4.1 不用级别的抽象
    • 4.2 常用DataStream API
      • 4.2.1 Flink针对DataStream提供了大量的已经实现的DataSource (数据源)接口
      • 4.2.2 Flink针对DataStream提供了大量的已经实现的算子
        • 4.2.2.1 Map
        • 4.2.2.2 Flatmap
        • 4.2.2.3 Filter
        • 4.2.2.4 KeyBy
        • 4.2.2.5 Reduce/Aggregations
        • 4.2.2.6 union
        • 4.2.27 旁路输出
        • 4.2.2.8 window/WindowAll
        • 4.2.2.8 Window有序消费
        • 4.2.2.9 RichAsyncFunction(外部数据访问的异步 I/O)

1. 概述

1.1 Apache Flink

Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。

1.2 特点

  1. 支持事件时间(event-time)和处理时间(processing-time)语义
  2. 精确一次(exactly-once)的状态一致性保证
  3. 低延迟,每秒处理数百万个事件,毫秒级延迟
  4. 与众多常用存储系统的连接
  5. 高可用,动态扩展,实现7*24小时全天候运行

1.3 Flink VS Spark Streaming

  • 数据模型
  1. spark采用RDD模型,spark streaming 的 DStream 实际上也就是一组组小批数据RDD的集合
  2. flink基态数据模型是数据流,以及事件(Event)序列
  • 运行时架构
  1. spark 是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个
  2. flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理

2. 安装与部署

2. Flink运行时的组件

在这里插入图片描述

2.1 作业管理器(JobManager)

  • 控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager所控制执行
  • JobManager会先接收要执行的应用程序,这个应用程序会包括:作业图(JopGraph)、逻辑数据流图(Logical dataflow graph)和打包了所有类、库和其他资源的JAR包
  • JobManager会把JopGraph转换成一个物理层面的数据流图,这个图被叫做"执行图"(ExecutionGraph),包含了所有可以并发执行的任务
  • JobManager会向资源管理器(ResourceManager)请求执行任务必要的资源,也就是任务管理器(TaskManager)上的插槽(slot)。一旦它获取到了足够的资源,就会将执行图分发到真正运行它们的TaskManager上。而在运行过程中,JobManager会负责所有需要中央协调的操作,比如说检查点(checkpoints)的协调.

2.2 任务管理器(TaskManager)

  • Flink中的工作进程。通常在Flink中会有多个TaskManager运行,每一个TaskManager都包含了一定数量的插槽((slots)。插槽的数量限制了TaskManager能够执行的任务数量。
  • 启动之后,TaskManager会向资源管理器注册它的插槽;收到资源管理器的指令后,TaskManager就会将一个或者多个插槽提供给
    JobManager调用。JobManager就可以向插槽分配任务(tasks)来执行了。
  • 在执行过程中,一个TaskManager可以跟其它运行同一应用程序的
    TaskManager交换数据。

2.3 资源管理器(ResourceManager)

  • 主要负责管理任务管理器(TaskManager)的插槽(slot),TaskManger插槽是Flink中定义的处理资源单元。
  • Flink为不同的环境和资源管理工具提供了不同资源管理器,比如YARN、Mesos、K8s,以及standalone部署。
  • 当JobManager申请插槽资源时,ResourceManager会将有空闲插槽的TaskManager分配给JobManager。如果ResourceManager没有足够的插槽来满足JobManager的请求,它还可以向资源提供平台发起会话,以提供启动TaskManager进程的容器。

2.4 分发器(Dispatcher)

  • 可以跨作业运行,它为应用提交提供了REST接口。
  • 当一个应用被提交执行时,分发器就会启动并将应用移交给一个JobManager。
  • Dispatcher也会启动一个Web UI,用来方便地展示和监控作业执行的信息。
  • Dispatcher在架构中可能并不是必需的,这取决于应用提交运行的方式。

3. 任务提交流程

在这里插入图片描述

4. Flink API

4.1 不用级别的抽象

Flink提供了四种不同层级的API。低级API,核心API,Table API,SQL

在这里插入图片描述

  • Flink API 最底层的抽象为有状态实时流处理。其抽象实现是 Process Function,并且 Process Function 被 Flink 框架集成到了 DataStream API 中来为我们使用。自由度最高,从而允许程序可以实现复杂计算。

  • Flink API 第二层抽象是 Core APIs。Core APIs 提供的流式 API(Fluent API)为数据处理提供了通用的模块组件,例如各种形式的用户自定义转换(transformations)、联接(joins)、聚合(aggregations)、窗口(windows)和状态(state)操作等。此层 API 中处理的数据类型在每种编程语言中都有其对应的类。

  • Flink API 第三层抽象是 Table API。Table API 是以表(Table)为中心的声明式编程(DSL)API,例如在流式数据场景下,它可以表示一张正在动态改变的表。
    表和 DataStream/DataSet 可以进行无缝切换,Flink 允许用户在编写应用程序时将 Table API 与 DataStream/DataSet API 混合使用。

  • Flink API 最顶层抽象是 SQL。这层抽象在语义和程序表达式上都类似于 Table API,但是其程序实现都是 SQL 查询表达式。SQL 抽象与 Table API 抽象之间的关联是非常紧密的,并且 SQL 查询语句可以在 Table API 中定义的表上执行。

4.2 常用DataStream API

Flink DataStream的常用API(主要分为三块):DataSource(程序的数据源输入),Transformation(具体的操作),Sink(程序的输出)

4.2.1 Flink针对DataStream提供了大量的已经实现的DataSource (数据源)接口

  1. 基于文件: readTextFile (path)读取文本文件,文件遵循Text InputFormat逐行读取规则并返回。
  2. 基于Socket: socketTextStream从Sokcet中读取数据,元素可以通过一个分隔符分开
  3. 基于集合: fromCollection (Collection)通过Java的Collection集合创建一个数据流,集合中的所有元素必须是相同类型的。
  4. 自定义输入: addSource可以实现读取第三方数据源的数据。

4.2.2 Flink针对DataStream提供了大量的已经实现的算子

4.2.2.1 Map

DataStream → DataStream
输入一个元素,然后返回一个元素,中间可以进行清洗转换等操作。
在这里插入图片描述

4.2.2.2 Flatmap

DataStream → DataStream
输入一个元素,可以返回零个,一个或者多个元素
在这里插入图片描述

4.2.2.3 Filter

DataStream → DataStream
过滤函数,对传入的数据进行判断,符合条件的数据会被留下。
在这里插入图片描述

4.2.2.4 KeyBy

DataStream → DataStream
根据指定的Key进行分组,Key相同的数据会进入同一个分区。
在这里插入图片描述

4.2.2.5 Reduce/Aggregations

KeyedStream → DataStream

在这里插入图片描述

4.2.2.6 union

DataStream → DataStream
在这里插入图片描述

4.2.27 旁路输出

DataStream → DataStream
在这里插入图片描述

4.2.2.8 window/WindowAll

  • KeyedStream → WindowedStream

  • DataStream → AllWindowedStream

Sliding Windows滑动窗口(time/count):

  • 每次滑动window slide的距离, 并获取window size范围内的数据进行处理
    在这里插入图片描述

Tumbling Windows滚动窗口(time/count): (滚动窗口是window size = widow slide的滑动窗口)

  • 每次获取window size范围内的数据进行处理
    在这里插入图片描述

4.2.2.8 Window有序消费

  • 场景: Window基于 EventTime 统计, 需要既实时统计, 又需要保障数据准确性

  • 问题: Window基于 EventTime 而不是 OperateTime 计算时, Flink会丢弃延时数据

Watermark(水印):

  • 缺点: 降低吞吐量(缓存历史窗口数据), 仅能处理允许延时范围内的数据, 迟到严重数据依然会被丢弃

  • 窗口按 EventTime 计算后, 划分每个窗口开始,结束时间点; 按读取到消息被标记上的Watermark判断是否超过结束时间点触发统计

  • Watermark 标记规则: 例: 窗口结束时间-2秒 -> 允许消息延迟2秒

Allowed Lateness(允许迟到机制):

  • 将延迟过于严重的数据输出到侧输出流, 侧输出流存储或进行特殊处理

4.2.2.9 RichAsyncFunction(外部数据访问的异步 I/O)

在这里插入图片描述

实现数据库(或键/值存储)的异步 I/O 交互需要支持异步请求的数据库客户端。许多主流数据库都提供了这样的客户端。
如果没有这样的客户端,可以通过创建多个客户端并使用线程池处理同步调用的方法,将同步客户端转换为有限并发的客户端。
然而,这种方法通常比正规的异步客户端效率低。

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

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

相关文章

[附源码]JAVA毕业设计旅游景点展示平台的设计与实现(系统+LW)

[附源码]JAVA毕业设计旅游景点展示平台的设计与实现(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09…

【cocos源码学习】模板示例工程的目录说明

环境说明 硬件:macbook pro 四核Intel Core i7系统:macOS Big Sur 11.4.2、 xcode Version 13.1 、cmake 3.20.5软件:iterm2 Build 3.4.8、zsh 5.8、Android Studio Dolphin | 2021.3.1cocos2d-x v4 : 官方下载压缩包 http://coc…

深度学习 RNN循环神经网络原理与Pytorch正余弦值预测

深度学习 RNN循环神经网络原理与Pytorch正余弦值预测一、前言二、序列模型三、不含序列关联的神经网络四、包含隐藏状态的卷积神经网络五、正余弦预测实战六、参考资料一、前言 前面我们学习了前馈神经网络、卷积神经网络,它们有一个特点,就是每次输出跟…

HTML旅游景点网页作业制作——旅游中国11个页面(HTML+CSS+JavaScript)

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

精品基于Javaweb的酒店民宿管理推荐平台SSM

《基于Javaweb的酒店民宿管理推荐平台》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术: 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据…

老司机发车了,CountDownLatch:等与不等都在你

哈喽大家好,我是阿Q。 前几天我们把 ReentrantLock的原理 进行了详细的讲解,不熟悉的同学可以翻看前文,今天我们介绍另一种基于 AQS 的同步工具——CountDownLatch。 CountDownLatch 被称为倒计时器,也叫闭锁,是 juc…

[论文精读|顶刊论文]Relational Triple Extraction: One Step is Enough

2022.5.11 |IJCAI-2022|华中科技大学|2022年SOTA| 原文链接 Relational Triple Extraction: One Step is Enough 过去的步骤: 寻找头尾实体的边界位置(实体识别)将特定令牌串联成三元组&…

[附源码]Python计算机毕业设计Django区域医疗服务监管可视化系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

分享107个小清新,总有一款适合您

PPT链接:https://pan.baidu.com/s/1WqaR_29avEgq46iTSLKfmw?pwd5r81 提取码:5r81 源码下载链接:ppt.rar - 蓝奏云 采集的参数 page_count 1 # 每个栏目开始业务content"text/html; charsetgb2312"base_url "https://sc…

Python可视化招聘信息聚合系统 (附源码)!

前言 基于数据技术的互联网行业招聘信息聚合系统,本系统以Python为核心,依托web展示,所有功能在网页就可以完成操作,爬虫、分析、可视化、互动独立成模块,互通有无。 依托python的丰富库实现,爬虫使用Req…

详解设计模式:备忘录模式

详解设计模式:备忘录模式 备忘录模式(Memento Pattern)也被称为快照模式(Snapshot Pattern)、Token 模式(Token Pattern),是在 GoF 23 种设计模式中定义了的行为型模式。 备忘录模式…

阿里云存储解决方案,助力轻舟智航“将无人驾驶带进现实”

轻舟智航介绍 轻舟智航是一家以“将无人驾驶带进现实”为使命的自动驾驶通用解决方案公司,依赖双擎战略,一方面主张以高性价比的前装量产方案,致力于打造L4级体验的城市高速NOA方案,满足不同客户不同等级的自动驾驶量产需求。另一…

Lottie 动画导出为 GIF/MP4 以及与 QML 集成演示

获取 Lottie 动画文件 lottiefiles 是一个很好的网站, 从上面可以下载到别人分享的 lottie 动画文件. 我们可以下载到多种格式, 下面分别讲解每个格式的下载和适用情景. 下载 JSON 源文件 这是体积最小的格式, 一般在 10kb ~ 100kb 之间. 考虑到 lottiefiles 的服务器在国外…

锂热电池检测设备 你一定没见过这种检测方式!

项目需求 用户希望纳米Namisoft帮他们设计开发一款系统,要求系统软件安装在PC控制装置上,系统通过使用USB、RS232、LAN通讯接口实现对锂电池测试过程中所用到的仪器(内阻测试仪、扫码枪、触摸显示器和电源模块等)进行软件控制&…

浸没式冷却-散热技术新趋势,一起学Flotherm电子元器件散热仿真

作者:Billy,仿真秀专栏作者 随着电子元器件功率的上升,散热成为技术发展的瓶颈之一。单纯的风冷在一些情况下无法满足散热需求,直接式液冷和间接式液冷因其可以提供更大量级的对流换热系数,带走更多的热量&#xff0c…

基于智能优化算法PSO/GWO/AFO+柔性车间生产调度(Matlab代码实现)

目录 1 柔性车间生产调度 2 运行结果 3 参考文献 4 Matlab代码实现 1 柔性车间生产调度 随着经济全球化的不断加深和市场竞争的日益严峻,传统的单一车间制造模式已经无法满足我国制造业的生产需求,分布式生产制造模式已经成为企业提高生产竞争力的重要手段。由于不同工厂之…

[附源码]计算机毕业设计校友社交系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

目标检测算法——3D公共数据集汇总 2(附下载链接)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f384;&#x1f384;近期&#xff0c;小海带在空闲之余&#xff0c;收集整理了一批3D公共数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&…

微服务自动化【Docker-Compose】

目录 1. docker-compose 2. docker-compose安装与配置 3. docker-compose.yml 配置文件基本介绍 3.1 version: 指定 docker-compose.yml 文件的写法格式 3.2 services&#xff1a;多个容器集合 4. docker-compose 基本指令 5. docker-compose 网络 5.1 指定网络模式 …

不懂业务不清楚指标?这40套可视化大屏模板,让你突破职场天花板

报表可以说是中国职场的一大特色&#xff0c;不少职场人需要每天做各种报表给领导或者业务决策者看&#xff0c;为此甚至诞生了不少的“表哥表姐”。但很多人在做报表的时候其实并不懂业务&#xff0c;需要找业务确定业务指标才做的下去。 今天我就分享40多个报表模板&#xf…