Hudi系列25: Flink SQL使用checkpoint恢复job异常

news2025/1/11 6:57:13

文章目录

  • 一. 通过Flink SQL将MySQL数据写入Hudi
  • 二. 模拟Flink任务异常
    • 2.1 手工停止job
    • 2.2 指定checkpoint来恢复数据
    • 2.3 整个yarn-session上的任务恢复
  • 三. 模拟源端异常
    • 3.1 手工关闭源端 MySQL 服务
    • 3.2 FLink任务查看
  • FAQ:
    • 1. checkpoint未写入数据
    • 2. checkpoint 失败
    • 3. 手工取消Flink job后,checkpoint文件自动删除
  • 参考:

一. 通过Flink SQL将MySQL数据写入Hudi

启动Yarn Session

$FLINK_HOME/bin/yarn-session.sh -jm 16384 -tm 16384 -d  2>&1 &

/home/flink-1.14.5/bin/sql-client.sh embedded -s yarn-session 

Flink SQL 代码:

-- 设置checkpoint的时间间隔
set execution.checkpointing.interval=60sec;
-- 设置任务结束后不清空checkpoint文件,便于后续恢复
set execution.checkpointing.externalized-checkpoint-retention=RETAIN_ON_CANCELLATION;
-- 同时只能有一个checkpoint进程
set execution.checkpointing.max-concurrent-checkpoints=1;

CREATE TABLE flink_mysql_cdc1 (
    id BIGINT NOT NULL PRIMARY KEY NOT ENFORCED,
    name varchar(100)
  ) WITH (
    'connector' = 'mysql-cdc',
    'hostname' = 'hp8',
    'port' = '3306',
    'username' = 'root',
    'password' = 'abc123',
    'database-name' = 'test',
    'table-name' = 'mysql_cdc',
    'server-id' = '5409-5415',
    'scan.incremental.snapshot.enabled'='true'
);

CREATE TABLE flink_hudi_mysql_cdc1(
    id BIGINT NOT NULL PRIMARY KEY NOT ENFORCED,
    name varchar(100)
  ) WITH (
   'connector' = 'hudi',
   'path' = 'hdfs://hp5:8020/tmp/hudi/flink_hudi_mysql_cdc1',
   'table.type' = 'MERGE_ON_READ',
   'changelog.enabled' = 'true',
   'hoodie.datasource.write.recordkey.field' = 'id',
   'write.precombine.field' = 'name',
   'compaction.async.enabled' = 'true',
   'hive_sync.enable' = 'true',
   'hive_sync.table' = 'flink_hudi_mysql_cdc1',
   'hive_sync.db' = 'test',
   'hive_sync.mode' = 'hms',
   'hive_sync.metastore.uris' = 'thrift://hp5:9083',
   'hive_sync.conf.dir'='/home/apache-hive-3.1.2-bin/conf'
);


set table.exec.resource.default-parallelism=4;

insert into flink_hudi_mysql_cdc1 select * from flink_mysql_cdc1;

Flink web界面:
2000w数据初始化已经完成
image.png

checkpoint日志量真的多
image.png

hdfs查看checkpoint日志量
image.png

二. 模拟Flink任务异常

2.1 手工停止job

在Flink web界面将Flink SQL任务手工结束掉
image.png

2.2 指定checkpoint来恢复数据

查找最近的checkpoint:
image.png

代码:

set 'execution.savepoint.path'='hdfs://hp5:8020/vmcluster/flink-checkpoints/a2874606453b4aebfdaca2f627355f99/chk-23';

insert into flink_hudi_mysql_cdc1 select * from flink_mysql_cdc1;

image.png

image.png

2.3 整个yarn-session上的任务恢复

待测试:
如果是整个yarn-session异常,也可以启动yarnsession的时候指定checkpoint。

$FLINK_HOME/bin/yarn-session.sh -jm 8192 -tm 8192 -d -s hdfs://hp5:8020/vmcluster/flink-checkpoints/c12eb538c2e8965d2d94c170b67641f2/chk-1/_metadata

/home/flink-1.14.5/bin/sql-client.sh embedded -s yarn-session 

