专栏首页about云Flink1.8新版发布:都有哪些改变

Flink1.8新版发布:都有哪些改变

问题导读 1.Flink1.8引入对什么状态的连续清理? 2.保存点兼容性方面,不在兼容哪个版本? 3.Maven依赖在Hadoop方便发生了什么变化? 4.Flink是否发布带有Hadoop的二进制文件? Flink1.8发布,主要改变如下: 1.将会增量清除旧的State 2.编程方面TableEnvironment弃用 3.Flink1.8将不发布带有Hadoop的二进制安装包 更多详细如下:

这次的发行版本讨论了Flink 1.7和Flink 1.8之间发生变化的重要方面,例如配置,特性或依赖性。

状态

1、使用TTL(生存时间)连续增量清除旧的Key状态

我们在Flink 1.6(FLINK-9510)中为Key状态引入了TTL(生存时间)。此功能允许在访问时清理并使Key状态条目无法访问。另外,在编写保存点/检查点时,现在也将清理状态。Flink 1.8引入了对RocksDB状态后端(FLINK-10471)和堆状态后端(FLINK-10473)的旧条数的连续清理。这意味着旧的条数将(根据TTL设置)不断被清理掉。

2、恢复保存点时对模式迁移的新支持

使用Flink 1.7.0,我们在使用AvroSerializer时添加了对更改状态模式的支持。使用Flink 1.8.0,我们在TypeSerializers将所有内置迁移到新的序列化器快照抽象方面取得了很大进展,该抽象理论上允许模式迁移。在Flink附带的序列化程序中,我们现在支持PojoSerializer (FLINK-11485)和Java EnumSerializer (FLINK-11334)以及有限情况下的Kryo(FLINK-11323)的模式迁移格式。

3、保存点兼容性

TraversableSerializer 此序列化程序(FLINK-11539)中的更新,包含Scala的Flink 1.2中的保存点将不再与Flink 1.8兼容。可以通过升级到Flink 1.3和Flink 1.7之间的版本,然后再更新至Flink 1.8来解决此限制。

4、RocksDB版本冲突并切换到FRocksDB(FLINK-10471)

需要切换到名为FRocksDB的RocksDB的自定义构建,因为需要RocksDB中的某些更改来支持使用TTL进行连续状态清理。FRocksDB的已使用版本基于RocksDB的升级版本5.17.2。对于Mac OS X,仅支持OS X版本> =10.13的RocksDB版本5.17.2。另见:https://github.com/facebook/rocksdb/issues/4862。

Maven 依赖

1、使用Flink捆绑Hadoop库的更改(FLINK-11266)

包含hadoop的便捷二进制文件不再发布。

如果部署依赖于flink-shaded-hadoop2包含 flink-dist,则必须从下载页面的可选组件部分手动下载并打包Hadoop jar并将其复制到/lib目录中。另外一种方法,可以通过打包flink-dist和激活 include-hadoopmaven配置文件来构建包含hadoop的Flink分发。

由于hadoop flink-dist默认不再包含在内,因此指定-DwithoutHadoop何时打包flink-dist将不再影响构建。

配置

1、TaskManager配置(FLINK-11716)

TaskManagers现在默认绑定到主机IP地址而不是主机名。可以通过配置选项控制此行为taskmanager.network.bind-policy。如果你的Flink集群在升级后遇到莫名其妙的连接问题,尝试设置taskmanager.network.bind-policy: name在flink-conf.yaml 返回前的1.8的设置行为。

Table API

1、直接表构造函数使用的取消预测(FLINK-11447)

Flink 1.8不赞成Table在Table API中直接使用该类的构造函数。此构造函数以前将用于执行与横向表的连接。你现在应该使用table.joinLateral()或 table.leftOuterJoinLateral()代替。这种更改对于将Table类转换为接口是必要的,这将使Table API在未来更易于维护和更清洁。

2、引入新的CSV格式符(FLINK-9964)

此版本为符合RFC4180的CSV文件引入了新的格式符。新描述符可用作 org.apache.flink.table.descriptors.Csv。

目前,这只能与Kafka一起使用。旧描述符可org.apache.flink.table.descriptors.OldCsv用于文件系统连接器。

3、静态生成器方法在TableEnvironment(FLINK-11445)上的弃用

为了将API与实际实现分开,

TableEnvironment.getTableEnvironment()

不推荐使用静态方法。你现在应该使用

Batch/StreamTableEnvironment.create()。

4、表API Maven模块中的更改(FLINK-11064)

之前具有flink-table依赖关系的用户需要更新其依赖关系flink-table-planner以及正确的依赖关系flink-table-api-*,具体取决于是使用Java还是Scala: flink-table-api-java-bridge或者flink-table-api-scala-bridge。

5、更改为外部目录表构建器(FLINK-11522)

ExternalCatalogTable.builder()不赞成使用ExternalCatalogTableBuilder()。

6、更改为表API连接器jar的命名(FLINK-11026)

