前线速看
![0e765cbcc00139dbdd4c3af8b9d1a366.png](https://img-blog.csdnimg.cn/img_convert/0e765cbcc00139dbdd4c3af8b9d1a366.png)
统一API:对比spark程序开发,flink一套应用开发即可重用在流批环境
统一计算:适配多种数据源,可以在streaming warehouse整体概念下计算,一套计算引擎解决多种场景计算
统一存储:table store不仅对flink提供存储能力,对spark外部计算引擎同样可以;同时flink也适配了各式的存储中间件
![7993def18e39e26c499cc0af8bed6dbd.png](https://img-blog.csdnimg.cn/img_convert/7993def18e39e26c499cc0af8bed6dbd.png)
上图着重强调了中国团队对flink1.16的贡献。
![f68168373b75e0bc48c97d358b7ac693.png](https://img-blog.csdnimg.cn/img_convert/f68168373b75e0bc48c97d358b7ac693.png)
sql gateway这个功能超级强大,支持多租户,协议插件化,兼容hive生态,以后flink流批作业都可以通过sql gateway提交到集群了。
![d1be693d12092f14d9b9aacaa8f374ca.png](https://img-blog.csdnimg.cn/img_convert/d1be693d12092f14d9b9aacaa8f374ca.png)
上图是状态存储改进。
![6423d8fb72e3493fd676c3af83c7242b.png](https://img-blog.csdnimg.cn/img_convert/6423d8fb72e3493fd676c3af83c7242b.png)
![fb2438a341d1983a82f9769fcc25224b.png](https://img-blog.csdnimg.cn/img_convert/fb2438a341d1983a82f9769fcc25224b.png)
更快更稳更易用:Flink自适应批处理能力演进
![77f9aad7b7a933ad4b563a0428247f03.png](https://img-blog.csdnimg.cn/img_convert/77f9aad7b7a933ad4b563a0428247f03.png)
那么具体有哪些优化呢?
1 Adaptive Batch Scheduler自动设置作业并行度
![fcb6cf9a90bc49d749761d47259ae41b.png](https://img-blog.csdnimg.cn/img_convert/fcb6cf9a90bc49d749761d47259ae41b.png)
综上,上面的问题,我们都思考下,怎么解决?
![036da688011da0c107ed8fa81935bfdb.png](https://img-blog.csdnimg.cn/img_convert/036da688011da0c107ed8fa81935bfdb.png)
那么自适应批量调度
![9313a2608e2796495ac72faddce60a1b.png](https://img-blog.csdnimg.cn/img_convert/9313a2608e2796495ac72faddce60a1b.png)
2 Speculative Execution 发现和缓解热点机器对作业的影响
![e7ed02ff8aab166f72a0ccd35686cfc5.png](https://img-blog.csdnimg.cn/img_convert/e7ed02ff8aab166f72a0ccd35686cfc5.png)
从上面 现状和问题,可以看到下面的图片flink批处理推出了推测执行,这也是flink1.16新推出的机制。
![f82f1d5e72f84181c760773e0453b3fc.png](https://img-blog.csdnimg.cn/img_convert/f82f1d5e72f84181c760773e0453b3fc.png)
下面的推测执行在flink框架层面的执行范围,目前知道的是sink层面是不支持推测机制;如果自定义source事件,SplitEnumerator需要实现SupportsHandleExecutionAttemptSourceEvent接口
![a365aabbb0a0417f333b6fa7e2656ab3.png](https://img-blog.csdnimg.cn/img_convert/a365aabbb0a0417f333b6fa7e2656ab3.png)
下图中是推测执行的web ui,后续会支持sink推测执行。
![b1f58292d45d659d1f7f6ef1a1696003.png](https://img-blog.csdnimg.cn/img_convert/b1f58292d45d659d1f7f6ef1a1696003.png)
3 Hybrid Shuffle 提供资源利用率和数据传输率
![8e89f0310724aabb591568b828cbd195.png](https://img-blog.csdnimg.cn/img_convert/8e89f0310724aabb591568b828cbd195.png)
那么怎么集合流和批两种的优势呢,其实就是怎样结合流的快和批的稳定,Hybrid Shufle应运而生
![4786aa9d1c424e2a81755fde526ca3d2.png](https://img-blog.csdnimg.cn/img_convert/4786aa9d1c424e2a81755fde526ca3d2.png)
Hybrid Shuffle的目标时 具备资源自适应的能力,资源充足时,直接流式shuffle,资源不足时,又具备批量shuffle的稳定性,用户完全无感。
![3c1d3c7e8267c437a8bcdf237e949991.png](https://img-blog.csdnimg.cn/img_convert/3c1d3c7e8267c437a8bcdf237e949991.png)
Hybrid Shuffle提供了两种落盘策略,从上图中可以看出,性能是有提升,但是提升有限,期待后面有质的飞跃。
4 Dynamic Partition Pruning 过滤无用数据,提高处理效率
![d9caae93e8407d3e83fffd2500b0f476.png](https://img-blog.csdnimg.cn/img_convert/d9caae93e8407d3e83fffd2500b0f476.png)
![247b42730c6ffc49b93a23cccaa74eba.png](https://img-blog.csdnimg.cn/img_convert/247b42730c6ffc49b93a23cccaa74eba.png)
![f58f6585315f476ffd2602f0e59348cd.png](https://img-blog.csdnimg.cn/img_convert/f58f6585315f476ffd2602f0e59348cd.png)
![da3397c2bf075086ca7ebd4a2e161755.png](https://img-blog.csdnimg.cn/img_convert/da3397c2bf075086ca7ebd4a2e161755.png)
![c3d2f11d067e21237df00a5805d7de7c.png](https://img-blog.csdnimg.cn/img_convert/c3d2f11d067e21237df00a5805d7de7c.png)
从上图中可以看出DynmaicFilter DataCollector左边和右边的scan是没有依赖关系的,OrderEnforcer就是建立两者之间的依赖关系,仅是为了runtime调度器他们之前是有数据依赖的,从而确保调度先后顺序是没毛病的。
![b7708c7680eb14ff9bcbcd6c0b152389.png](https://img-blog.csdnimg.cn/img_convert/b7708c7680eb14ff9bcbcd6c0b152389.png)
![a2f3e64d9efccce42dc164de994a26d4.png](https://img-blog.csdnimg.cn/img_convert/a2f3e64d9efccce42dc164de994a26d4.png)
![4ece815fd9e16c63646516f414dad9f4.png](https://img-blog.csdnimg.cn/img_convert/4ece815fd9e16c63646516f414dad9f4.png)
Flink 1.16 Preview: Hive SQL如何平迁到Flink SQL
1 迁移的动机
为什么Flink要做hive sql迁移?
离线用户吸引离线数仓用户,打磨批引擎,螺旋迭代;离线业务开发门槛降低用户flink开发离线业务的门槛;hive生态工具生态是最高的壁垒,融入离线生态;流批一体 推动业界,先统一殷勤,后统一API。
![91670d3ffff747bf5ae8dd16e254b85c.png](https://img-blog.csdnimg.cn/img_convert/91670d3ffff747bf5ae8dd16e254b85c.png)
2 迁移的挑战
![1cb6b0a328cb117aeb0fb63ed6179784.png](https://img-blog.csdnimg.cn/img_convert/1cb6b0a328cb117aeb0fb63ed6179784.png)
3 如何迁移
复用hive语法
![3ab38562d801620f46e66f533250e61a.png](https://img-blog.csdnimg.cn/img_convert/3ab38562d801620f46e66f533250e61a.png)
hivesql到hive parser 再到flink relnode做了大量的工作,目的为了更好的与flinksql引擎的兼容。
hive语法兼容:Flink1.16 hive语法兼容度从85%提升至94.1%(Hive qtest 12k测试集)。
![238b4252dd4049d7578db29c17a1a269.png](https://img-blog.csdnimg.cn/img_convert/238b4252dd4049d7578db29c17a1a269.png)
hivesql 迁移在快手的实践
![f7e179b11f3cf898d8dc6147f86b9283.png](https://img-blog.csdnimg.cn/img_convert/f7e179b11f3cf898d8dc6147f86b9283.png)
4 demo
![4c15db2a6c6400eae32a59b9ecd9dcf4.png](https://img-blog.csdnimg.cn/img_convert/4c15db2a6c6400eae32a59b9ecd9dcf4.png)
![b6085d7c0095c1823ee3d9d1a3cd6888.png](https://img-blog.csdnimg.cn/img_convert/b6085d7c0095c1823ee3d9d1a3cd6888.png)
![00db7d99f068912084ec20557daf47a6.png](https://img-blog.csdnimg.cn/img_convert/00db7d99f068912084ec20557daf47a6.png)
基于log的通用增量 Checkpoint
什么是checkpoint ,通常会想到状态持久化,flink独有的特性,轻量且快,容错,本地格式化,快速恢复。
![f1e2eb20dc30619d70535a5f1d6b9451.png](https://img-blog.csdnimg.cn/img_convert/f1e2eb20dc30619d70535a5f1d6b9451.png)
1 checkpoint 性能优化之路
![5f221023e3eb29721a3e65009d4b9304.png](https://img-blog.csdnimg.cn/img_convert/5f221023e3eb29721a3e65009d4b9304.png)
checkpoint不同版本之间的优化
0.9 轻量级异步的snapshot算法,把barrier作为一个特殊的record在graph中流动,同时将耗时较大的文件上传等工作放到异步的过程当中进行,这样的话对主流程的影响是变的非常小的。
1.0 当中支持了RocksDB StateBackend,对于大状态下的存储提供了很好的支持。
1.3 当中实现了基于RocksDB incremental checkpoint,这个机制是进一步提升了在异步阶段的checkpoint的性能。
1.11 当中引入了Unaligned Checkpoint。
1.13 当中又引入了Unaligned Checkpoint (Production-ready),在一些场景下对于barrier对齐会有瓶颈的作业的话,基于Unaligned Checkpoint 以及 buffer debloating我们可以甚至让一些作业在反压比较严重的情况下依然可以做出Checkpoint。
1.14 当中又加入了buffer debloating的概念,上面1.13中介绍的buffer debloating就是此概念,通过调整buffer debloating的大小来加速barrier的流动,进一步加速checkpoint的完成,而对 unaligned checkpoint去进一步减少 unaligned checkpoint过程中存储的数据量。
1.15 1.16 当中引入了changelog backend,这个功能就是我们本次学习的重点,它的机制就是进一步的通过一个更通用的increment的checkpoint机制更进一步异步的减少开销,提升checkpoint的异步部分的性能。
![bba1b66c2fa35b4af575a2997e812838.png](https://img-blog.csdnimg.cn/img_convert/bba1b66c2fa35b4af575a2997e812838.png)
我们可以通过checkpoint链路上看这些优化技术在graph中的体现,在触发checkpoint的时候,我们知道source阶段barrier随着graph进行流动,然后在刚打开了buffer debloating的时候flink会通过计算数据吞吐等方式来动态调整network buffer的大小来加速barrier的传递,而当barrier到达state节点的时候,如果是aligned checkpoint那么就会等待barrier的对齐,如果是unaligned checkpoint的话会直接将buffer当中的内容存储到hdfs当中不会阻塞,然后同时触发statebackend上的checkpoint的过程 ,buffer的传输的话就像上图中虚线所示,然后在statebackend内部再触发checkpoint的时候基于异步的checkpoint算法,在异步部分会进行一个文件的上传,如上图实现所示,开启了rocksdb increment的时候,会做些增量文件的上传,在这次介绍changelog statebackend的部分的话,我们可以看到最下面的虚线 我们会把原来的statebackend的异步上传部分和changelog进行解耦,然后会有一个独立的上传hdfs的过程,这个过程会在后面进行详细介绍。
![95c7fa8f41b198b0f64d25fcd6002d33.png](https://img-blog.csdnimg.cn/img_convert/95c7fa8f41b198b0f64d25fcd6002d33.png)
上图中的指标会让你对checkpoint有一些直观的感受,包括像端到端延迟,这个是对checkppoint最直观的性能的一个感受。
2 解析changelog
![e999aaebd664cc896764fd919ad73697.png](https://img-blog.csdnimg.cn/img_convert/e999aaebd664cc896764fd919ad73697.png)
![91546f9de024620d035be4d59f07388f.png](https://img-blog.csdnimg.cn/img_convert/91546f9de024620d035be4d59f07388f.png)
![6eab98c758b31b4435cb5ab095b7f594.png](https://img-blog.csdnimg.cn/img_convert/6eab98c758b31b4435cb5ab095b7f594.png)
![27659dd51a1382d115713bf9d37420db.png](https://img-blog.csdnimg.cn/img_convert/27659dd51a1382d115713bf9d37420db.png)
![71ff49d9c2c34731e5f5b4b48ee618b5.png](https://img-blog.csdnimg.cn/img_convert/71ff49d9c2c34731e5f5b4b48ee618b5.png)
![cd3df6ad9f3dee918669c60662d2f0a2.png](https://img-blog.csdnimg.cn/img_convert/cd3df6ad9f3dee918669c60662d2f0a2.png)
![3ef787a588d75451aad60d5592772c9a.png](https://img-blog.csdnimg.cn/img_convert/3ef787a588d75451aad60d5592772c9a.png)
![6633b04ae862a5b45cb2649358f30ee9.png](https://img-blog.csdnimg.cn/img_convert/6633b04ae862a5b45cb2649358f30ee9.png)
![acfbe90a7f0d7f78764bc8ecfca36890.png](https://img-blog.csdnimg.cn/img_convert/acfbe90a7f0d7f78764bc8ecfca36890.png)
![05966c2ccc2a6bf4b7b3db4b10486aea.png](https://img-blog.csdnimg.cn/img_convert/05966c2ccc2a6bf4b7b3db4b10486aea.png)
![0bbd8475818cfd88ae8d90438ab9923d.png](https://img-blog.csdnimg.cn/img_convert/0bbd8475818cfd88ae8d90438ab9923d.png)
![69a189179e43961dbf4605edc6741763.png](https://img-blog.csdnimg.cn/img_convert/69a189179e43961dbf4605edc6741763.png)
![4598092891fd141c5aac1ba4b863e7ac.png](https://img-blog.csdnimg.cn/img_convert/4598092891fd141c5aac1ba4b863e7ac.png)
![4bd6dcf9e1a4f117d1979b83bbe0106d.png](https://img-blog.csdnimg.cn/img_convert/4bd6dcf9e1a4f117d1979b83bbe0106d.png)
3 一览State/Checkpoint优化
![20e5c324bf1ac93aff746d2e934f1904.png](https://img-blog.csdnimg.cn/img_convert/20e5c324bf1ac93aff746d2e934f1904.png)
4 总结
![09159edad33924696a42065f631855c9.png](https://img-blog.csdnimg.cn/img_convert/09159edad33924696a42065f631855c9.png)
Flink CDC + Kafka加速业务实时化
广义的概念上,能够捕获数据变更的技术,我们都可以称为CDC (Change Data Capture)。通常我们说的CDC技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。
1 Flink CDC技术
主要用到的场景有以下这些:
![6e31bc4702fd203ae4e0f26c0ea9c2ef.png](https://img-blog.csdnimg.cn/img_convert/6e31bc4702fd203ae4e0f26c0ea9c2ef.png)
![3cc0f605d4475a3492ad2ca229ab128a.png](https://img-blog.csdnimg.cn/img_convert/3cc0f605d4475a3492ad2ca229ab128a.png)
![28775216917eeb5f1d78908e5abf2f23.png](https://img-blog.csdnimg.cn/img_convert/28775216917eeb5f1d78908e5abf2f23.png)
![ede9a137ee1c49f570d76d45d2e2c3b0.png](https://img-blog.csdnimg.cn/img_convert/ede9a137ee1c49f570d76d45d2e2c3b0.png)
![e07c191e4224fe73de305e6992ffe39c.png](https://img-blog.csdnimg.cn/img_convert/e07c191e4224fe73de305e6992ffe39c.png)
![08364e0810a811105cbcfb6bae07301c.png](https://img-blog.csdnimg.cn/img_convert/08364e0810a811105cbcfb6bae07301c.png)
![affccdc52c598073aea5f29c8df50117.png](https://img-blog.csdnimg.cn/img_convert/affccdc52c598073aea5f29c8df50117.png)
2 Flink+Kafka实时数据集成方案
![a92d32bc5600a7d01b4772bab631cd98.png](https://img-blog.csdnimg.cn/img_convert/a92d32bc5600a7d01b4772bab631cd98.png)
![0117fa14d329cedb5b735350c7875e12.png](https://img-blog.csdnimg.cn/img_convert/0117fa14d329cedb5b735350c7875e12.png)
![ac5458406417a21a8f42999bc8d2cb5f.png](https://img-blog.csdnimg.cn/img_convert/ac5458406417a21a8f42999bc8d2cb5f.png)
目前CDAS是阿里云商业化的功能,该部分代码在写这篇文章时暂时没有开源。
![161bb4b6fc1b22c0d05e6df428e30ed9.png](https://img-blog.csdnimg.cn/img_convert/161bb4b6fc1b22c0d05e6df428e30ed9.png)
![c8811cccbde0d26989b00e072f41409d.png](https://img-blog.csdnimg.cn/img_convert/c8811cccbde0d26989b00e072f41409d.png)
![3ed9acbfa365f770a5ebfd0ee4c47592.png](https://img-blog.csdnimg.cn/img_convert/3ed9acbfa365f770a5ebfd0ee4c47592.png)
3 Demo:Flink+Kafka实现CDC数据的实时集成和实时分析
![022fbc2b3d666a5906b64dc78b1e4339.png](https://img-blog.csdnimg.cn/img_convert/022fbc2b3d666a5906b64dc78b1e4339.png)
此处省略,有想看的请自行按照上面url查看。
Flink Table Store典型应用场景
1 介绍Flink Table Store
![77149502fbc7cc950b4d395e1a982016.png](https://img-blog.csdnimg.cn/img_convert/77149502fbc7cc950b4d395e1a982016.png)
其实我觉得数仓分为实时和离线最好的状态。
![b507988f0d05ed03dc94dd1048296f58.png](https://img-blog.csdnimg.cn/img_convert/b507988f0d05ed03dc94dd1048296f58.png)
![e1c397033e7dadeb4cbc367dcff1eb2e.png](https://img-blog.csdnimg.cn/img_convert/e1c397033e7dadeb4cbc367dcff1eb2e.png)
![2ba8cf1732695fb0d83d36fe0b8268dc.png](https://img-blog.csdnimg.cn/img_convert/2ba8cf1732695fb0d83d36fe0b8268dc.png)
![062d95c2072eb4ca75684d194cebad28.png](https://img-blog.csdnimg.cn/img_convert/062d95c2072eb4ca75684d194cebad28.png)
2 应用场景
![8bc396d6fba971dc6cdbdfd9fd26ddea.png](https://img-blog.csdnimg.cn/img_convert/8bc396d6fba971dc6cdbdfd9fd26ddea.png)
![5b41d57f5543a80db062187211508ea5.png](https://img-blog.csdnimg.cn/img_convert/5b41d57f5543a80db062187211508ea5.png)
![79c52a3fb205c0b573928d179e09f77d.png](https://img-blog.csdnimg.cn/img_convert/79c52a3fb205c0b573928d179e09f77d.png)
![ce103b5494cd1d90bb3cdc178c4ac679.png](https://img-blog.csdnimg.cn/img_convert/ce103b5494cd1d90bb3cdc178c4ac679.png)
3 Demo
![023005e313fd80d72084e827eb8abdb6.png](https://img-blog.csdnimg.cn/img_convert/023005e313fd80d72084e827eb8abdb6.png)
4 后续挑战
![ba8a7305cdd665b47fabaf92dc529f6f.png](https://img-blog.csdnimg.cn/img_convert/ba8a7305cdd665b47fabaf92dc529f6f.png)
如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!
2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)
Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点