三. 模拟源端异常

3.1 手工关闭源端 MySQL 服务

service mysqld stop

3.2 FLink任务查看

Flink可以自己重试,这个还是比较不错,无需人工干预。

等mysql启动成功之后,任务又可以继续衔接上。

image.png

FAQ:

1. checkpoint未写入数据

别人的checkpoint
image.png

我的checkpoint
看来是我的checkpoint都没成功
image.png

修改checkpoint时间间隔:

-- 修改前:
set execution.checkpointing.interval=10sec;

-- 修改后:
set execution.checkpointing.interval=60sec;

2. checkpoint 失败

报错信息:

Checkpoint Coordinator is suspending.

image.png

解决方案:
把yarn-session的资源由8G提升到16G问题解决。

对于一些大表,最好还是先通过Spark进行初始化,然后在接增量。

3. 手工取消Flink job后,checkpoint文件自动删除

https://developer.aliyun.com/ask/435979
http://events.jianshu.io/p/032396543ceb

在网上看到的资源都是针对代码级别的,没有看到Flink SQL级别的
还是得上官网查找
https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/config/

set execution.checkpointing.externalized-checkpoint-retention=RETAIN_ON_CANCELLATION;

参考:

  1. https://blog.csdn.net/qq_31866793/article/details/103069646

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

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

相关文章

自然语言处理技术简介

长期以来,研究人员进行自然语言处理研究主要依赖各种机器学习模型,以及手工设计的特征,但这样做带来的隐患是由于语言信息被稀疏表征表示,会出现维度诅咒之类的问题。而随着近年来词嵌入(低维、分布式表征)…

港联证券|A股船舶板块景气反转即将到来

在经历了去年的爆发后,2023年的中国造船业仍然处在订单交付两旺的高度景气周期之中。 5月22日,中国船舶集团有限公司旗下沪东中华造船(集团)有限公司宣布交付全球最大级别24116TEU超大型集装箱船系列3号船“地中海吉玛”号。据报道…

3D 对象转换器应该如何将 OBJ 转换为 FBX ?

Aspose.3D 是一个功能丰富的游戏软件和计算机辅助设计(CAD)的API,可以在不依赖任何3D建模和渲染软件的情况下操作文档。API支持Discreet3DS, WavefrontOBJ, FBX (ASCII, Binary), STL (ASCII, Binary), Universal3D, Collada, glTF, GLB, PLY…

SpringMVC框架理解

JavaEE体系结构包括四层,从上到下分别是应用层、Web层、业务层、持久层。Struts和SpringMVC是Web层的框架,Spring是业务层的框架,Hibernate和MyBatis是持久层的框架。 为什么要使用SpringMVC? 很多应用程序的问题在于处理业务数据…

一对一项目指导,在线购物网站webform+SQLServer技术架构

我是Tom老师,10开发经验, 我先后在携程网、陆金所,两家互联网和金融行业领头公司 担任高级开发工程师, 技术深厚,开发经验丰富,认真负责。 我现在专门做一对一编程辅导。 希望我的专业辅导,…

02数字图像基础

文章目录 2数字图像基础2.4图像取样和量化2.4.4图像内插 2.5像素间的一些基本关系2.5.1相邻像素2.5.2邻接性、连通性、区域和边界2.5.3距离度量 2.6 数字图像处理2.6.1阵列和矩阵操作2.6.2线性操作和非线性操作2.6.3算术操作2.6.5空间操作2.6.6向量与矩阵操作2.6.7图像变换2.6.…

架构演变之路

一)单机架构: 一)定义:应用服务和数据库服务器共用一台服务器,所有的服务被部署到一台服务器上面 蓝色的就是我们写的JAVA代码用户服务负责用户的登录和注册,商品服务用于商品的购买和交易,交易模块用于用户的下单和购买,在数据库…

周赛 Round#3 题解

又不能放图片,又不能写学校,你让我怎么办啊!! 系列文章目录 1.周赛 Round#1 2.周赛 Round#2 前言 这是周赛第三轮。//涉及隐私原因,博文里不放题目,要看的去http://0241:101:610:801.22222 划分字符串贪…

