Flink1.18新特性生产环境应用的重点解读!

大家好,我是你们的群主王知无呀。

Flink 1.18已经于近期发布了。在这个新版本中新增了很多新的功能和特性。在这些特性中,有一些是生产环境非常重要的能力,大家在使用过程中可以重点参考和了解其中的原理

算子级别状态保留时间TTL设置

首先,在流处理的提升上,从 Flink 1.18 版本开始,Table API 和 SQL 用户可以为有状态的算子单独设置状态保留时间 (TTL)。

94f5f1ee7082a385b7d1e3f9230ff92e.png

这个功能是一个非常实用和重要的功能,在以前的版本中,状态保留时间只能在 pipeline 级别使用配置项通过table.exec.state.ttl进行控制。引入算子级别的状态保留后,用户现在可以根据其具体需求优化资源使用。

现在可以为左侧和右侧流设置不同的 TTL,这有助于大数据量的状态大小控制,可以有效减少状态大小,在失败恢复,重启上线等场景中,任务可以更快恢复。

但是在公开的Flink1.18版本给出的官方用法中,采用了修改JSON File这种不太易用的方式:

-- left source table
CREATE TABLE Orders (`order_id` INT,`line_order_id` INT
) WITH ('connector'='...'
);-- right source table
CREATE TABLE LineOrders (`line_order_id` INT,`ship_mode` STRING
) WITH ('connector'='...'
);-- sink table
CREATE TABLE OrdersShipInfo (`order_id` INT,`line_order_id` INT,`ship_mode` STRING
) WITH ('connector' = '...'
);COMPILE PLAN '/path/to/plan.json' FOR
INSERT INTO OrdersShipInfo
SELECT a.order_id, a.line_order_id, b.ship_mode 
FROM Orders a JOIN LineOrders b ON a.line_order_id = b.line_order_id;

然后通过修改这个PLAN中的json数据达到分别设置TTL的目的:

5956b9fc8d5e8bbe407ba17b66522d0e.png

上图中的PLAN中有针对算子的state状态设置,可以根据需要修改左右流的状态:

75c78817328fd1f1f7f2b910caf6a44f.png

在FLIP-292中,社区也给出了这么做的理由:

f96c8a85d2e3daf8b7ca3e9cbea77670.png 47b9db36af3c9c2e5b605d057be77588.png

水印对齐和空闲检测

在此之前,这两个功能只能在DatStream API中使用:

-- configure in table options
CREATE TABLE user_actions (...user_action_time TIMESTAMP(3),WATERMARK FOR user_action_time AS user_action_time - INTERVAL '5' SECOND
) WITH ('scan.watermark.idle-timeout'='1min',...
);-- use 'OPTIONS' hint
select ... from source_table 
/**OPTIONS('scan.watermark.idle-timeout'='1min') 
*/
-- configure in table options
CREATE TABLE user_actions (
...
user_action_time TIMESTAMP(3),WATERMARK FOR user_action_time AS user_action_time - INTERVAL '5' SECOND
) WITH (
'scan.watermark.alignment.group'='alignment-group-1',
'scan.watermark.alignment.max-drift'='1min',
'scan.watermark.alignment.update-interval'='1s',
...
);-- use 'OPTIONS' hint
select ... from source_table 
/** OPTIONS(
'scan.watermark.alignment.group'='alignment-group-1', 
'scan.watermark.alignment.max-drift'='1min', 
'scan.watermark.alignment.update-interval'='1s') 
*/

其中水印对齐在在多并行度下,Watermark 会在每个并行度的 source 处或者其他算子内部添加,并且需要在进行对齐。

空闲检测就更有用了,我们在很多业务场景中经常会有Source端数据迟迟不来,导致下游某些酸子不能触发计算,在之前我们可以通过设置table.exec.source.idle-timeout全局生效,现在我们可以在不同的源上设置不同的超时时间了。

动态细粒度扩缩容

Flink 1.18 起,在作业运行时,我们可以通过 Flink Web UI 和 REST API 更改作业的任何 task 的并行度。

