因为网上大部分图都很渣所以自己整理了几张原创图,划清清浊
Flink v1.7
-
支持scala2.12版本
-
状态中序列化类演变
-
TypeSerializerSnapshot
替换TypeSerializerConfigSnapshot
-
-
删除legacy mode
-
Savepoints可用于恢复
-
之前,当使用一次精确的接收器时,如果在执行保存点之后,在下一个savepoint出现之前发生故障,则可能会遇到重复输出数据的问题。
-
-
MetricQueryService在单独的线程池中运行
-
延迟指标的粒度
-
延迟标记激活
-
迁移Hadoop的依赖项
-
支持多槽TaskManager
-
StandaloneJobClusterEntrypoint生成具有固定JobID的JobGraph
-
Scaca shell不支持scala2.12
-
故障转移策略的限制
-
Window之前SQL子句可选
-
OperatorSnapshotUtil写入v2快照
-
SBT Project 和 MiniClusterResource
-
如果使用sbt构建的项目需要使用MiniClusterResource,需要配置flink-runtime依赖jar
-
Flink v1.8
State
-
使用TTL连续增量清理旧的Keyed State
-
恢复Savepoints时支持新的模式迁移
-
savepoint兼容性
-
兼容1.3至1.7版本
-
-
RocksDB版本自定义并切换到FRocksDB
Maven Dependencies
-
Flink中不再自动绑定Hadoop依赖
-
Flink不再绑定Hadoop库,如需依赖,手动下载hadoop jar,并将其复制$FLINK_HOME/lib目录中
-
Configuration
-
TaskManager配置
-
TaskManagers
默认绑定到主机IP地址而不是主机名 -
可以再
flink-conf.yaml
文件中,通过配置选项控制:taskmanager.network.bind-policy
-
Table API
-
弃用直接使用Table构造函数用法
-
使用
table.joinLateral()
或table.leftOuterJoinLateral()
代替
-
-
引入新的CSV格式描述符
-
在TableEnvironment上弃用静态生成器方法
-
TableEnvironment.getTableEnvironment()不建议使用静态方法,使用
Batch/StreamTableEnvironment.create()
-
-
更改Table API的maven模块
-
java语言使用flink-table-api-java-bridge,scala语言使用flink-table-api-scala-bridge
-
-
更改外部目录表构建器
-
不推荐使用
ExternalCatalogTable.builder()
,推荐使用ExternalCatalogTableBuilder()
-
-
更改Table API连接器jar的命名
-
使用maven构建jar依赖时,不再具有
sql-jar
限定符,并且artifactId现在以flink-sql
代替flink
,例如flink-sql-connector-kafka
-
-
更改制定Null字面含义
-
需要使用Table API定义Null字面含义,nullOf(type),而不是Null(type)
-
Connectors
-
引入新的KafkaDeserializationSchema,可以直接访问ConsumerRecord
-
FlinkKafkaConsumer将根据主题规范过滤还原分区
Miscellaneous Interface Changes(更改容冗余接口)
-
从TypeSerializer接口中删除了canEqual()方法
-
删除CompositeSerializerSnapshot实用程序类
Memory Management
-
在Fink 1.8.0和更低版本中,taskmanager的托管内存部分由进行控制
taskmanager.memory.fraction
,并且默认值为0.7。但是,有时由于JVM参数NewRatio
的默认值为2,这将导致OOMs ,这意味着旧版本仅占用堆内存的2/3(0.66)。因此,如果遇到这种情况,请手动将此值更改为较低的值。
Flink v1.9
SQL DDL
-
在Flink 1.9.0中,社区还添加了有关SQL DDL的预览功能,但仅适用于批处理样式DDL。因此,尚不支持所有与流有关的概念ÿ