赞
踩
13.流处理-更新了从 Aligned Checkpoint(AC)切换到 Unaligned Checkpoint(UC)的时间点;
14.流处理-对于复杂的流作业可以在运行前检测并解决潜在的正确性问题;
15.流处理-维表关联-支持了通用的缓存机制和相关指标,可以加速维表查询;
16.流处理-维表关联-通过作业配置或查询提示支持可配置的异步模式(ALLOW_UNORDERED),在不影响正确性的前提下大大提升查询吞吐;
17.流处理-维表关联-支持可重试的查询,解决维表数据更新延迟问题;
18.流处理-异步 I/O 支持重试;
19.流处理-新语法-USING JAR 支持动态加载 UDF jar包,方便平台开发者轻松实现 UDF 的管理和相关作业的提交;
20.流处理-新语法-CREATE TABLE AS SELECT 方便用户基于已有的表和查询创建新的表;
21.流处理-新语法-ANALYZE TABLE 支持用户手工为原表生成统计信息,以便优化器可以生成更优的执行计划;
22.批处理-新语法-支持通过 DataStream#cache 缓存 Transformation 的执行结果;
23.History Server 及已完成作业的信息增强;
24.在 Table API 或 SQL 应用程序中支持 Protobuf 格式;
25.为异步 Sink 引入可配置的 RateLimitingStrategy;
SQL Gateway 是对 SQL Client 的扩展和增强,支持多租户和插件式 API 协议(Endpoint),解决了 SQL Client 只能服务单用户并且不能对接外部服务或组件的问题。
当前 SQL Gateway 已支持 REST API 和 HiveServer2 协议,用户可以通过 cURL,Postman,各种编程语言的 HTTP 客户端链接到 SQL Gateway 提交流作业、批作业,甚至 OLAP 作业。
HiveServer2 协议允许使用 Hive JDBC/Beeline 和 SQL Gateway 进行交互,Hive 生态(DBeaver, Apache Superset, Apache DolphinScheduler, and Apache Zeppelin)也因此很容易迁移到 Flink。
当用户使用 HiveServer2 协议连接 SQL Gateway,SQL Gateway 会自动注册 Hive Catalog,自动切换到 Hive 方言,自动使用批处理模式提交作业,用户可以得到和直接使用 HiveServer2 一样的体验。
Flink 完善了对 Hive 语法的兼容,增加了对 Hive 若干生产中常用语法的支持。
Hint 是业界用来干预执行计划以改善优化器缺点的通用解决方案。
统计信息缺失或优化器的代价模型不完善都会导致选出错误 Join 策略,从而导致作业运行慢甚至有运行失败的风险。
用户通过指定 Join Hint,让优化器尽可能选择指定的 Join 策略,避免优化器的各种不足,以确保批作业的生产可用性。
批作业中数据倾斜是常见的,使用 HashJoin 可能运行失败,因此引入自适应的 HashJoin:
Join 算子运行时一旦 HashJoin 运行失败,可以自动回退到 SortMergeJoin,并且是 Task 粒度,通过该机制确保 HashJoin 算子始终成功,从而提高了作业的稳定性。
问题机器:指存在硬件问题、突发 I/O 繁忙或 CPU 负载高等问题的机器,可能会使运行在该机器上的任务比其他机器上的任务要慢得多,从而影响批处理作业的整体执行时间。
启用预测执行时:
大多数现有 Source 都可以使用预测执行,目前 Sink 尚不支持预测执行。
增强了 Web UI 和 REST API,以显示任务的多个执行实例和被加黑的 TaskManager。
结合 Blocking Shuffle 和 Pipeline Shuffle 的优点:
注意:该功能为实验性的,并且默认关闭。
改进了 Blocking Shuffle 的可用性和性能,包括自适应网络缓冲区分配、顺序 IO 优化和结果分区重用,允许多个消费者节点重用同一个物理结果分区,以减少磁盘 IO 和存储空间。
还引入了两种压缩率更高的压缩算法(LZO 和 ZSTD)与默认的 LZ4 压缩算法相比,进一步减少存储空间,但要付出一些 CPU 成本。
静态分区裁剪:即在优化阶段,优化器将 Filter 中的 Partition 相关的过滤条件下推到 Source Connector 中从而减少不必要的分区读取。
动态分区裁剪:即运行时根据其他相关表的数据确定分区裁剪信息从而减少对分区表中无效分区的读取。
基于 Changelog State Backend 在自身易用性上和与其他 State Backend 兼容性上做了诸多改进:
使用了 RocksDB 的区间删除来优化增量 RocksDB State Backend 的 Rescaling 性能。
区间删除被用来避免在 Rescaling 过程中大量的扫描和单点删除操作,对有大量的状态需要删除的扩并发来说,单个并发上的恢复速度可以提高 2~10 倍。
之前,RocksDB 的日志位于它自己的 DB 目录中,这个版本让 RocksDB 的日志默认留在 Flink 的日志目录中。
新增了 RocksDB 相关的统计指标,以帮助调试 DB 级别的性能,例如,在 DB 内的总块缓存命中/失败计数。
透支缓冲区(Overdraft Buffers)旨在缓解反压情况下 Subtask 被阻塞的概率,通过设置 taskmanager.network.memory.max-overdraft-buffers-per-gate 开启。
从 1.16 开始,一个 Flink 的 Subtask 可以申请 5 个(默认)额外的透支缓冲区。
透支缓冲区会轻微地增加作业的内存使用量,但可以极大地减少 Checkpoint 的间隔,特别是在开启 Unaligned Checkpoint 情况下。只有当前 Subtask 被下游 Subtasks 反压且当前 Subtask 需要请求超过 1 个网络缓冲区(Network Buffer)才能完成当前的操作时,透支缓冲区才会被使用。
更新了从 Aligned Checkpoint(AC)切换到 Unaligned Checkpoint(UC)的时间点。
对于复杂的流作业,现在可以在运行前检测并解决潜在的正确性问题。
如果问题不能完全解决,一个详细的消息可以提示用户如何调整 SQL,以避免引入非确定性问题。
维表关联在流处理中被广泛使用,在 1.16 中加入了多项优化和增强:
为异步 I/O引入了内置的重试机制,对用户现有代码是透明的,可以灵活地满足用户的重试和异常处理需求。
在 Python DataStream API 中以及在 Table API 和 SQL 的 Python 表值函数中,也支持了新的执行模式:“线程”模式。
在该模式下,用户自定义的 Python 函数将通过 JNI 在 JVM 中执行,而不是在独立的 Python 进程中执行。
支持通过 DataStream#cache 缓存 Transformation 的执行结果。缓存的中间结果在首次计算中间结果时才生成,以便以后的作业可以重用该结果。
如果缓存丢失,原始的 Transformation 将会被重新计算以得到结果。目前该功能只在批处理模式下支持。这个功能对于 Python 中的 ML 和交互式编程非常有用。
在 Table API 或 SQL 应用程序中支持 Protobuf 格式。
1.15 中允许实现自定义异步 Sink。
1.16 中支持可配置的 RateLimitingStrategy,可以自定义其异步 Sink 在请求失败时的行为方式,具体行为取决于特定的 Sink。
如果没有指定 RateLimitingStrategy,它将默认使用 AIMDScalingStrategy。
1.批处理-支持 Sink 算子预测执行,优化预测执行慢任务的检测;
2.批处理-自适应批处理调度器成为了批作业的默认调度器,改进自适应批调度器的配置,增强了自适应批处理调度器的能力;
3.批处理-混合 Shuffle 模式支持自适应批调度器和预测执行,混合 Shuffle 模式支持重用中间数据;
4.批处理-支持 SQL Client 的 gateway 模式,可以使用 SQL 语句来管理作业的生命周期;
5.批处理-为 Batch 模式引入了新的 Delete 和 Update API,扩展了 ALTER TABLE 语法,包括 ADD/MODIFY/DROP 列、主键和 Watermark 的能力;
6.批处理-优化Hive connector,在流批模式下均能自动地进行文件合并;
7.引入了动态规划 join-reorder 算法,引入了动态 local hash aggregation 策略,移除了不必要的虚拟函数调用;
8.流处理-引入实验性功能 PLAN_ADVICE;
9.流处理-增强 watermark 对齐;
10.流处理-扩展 Streaming FileSink;
11.流处理-解决 UC 会写入过多的小文件,导致 HDFS 的 namenode 负载过高的问题,提供了 REST API,可以在作业运行时手动触发具有自定义 Checkpoint 类型的 Checkpoint;
12.流处理-RocksDBStateBackend 升级,Calcite 升级;
13.在 Slack 频道加入了性能日常监控汇报来帮助开发者快速发现性能回退问题。
14.支持 Task 级别火焰图;
15.支持通用的令牌机制;
Sink 算子支持预测执行,包括 DiscardingSink、PrintSinkFunction、PrintSink、FileSink、FileSystemOutputFormat 和 HiveTableSink。
优化预测执行慢任务的检测。
自适应批处理调度器成为了批作业的默认调度器。
该调度器可以根据每个 job vertex 处理的数据量,自动为其设置合适的并行度,是唯一支持预测执行的调度器。
改进自适应批调度器的配置,不再需要显式将全局默认并行度设置为-1 来开启自动推导并行度功能,如果设置了全局默认并行度,其会被用做自动推导并行度的上界。
增强了自适应批处理调度器的能力,可以根据细粒度的数据分布信息,将数据更均匀的分配给下游任务,自动推导的并行度现在也不再被限制为 2 的幂。
混合 Shuffle 模式支持自适应批调度器和预测执行。
混合 Shuffle 模式支持重用中间数据。
提高了稳定性,避免了在大规模生产环境中出现的稳定性问题
支持了 SQL Client 的 gateway 模式,允许用户将 SQL 查询提交给 SQL Gateway 来使用 Gateway 的各种功能。
可以使用 SQL 语句来管理作业的生命周期,包括显示作业信息和停止正在运行的作业。
为 Batch 模式引入了新的 Delete 和 Update API,并将其暴露给连接器,这样外部存储系统便可以基于 API 实现行级更新和删除。
扩展了 ALTER TABLE 语法,包括 ADD/MODIFY/DROP 列、主键和 Watermark 的能力。
优化Hive connector,在之前的版本中,对于 Hive 的写入,只支持在流模式下自动地进行文件合并,从 Flink 1.17 开始,在批模式下也能自动地进行文件合并,可以大大减少小文件的数量。
通过加载HiveModule来使用 Hive 内置函数时,引入了原生的 Hive 聚合函数如 SUM/COUNT/AVG/MIN/MAX 进 HiveModule 中,可以在基于哈希的聚合算子上执行,带来显著的性能提升。
引入了动态规划 join-reorder 算法(注意:join-reorder 默认未开启)
引入了动态 local hash aggregation 策略,根据数据的分布,动态确定是否需要在本地进行聚合操作以提高性能。
移除了不必要的虚拟函数调用,加快执行速度。
引入实验性功能 PLAN_ADVICE,该功能可以检测用户 SQL 潜在的正确性风险,并提供优化建议。
如果用户通过 EXPLAIN PLAN_ADVICE 命令发现查询存在 NDU(非确定性更新) 问题,优化器会在物理计划输出的末尾追加建议,建议会标记到对应操作节点上,并提示用户更新查询和配置,通过提供具体的建议,优化器可以帮助用户提高查询结果的准确性。
== Optimized Physical Plan With Advice ==
…
advice[1]: [WARNING] The column(s): day(generated by non-deterministic function: CURRENT_TIMESTAMP ) can not satisfy the determinism requirement for correctly processing update message(‘UB’/‘UA’/‘D’ in changelogMode, not ‘I’ only), this usually happens when input node has no upsertKey(upsertKeys=[{}]) or current node outputs non-deterministic update messages. Please consider removing these non-deterministic columns or making them deterministic by using deterministic functions.
PLAN_ADVICE 还可以帮助提高查询的性能和效率,如果检测到聚合操作可以优化为更高效的 local-global 聚合操作,优化器会提供相应的优化建议,通过应用这些具体的建议,优化器可以帮用户提高其查询的性能和效率。
== Optimized Physical Plan With Advice ==
…
advice[1]: [ADVICE] You might want to enable local-global two-phase optimization by configuring (‘table.optimizer.agg-phase-strategy’ to ‘AUTO’).
Watermark 对齐增强-解决 event time 作业中的源数据倾斜问题;
该方案存在限制:Source 并行度必须和分区数匹配,因为具有多个分区的 Source 算子中,如果一个分区比另一个分区更快地发出数据,此时需要缓存大量数据。
增强 watermark 对齐:考虑 watermark 边界的情况下对 Source 算子内的多个分区进行数据发射对齐,确保了 Source 中的 Watermark 前进更加协调,避免了下游算子缓存过多的数据,从而提高了流作业的执行效率。
添加 ABFS 支持后,StreamingFileSink 可以支持五种不同的文件系统:HDFS、S3、OSS、ABFS 和 Local。
解决了之前版本的 UC 会写入过多的小文件,可能导致 HDFS 的 namenode 负载过高的问题。
提供了 REST API,可以在作业运行时手动触发具有自定义 Checkpoint 类型的 Checkpoint,例如,使用增量 Checkpoint 运行的作业,可以定期或手动触发全量 Checkpoint 来去除多个增量 Checkpoint 之间的关联关系,从而避免引用很久以前的文件。
将 FRocksDB 的版本升级到 6.20.3-ververica-2.0:
提供参数扩大 TaskManager 的 slot 之间共享内存的范围,可以在 TaskManager 中 slot 内存使用不均匀时提高内存效率,基于此在调整参数后可以以资源隔离为代价来降低整体内存消耗。
将 Calcite 版本升级到 1.29.0 以提高 Flink SQL 系统的性能和效率。
支持 Python 3.10、支持在 Mac M1 和 M2 电脑上运行 PyFlink,改进了 Java 和 Python 进程之间的跨进程通信的稳定性、支持以字符串的方式声明 Python UDF 的结果类型、支持在 Python UDF 中访问作业参数。
在 Slack 频道加入了性能日常监控汇报来帮助开发者快速发现性能回退问题。
Flame Graph 功能提供了针对 task 级别的可视化支持。
在 Flink 1.17 之前 Flink 只支持 Kerberos 认证和基于 Hadoop 的令牌;
在 Flink 1.17 之后 Flink 的委托令牌框架更加通用,使其认证协议不再局限于 Hadoop。
提供了 Flink SQL Gateway 的 JDBC Driver,可以使用支持 JDBC 的任何 SQL 客户端通过 Flink SQL 与表进行交互。
可以通过 Catalog 接口自定义存储过程到连接器中。
连接器内的存储过程提高了 Flink 的 SQL 和 Table API 的可扩展性。
可以使用 Call 语句来直接调用 catalog 内置的存储过程。
CREATE TABLE paimon
.default
.T
(
id BIGINT PRIMARY KEY NOT ENFORCED,
dt STRING, – format ‘yyyy-MM-dd’
v STRING
);
– use catalog before call
proceduresUSE CATALOG paimon
;
– compact the whole table using call statement
CALL sys.compact(‘default.T’);
支持以下功能(需要底层连接器支持):
支持时间旅行(time travel) SQL 语法,用于查询历史版本的数据,可以指定一个时间点,来检索表在该时间点的数据和架构。
– 查询表 paimon_tb
在 2022年11月11日的数据
SELECT * FROM paimon_tb FOR SYSTEM_TIME AS OF TIMESTAMP ‘2022-11-11 00:00:00’;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-MKrB0pYJ-1712517380133)]
[外链图片转存中…(img-1ZRJAlH1-1712517380133)]
[外链图片转存中…(img-rJDN4xcn-1712517380134)]
[外链图片转存中…(img-iCa6qgbG-1712517380134)]
[外链图片转存中…(img-070PKvKd-1712517380135)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-ZkO68u1L-1712517380135)]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。