树状数组(一)

文章目录 前言一、树状数组简介二、树状数组的原理与相应模块三、实战演练3.1 区域和检索 - 数组可修改3.1.1 题目链接3.1.2 题目描述3.1.3 题目代码3.1.4 解题思路 3.2 数字流的秩3.2.1 题目链接3.2.2 题目描述3.2.3 题目代码3.2.4 解题思路 总结 前言 给定一段数字&#xff…

多元回归预测 | Matlab麻雀算法(SSA)优化BP神经网络回归预测,SSA-BP回归预测,多变量输入单输出模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | 麻雀算法(SSA)优化BP神经网络回归预测,SSA-BP回归预测,多变量输入单输出模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %-------------…

Windows10家庭版安装WSL

记录Windows10家庭版安装linux子系统WSL 查看自己的windows版本是否支持安装wsl2,cmd里输入ver查看。 系统版本:Windows 10 1903及以上版本。 系统内部版本: 18362及以上。 启用适用于Linux的windows子系统 右键命令提示符,以管…

小航编程题库2022年NOC决赛图形化(小低组)(含题库教师账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 单选题3.0分 删除编辑 答案:C 第1题对小猫编程,程序运行后,看到的小猫最终方向是多少? A、120B…

Compose二三事:初步认识

Compose 是什么? Compose是Jetpack系列中用于构建原生Android界面的工具库,Jetpack是Google推出的一系列帮助开发者规范代码的库。简单来说就是用代码写UI,也就是声明式UI。 声明式UI和命令式UI的区别在于,声明式UI更关心做什么&…

Python系列模块之标准库re详解

感谢点赞和关注 ,每天进步一点点!加油! 目录 一、Python 正则表达式 1.1 re模块常用操作 1.2 re.match 1.3 re.search 1.4 re.findall 1.5 re.compile 函数 1.6 re.sub 检索和替换 1.7 re.split拆分 1.8 实战案例:根据文…

多看一眼多进步,python入门到放弃

python相关工具都安装完成后,就可以开始学习了,以下在pycharm中,以下学习内容来自b站边学习边整理的笔记,好记性不如赖笔头,多总结多记录,总是不错的 print()函数的使用 print函数可以输出哪些内容 &…

华为OD机试真题 Java 实现【优雅数组】【2023Q1 200分】

一、题目描述 如果一个数组中出现次数最多的元素出现大于等于k次,被称为k-优雅数组,k也可以被称为优雅阈值。 例如,数组[1, 2, 3, 1, 2, 3, 1],它是一个3-优雅数组,因为元素1出现次数大于等于3次,数组[1,…

华为OD机试真题 Java 实现【取出尽量少的球】【2023Q1 200分】

一、题目描述 某部门开展 Family Day 开放日活动,其中有个从桶里取球的游戏。 游戏规则如下: 有 N 个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球,每个小桶装的小球数量记录在数组 bucketBallNums 中。 游戏开…

eu.org申请免费域名 免费域名申请教程

EU.org是由Paul Mockapetris在1996年创建的免费域名服务,给没有资金买域名的个人或公司提供永久免费的域名。虽然是二级域名,但是已经被一些网络公司(当然是国外的)认定为顶级域名。 优缺点 优点:稳定性高、几乎没有…

04.Python Dash网页开发:ubuntu服务器部署DASH网站(uWSGI+nginx)

<~生~信~交~流~与~合~作~请~关~注~公~众~号生信探索> Dash官网只有付费的部署方式❌ 我的简单理解&#xff0c;uWSGI去运行dash app并且与nginx通讯&#xff1b;nginx处理浏览器传来的请求并把需求给uWSGI Python enviroment mkdir bioquestvi ~/bioquest/dash.yamlmicro…

docker搭建简单elk日志系统6(kibana设置)

1.进入kibana的索引管理界面清理调之前生成的测试数据流 2.模拟dev、uat、prod三个环境产生日志 修改filebeat配置文件&#xff0c;重启filebeat fields: application: testenv: devlog_type: normalfilebeat -c .\filebeat-test.yml产生日志 查看kibana数据流(已经生成dev环…