TA的每日心情 | 开心 2024-9-30 19:13 |
---|
签到天数: 216 天 [LV.7]常住居民III
一代宗师
- 积分
- 1618
|
本站资源全部免费,回复即可查看下载地址!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
【尚硅谷】Flink1.13实战教程(涵盖所有flink-Java知识点)
整理了一下Flink1.13关于故障转移、SQL以及监控和调试的新特性,个人能力有限,如果发现错误希望各位彦祖们能够及时指出,另外也欢迎大家积极补充(另外第一次接触Flink的小可爱们可以暂时忽略这条信息,等把武老师的视频学习完再瞅瞅也不迟):
参考:Flink官网 https://ci.apache.org/projects/f ... e-notes/flink-1.13/
1.故障转移(Failover):
a. state.backend.async选项已弃用(Remove state.backend.async option)。 快照现在总是异步的(就像以前默认的那样),而且再也没有配置同步快照的选项了。 FsStateBackend和MemoryStateBackend的构造函数为同步/异步快照取一个标志,为API兼容性保留,但该标志现在被忽略。
b. 从checkpoint解绑状态后端(Disentangle StateBackends from Checkpointing)。Flink总是将本地状态存储与容错分离开来。 关键状态是在状态后端本地维护的,可以是在JVM堆上,也可以是在内嵌的RocksDB实例中。 容错来自检查点和保存点——任务内部状态到某些持久文件系统的周期性快照。历史上,Flink的StateBackend界面以一种让许多用户困惑的方式混合了这些概念。 在1.13中,检查点配置被提取到它们自己的接口CheckpointStorage中。此更改不会影响运行时行为,只是为用户提供更好的心智模型。 管道可以在不丢失状态、一致性或语义更改的情况下更新以使用新的抽象。
c. 统一键控状态保存点的二进制格式(Unify binary format for Keyed State savepoints)。Flink的保存点二进制格式在所有状态后端都是统一的。 这意味着您可以使用一个状态后端获取一个保存点,然后使用另一个状态后端恢复它。如果你想切换状态后端,你应该首先升级你的Flink版本到1.13,然后用新版本取一个保存点,只有在那之后,你才能用不同的状态后端恢复它。
d. FailureRateRestartBackoffTimeStrategy允许比配置少一次重启(FailureRateRestartBackoffTimeStrategy allows one less restart than configured)。失败率重启策略允许的每次间隔重启时间比配置的少1。 希望保持当前行为的用户应该将每次间隔允许的最大失败数减少1。
e.支持缩放未对齐检查点(Support rescaling for Unaligned Checkpoints)。当从未对齐的检查点恢复时,用户现在可以更改作业的并行性。 这一变化允许用户在反压力下快速升级工作。
2.SQL
a. 正式弃用legacy planner(Officially deprecate the legacy planner)。旧的表和SQL API计划器已经被弃用,并将在Flink 1.14中删除。 这意味着BatchTableEnvironment和DataSet API互操作都将结束。 使用统一的TableEnvironment进行批处理和流处理,或者使用批处理执行模式下的DataStream API。
b.使用TIMESTAMP_LTZ作为函数PROCTIME()的返回类型(Use TIMESTAMP_LTZ as return type for function PROCTIME())。在Flink 1.13之前,PROCTIME()的函数返回类型是TIMESTAMP,返回值是UTC时区的TIMESTAMP,例如wall-clock显示的是201203-01 12:00:00 at Shanghai,而PROCTIME()显示的是201203-01 04:00:00,这是错误的。 Flink 1.13修复了这个问题,并使用TIMESTAMP_LTZ类型作为PROCTIME()的返回类型,用户不再需要处理时区问题。
c. 支持在TIMESTAMP_LTZ列上定义事件时间属性(Support defining event time attribute on TIMESTAMP_LTZ column)。支持在TIMESTAMP_LTZ列上定义事件时间属性,基于此,Flink SQL优雅地支持夏令时。
d. 正确的函数CURRENT_TIMESTAMP/CURRENT_TIME/CURRENT_DATE/LOCALTIME/LOCALTIMESTAMP/NOW() 。时间函数CURRENT_TIMESTAMP和NOW()的值从TIMESTAMP类型的UTC时间修正为TIMESTAMP_LTZ类型的epoch时间。 时间函数LOCALTIME, LOCALTIMESTAMP, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP和NOW()将在批处理作业的查询开始时对每条记录进行一次计算。
e. 在数值类型和时间戳类型之间禁用有问题的转换(Disable problematic cast conversion between NUMERIC type and TIMESTAMP type)。在NUMERIC类型和TIMESTAMP类型之间的CAST操作是有问题的,现在被禁用了,例如CAST(NUMERIC AS TIMESTAMP(3))被禁用,应该使用TO_TIMESTAMP(FROM_UNIXTIME(NUMERIC))代替。
f. 支持使用模块语法(Support USE MODULES syntax)。术语MODULES现在是一个保留的关键字。 使用反勾号来转义列名和此名称的其他标识符。
g. 更新TableResult.collect()/TableResult.print()到新的类型system。对于列类型和行类型,Table.execute().collect()可能会返回略有不同的结果。 最重要的区别包括: 结构化类型表示为原始类的pojo,而不再是Row。原始类型根据TableConfig中的配置进行序列化。
h. 添加新的StreamTableEnvironment.fromDataStream。fromdatastream现在有稍微不同的语义,因为它已经集成到新的类型系统中。 特别是,与1.12相比,来自复合类型信息的行字段的顺序可能不同。 旧的行为仍然可以通过重载方法获取表达式,如fromDataStream(ds, $("field1"), $("field2"))。
i. 更新的行 Row.toString 方法。Row.toSting()方法已被重制。 这是一个不相容的变化。 如果测试仍然需要旧的表示,那么可以通过标志RowUtils恢复旧的行为。 用于本地JVM的USE_LEGACY_TO_STRING。 但是,依赖行的字符串表示进行测试通常不是一个好主意,因为字段数据类型没有得到验证。
j. 支持使用初始化SQL文件#启动SQL客户端。sql-client-defaults。 yaml yaml文件已弃用,在发布包中没有提供。 为了兼容,它仍然支持使用YAML文件初始化SQL Client(如果手动提供的话)。 但是建议使用新引入的-i startup选项来执行一个初始化SQL文件来设置SQL Client会话。 所谓的初始化SQL文件可以使用Flink ddl来定义可用的目录、表源和接收器、用户定义函数,以及执行和部署所需的其他属性。 对遗留SQL Client YAML文件的支持将在Flink 1.14中被完全删除。
k. Hive方言不再支持DML和DQL的Flink语法。Hive方言支持HiveQL for DML和DQL。 为了使用Flink语法编写,请切换到默认方言。
3.监控和调试(Monitoring & debugging)
a. 引入延迟跟踪状态(Introduce latency tracking state)。状态访问延迟指标被引入来跟踪所有类型的关键状态访问,以帮助调试状态性能。 这个特性在默认情况下是不启用的,可以通过设置state.backend.latency-track来开启。 keyed-state-enabled为true。
b. 支持CPU火焰图在web UI。Flink现在为作业图中的每个节点提供火焰图。 请通过设置相应的配置标志rest.flamegraph.enabled来启用这个实验特性。
c. 在Web UI中显示最近n个作业重启的异常/原因。Flink现在通过REST API和UI公开异常历史。 应该跟踪的最近处理的异常数量可以通过web.exception-history-size来定义。 作为这项工作的一部分,一些异常历史的REST API Json响应值已被弃用。
d.创建backPressuredTimeMsPerSecond metric。以前,idleTimeMsPerSecond被定义为等待输入或返回压力的时间任务。 现在,idleTimeMsPerSecond排除了返回压力时间,所以如果任务返回压力,它就不是空闲的。 反压时间现在被单独测量为backpressurredtimemspersecond。
e. 默认情况下启用log4j2监视间隔。默认情况下,启用了在运行时更新Log4j配置的Log4j支持。 每30秒检查一次配置文件的更改。
f. ZooKeeper仲裁启动失败,缺少log4j库。由于Zookeeper 3.4和Log4j 2不兼容,Flink分发版中的Zookeeper脚本被修改为禁用Log4j JMX集成。 要重新启用此特性,请删除zookeeper.sh文件中设置zookeeper.jmx.log4j.disable的行。
g. 暴露任务初始化阶段。任务的运行状态分为两个状态:初始化和运行。 当状态正在初始化时,任务正在初始化,如果检查点未对齐,则直到所有飞行中的数据被恢复。
[color=rgba(0, 0, 0, 0.85)]
[color=rgba(0, 0, 0, 0.85)]https://www.alipan.com/s/TmfzYUoj8Lf点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
|
温馨提示:
1、本站所有内容均为互联网收集或网友分享或网络购买,本站不破解、不翻录任何视频!
2、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意!
3、本站资源仅供本站会员学习参考,不得传播及用于其他用途,学习完后请在24小时内自行删除.
4、本站资源质量虽均经精心审查,但也难保万无一失,若发现资源有问题影响学习请一定及时点此进行问题反馈,我们会第一时间改正!
5、若发现链接失效了请联系管理员,管理员会在2小时内修复
6、如果有任何疑问,请加客服QQ:1300822626 2小时内回复你!
|