之前可能受限于平台能力,这个情况困扰过很多同学,不能修改作业的并行度。现在这个能力有了,可以方便我们轻松的进行任务的扩缩容,并且这个能力和反压监控相结合,更容易调整任务的资源,确保集群任务的健康稳定运行,另外可以方便的进行线上任务治理。

Flink的能力还在不断更新中,例如对Paimon的支持上也有了不小的提升。还有一些其他的改动,大家可以根据实际情况查看官方的文档。

152922e0fc1e20598a71559da463ac43.png300万字!全网最全大数据学习面试社区等你来!

如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!

2bafef8aa6bbb649cde3a4e7f7d5c347.png

456a874196a94bce67f388eb6d133c9f.jpeg

2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)

互联网最坏的时代可能真的来了

我在B站读大学,大数据专业

我们在学习Flink的时候,到底在学习什么?

193篇文章暴揍Flink,这个合集你需要关注一下

Flink生产环境TOP难题与优化,阿里巴巴藏经阁YYDS

Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点

我们在学习Spark的时候,到底在学习什么?

在所有Spark模块中,我愿称SparkSQL为最强!

硬刚Hive | 4万字基础调优面试小总结

数据治理方法论和实践小百科全书

标签体系下的用户画像建设小指南

4万字长文 | ClickHouse基础&实践&调优全视角解析

【面试&个人成长】2021年过半,社招和校招的经验之谈

大数据方向另一个十年开启 |《硬刚系列》第一版完结

我写过的关于成长/面试/职场进阶的文章

当我们在学习Hive的时候在学习什么?「硬刚Hive续集」

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

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

相关文章

GitHub经常打不开或者访问解决办法

访问慢或无法访问的原因:DNS解析是最为基础的一个环节。由于Github的服务器在全球各地,域名解析所需的时间也会不同,这就导致了在特定地区可能会出现Github无法正常访问的情况。 解决:查询到github对应的IP,然后在host…

精准测试:提高软件质量和用户满意度的利器

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

腾讯云域名备案后,如何解析到华为云服务器Linux宝塔面板

一、购买域名并且进行备案和解析,正常情况下,购买完域名,如果找不到去哪备案,可以在腾讯云上搜索“备案”关键词就会出现了,所以这里不做详细介绍,直接进行步骤提示: 二、申请ssl证书&#xff0…

uniapp使用抖音微信自定义组件

