前言
- 主要为之前总结的源码文章补充流程图。
- 总结一下整体流程
说明
之前以Java Client为例,总结了 Insert 源码的整体流程及部分源码,由于各种原因,没有总结完。长时间不看这方面的源码,容易忘记,之前没有总结流程图,现在回忆起来比较麻烦,不如看流程图方便快捷。所以先补充总结一下之前文章中的流程图,再继续学习总结后面的源码,这样比较方便。
流程图
主要分为自己总结以及借助Shiyan Xu
总结的博客中的流程图一起理解。
主要总结 Flink 重启策略
more >>Task Failure Recovery
当 Task 发生故障时,Flink 需要重启出错的 Task 以及其他受到影响的 Task ,以使得作业恢复到正常执行状态。
Flink 通过重启策略和故障恢复策略来控制 Task 重启:重启策略决定是否可以重启以及重启的间隔;故障恢复策略决定哪些 Task 需要重启。
研究总结 Hudi extraMetadata ,记录研究过程。主要目的是通过 extraMetadata 保存 source 表的 commitTime (checkpoint), 来实现增量读Hudi表写Hudi表时,保存增量读状态的事务性,实现类似于流任务中的 exactly-once
有个需求:增量读Hudi表关联其他Hudi表然后做一些复杂的业务处理逻辑,然后将结果表保存到目标Hudi表中
然后就有问题:如何保证保存目标Hudi表和保存 endCommiTime 是事务的。具体如下
1、Spark支持增量读Hudi表,需要传入起(始) commitTime。
2、上一批数据处理完成后应该保存上次增量读的的 endCommiTime,作为下一批增量读的的 beginCommitTime
3、可以选择将上一批的 endCommiTime 保存到 HDFS 或者数据库表中,但是不能保证事务。(并且还需要借助外部表或者存储目录,如果能通过Hudi本身解决,就比较完美了)
4、也就是可能存在保存目标Hudi表成功,但是保存 endCommiTime 失败的情况
这时就想到了 DeltaStreamer 中是通过设置 checkpoint 来实现的,具体是通过将 commitTime 的值保存到目标表 .commit 元数据文件中(extraMetadata->deltastreamer.checkpoint.key)。我们可以参考 DeltaStreamer 中的实现逻辑,来实现我们的需求。
more >>上篇文章 总结了Spark SQL Rollback, Hudi CLI 也能实现 Rollback,本文总结下 Hudi CLI 安装配置以及遇到的问题。
https://hudi.apache.org/cn/docs/cli/
1 | mvn clean package -DskipTests -Drat.skip=true -Dscala-2.12 -Dspark3.2 -Pflink-bundle-shade-hive3 -Dflink1.15 |
因为有 Hudi Rollback 的需求,所以单独总结 Hudi Spark Sql Procedures Rollback。
官方文档:https://hudi.apache.org/docs/procedures
相关阅读:Hudi Spark SQL Call Procedures学习总结(一)(查询统计表文件信息)
官方文档:https://hudi.apache.org/docs/rollbacks
回滚数据,可以回滚到至上一个commit(成功的),也可以回滚到指定 commit (savepoint)。本文暂不涉及savepoint,只总结 回滚到上一个 commit。
more >>
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true