Kafka/elasticsearch6 sql-jars的命名方案已经更改。在maven术语中,它们不再具有sql-jar限定符,而artifactId现在以前缀为例,flink-sql而不是flink例如flink-sql-connector-kafka。

7、更改为指定Null的方式(FLINK-11785)

现在Table API中的Null需要定义nullof(type)而不是Null(type)。旧方法已被弃用。

连接器

1、引入可直接访问ConsumerRecord的新KafkaDeserializationSchema(FLINK-8354)

对于FlinkKafkaConsumers,我们推出了一个新的KafkaDeserializationSchema ,可以直接访问KafkaConsumerRecord。这包含了该 KeyedSerializationSchema功能,该功能已弃用但目前仍可以使用。

2、FlinkKafkaConsumer现在将根据主题规范过滤恢复的分区(FLINK-10342)

从Flink 1.8.0开始,现在FlinkKafkaConsumer总是过滤掉已恢复的分区,这些分区不再与要在还原的执行中订阅的指定主题相关联。此行为在以前的版本中不存在FlinkKafkaConsumer。

如果您想保留以前的行为。请使用上面的

disableFilterRestoredPartitionsWithSubscribedTopics()

配置方法FlinkKafkaConsumer。

考虑这个例子:如果你有一个正在消耗topic的Kafka Consumer A,你做了一个保存点,然后改变你的Kafka消费者而不是从topic消费B,然后从保存点重新启动你的工作。在此更改之前,您的消费者现在将使用这两个主题A,B因为它存储在消费者正在使用topic消费的状态A。通过此更改,您的使用者将仅B在还原后使用topic,因为我们使用配置的topic过滤状态中存储的topic。

其它接口改变:

1、从TypeSerializer接口(FLINK-9803)中删除了canEqual()方法

这些canEqual()方法通常用于跨类型层次结构进行适当的相等性检查。在TypeSerializer实际上并不需要这个属性,因此该方法现已删除。

2、删除CompositeSerializerSnapshot实用程序类(FLINK-11073)

该CompositeSerializerSnapshot实用工具类已被删除。

现在CompositeTypeSerializerSnapshot,你应该使用复合序列化程序的快照,该序列化程序将序列化委派给多个嵌套的序列化程序。有关使用的说明,请参阅此处CompositeTypeSerializerSnapshot。

本文分享自微信公众号 - About云(wwwaboutyuncom),作者:pig2

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Flink1.7稳定版发布:新增功能为企业生产带来哪些好处

    问题导读 1.Flink1.7开始支持Scala哪个版本? 2.Flink1.7状态演变在实际生产中有什么好处? 3.支持SQL/Table API中的富集连接...

    用户1410343
  • spark中 map和reduce理解及与hadoop的map、reduce区别

    问题导读 1.你认为map函数可以做哪些事情? 2.hadoop中map函数与Scala中函数功能是否一致? 3.Scala中reduce函数与hadoop中...

    用户1410343
  • hadoop入门:第十章hadoop工具

    问题导读 1.hadoop有哪些工具? 2.hadoop流的作用是什么? 3.hadoop集群负载如何模拟? 4.hadoop数据提取和分析工具是哪个? ...

    用户1410343
  • Flink1.8.0发布!新功能抢先看

    1.Flink1.8.0引入对状态的清理? 2.保存点兼容性方面,不在兼容哪个版本? 3.Maven依赖在Hadoop方便发生了什么变化? 4.Flink是否发...

    王知无
  • Confluence 6 安装补丁类文件 原

    Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将...

    HoneyMoose
  • 它终于来了!一起来探查PHP8测试版都有些啥东东

    其实 PHP8 的这个第一版测试版 (php-8.0.0alpha1) 在2020年6月底就已经上线了,不过也是近两天去官网的时候才看到。这个版本是第一个公开的...

    硬核项目经理
  • Confluence 6 从关闭的连接中恢复 原

    当数据库服务器进行重启或者因为网络问题导致连接中断。所有在数据库连接池中的连接都会被中断。希望处理这个问题,通常需要 Confluence 进行重启。

    HoneyMoose
  • wails Go+vue/angular/react编写桌面GUI客户端

    最近公司需要做一个上传工具,因为上传的文件可能好几个G,所以用传统的http上传是很不现实的,大家就想着做成客户端,但是要跨平台,所以就进行技术选型,当时大家最...

    码农笔录
  • 值得收藏!数据分析最常用的18个概念,终于有人讲明白了

    一是仅利用一些工具,对数据的特征进行查看;二是根据数据特征,感知数据价值,以决定是否需要对别的字段进行探索,或者决定如何加工这些字段以发挥数据分析的价值。字段的...

    华章科技
  • 值得收藏!数据分析最常用的18个概念,终于有人讲明白了

    导读:大多数情况下,数据分析的过程必须包括数据探索的过程。数据探索可以有两个层面的理解:

    CDA数据分析师

扫码关注云+社区

领取腾讯云代金券