tt.vue中使用video-player组件 用到的目录如下: pages.json {"path": "pages/Tabbar/tt/tt","style": {"navigationBarTitleText": "","enablePullDownRefresh": false,// 使用自定义组件"using…

Nginx服务器安装证书并启用SSL(acme.sh)

前提 您已购置vps服务器,例如阿里云全球站ecs、AWS EC2、Azure VM、GCP Compute等安全组已开启80、443端口,且访问源设置为0.0.0.0/0域名已设置A记录指向当前操作服务器,若您使用aws ec2,有公有 IPv4 DNS,可供使用 安…

2023年最新版潮乎盲盒源码含搭建教程

后台开发语言:后端 Laravel 框架开发 前端开发框架:uniappvue 环境配置: php7.4 mysql5.6 nginx1.22 redis(建议宝塔面板或 lnmp) 源码获取请自行百度:一生相随博客 一生相随博客致力于分享全网优质资源&#x…

Python条件判断的运用

问题 在生活中,我们可以通过判断条件是否成立,来决定执行哪个分支。选择语句有多种形式:if语句,if-else语句,if-elif-else语句等。 Python使用if条件判断语句来实现条件判断时,可以在多个循环中实现对问题的…

JAVA亡了?那么多岗位去哪了?

1.java现在有多卷? 虽然近年来出现了许多其他编程语言和技术。但JAVA依旧是热度最高的。它仍然被广泛用于大型企业应用、后端开发、Android应用开发以及嵌入式系统等领域。此外,Java在大数据、云计算和物联网等新兴领域也有着重要的地位。 因此&#x…

基于OR-Tools的装箱问题模型求解(PythonAPI)

装箱问题 一、背包问题(Knapsack problem)1.1 0-1背包模型基于OR-Tools的0-1背包问题求解(PythonAPI)导入pywraplp库数据准备声明MIP求解器初始化决策变量初始化约束条件目标函数调用求解器打印结果 1.2 多重背包问题(…

一篇博客读懂顺序表 —— Sequence-List

目录 一、顺序表的初始定义 1.1新建头文件和源文件 1.2 SeqList.h 中的准备工作 二、顺序表的初始化与销毁 三、首尾插入元素 四、首尾删除元素 五、中间插入元素 六、中间删除元素 七、查找指定元素下标 八、源代码 一、顺序表的初始定义 1.1新建头文件和源文件 当我…

流媒体服务实现H5实时预览视频

目录 背景方案业务实践细节注意 待办 背景 客户aws服务磁盘存储告急,最高可扩容16T。排查如下:主要是视频文件存在大量复制使用的情况。例如发布节目时复制、预览时复制,这样上传一份视频后最大会有四份拷贝(预览、普通发布、互动…

vue3简单写导航anchor示例(支持点击高亮和滚动判断高亮)

1. 点击anchor, 相应的anchorlink高亮 function anchorClick(index) { forceStop.value true; time Date.now(); wheelRef.value.children[index].scrollIntoView({ block: start, behavior: smooth }); // 给一些延时, 再点亮anchor, 同时不再限制scrol…

微信小程序 人工智能志愿者服务活动报名系统uniAPP+vue

基于java语言设计并实现了人工智能志愿者服务APP。该APP基于B/S即所谓浏览器/服务器模式,应用SpringBoot框架与HBuilder X技术,选择MySQL作为后台数据库。系统主要包括用户、志愿活动、活动报名、活动签到、服务职责、服务排行等功能模块。 本文首先介绍…

Zynq-Linux移植学习笔记之64- 国产ZYNQ在linux下配置国产5396芯片

1、背景介绍 复旦微ZYNQ通过SPI配置国产JEM5396,框图如下: 现在需要在linux下的应用程序内配置JEM5396的寄存器。其中FMQL和进口的XILINX ZYNQ类似,JEM5396和进口的BCM5396兼容。因此可以参考进口ZYNQ在linux下配置BCM5396过程。Zynq-Linux移…

云服务器 centos 部署 code-server 并配置 c/c++ 环境

将你的云服务器改为 centos 8 为什么要将云服务器的操作系统改成 centos 8 呢?原因就是 centos 7 里面的配置满足不了 code-server 的需求。如果你使用的是 centos 7 那么就需要你升级一些东西,这个过程比较麻烦。我在 centos 7 上面运行 code-server 的…

k8s、pod

Pod k8s中的port【端口:30000-32767】 port :为Service 在 cluster IP 上暴露的端口 targetPort:对应容器映射在 pod 端口上 nodePort:可以通过k8s 集群外部使用 node IP node port 访问Service containerPort:容…

velero备份k8s集群

流程图 velero备份原理 本地 Velero 客户端发送备份指令。Kubernetes 集群内就会创建一个 Backup 对象。BackupController 监测 Backup 对象并开始备份过程。BackupController 会向 API Server 查询相关数据。BackupController 将查询到的数据备份到远端的对象存储。 velero的…

osg三角带

案例1 #include <osg/Geode> #include <osg/Geometry> #include <osgDB/Registry> #include <osgDB/WriteFile> #include <osg/Notify> #include <osg/PrimitiveSet> #include <osgViewer/Viewer> #include <osgUtil/Optimizer&g…

【数据结构】希尔排序

文章目录 前言一、希尔排序的演示图例二、希尔排序&#xff1a;插入排序的优化版本☆三、核心算法思路四、算法思路步骤&#xff08;一&#xff09;预排序 gap>1&#xff08;二&#xff09;gap1 插入排序 完成排序收尾 五、码源详解&#xff08;1&#xff09;ShellSort1 ——…

Linux CentOS7.9安装OpenJDK17

Linux CentOS7.9安装OpenJDK17 一、OpenJDK下载 清华大学开源软件镜像站 国内的站点&#xff0c;下载速度贼快 二、上传解压 文件上传到服务器后&#xff0c;解压命令&#xff1a; tar -zxvf jdk-xxxx-linux-x64.tar.gz三、配置环境 export JAVA_HOME/home/local/java/j…