Flink1.11 安装部署及Release 文档解读

  • 1. [Flink 1.11 Release 文档解读](https://ci.apache.org/projects/flink/flink-docs-release-1.11/release-notes/flink-1.11.html)
    • 1.1. 集群和部署
    • 1.2. 内存管理
    • 1.3. Table API/SQL
    • 1.4. 状态
    • 1.5. Connectors
    • 1.6. Runtime
    • 1.7. 各种接口变更
  • 2. [构建安装部署](https://ci.apache.org/projects/flink/flink-docs-release-1.11/flinkDev/building.html)
    • 2.1. [`参考链接`[Flink编译及其相关软件的安装部署]](https://blog.csdn.net/fanjianhai/article/details/104855082)
    • 2.2. [编译好的链接,百度网盘提取码;aium](https://pan.baidu.com/s/12AWfF5z--t5-ixEv61GKqQ)
  • 3. [导入Flink源码到idea当中](https://ci.apache.org/projects/flink/flink-docs-release-1.11/flinkDev/ide_setup.html)
  • 4. 寄语:及时当勉励,岁月不待人。

1. Flink 1.11 Release 文档解读

1.1. 集群和部署

  • 支持 Hadoop 3.0 及更高的版本:Flink 不再提供任何flink-shaded-hadoop-依赖。用户可以通过配置 HADOOP_CLASSPATH 环境变量(推荐)或在 lib 文件夹下放入 Hadoop 依赖项。另外include-hadoopMaven profile 也已经被移除了。
  • 移除了 LegacyScheduler:Flink 不再支持 legacy scheduler,如果你设置了 jobmanager.scheduler: legacy将不再起作用并且会抛出 IllegalArgumentException 异常,该参数的默认值并且是唯一选项为 ng。
  • 将用户代码的类加载器和 slot 的生命周期进行绑定:只要为单个作业分配了至少一个 slot,TaskManager 就会重新使用用户代码的类加载器。这会稍微改变 Flink 的恢复行为,从而不会重新加载静态字段。这样做的好处是,可以大大减轻对 JVM metaspace 的压力。
  • slave 文件重命名为 workers:对于 Standalone 模式安装,worker 节点文件不再是 slaves 而是 workers,以前使用 start-cluster.shstop-cluster.sh 脚本的设置需要重命名该文件
  • 完善 Flink 和 Docker 的集成: Dockerfiles 文件样例和 build.sh Docker 镜像文件都从 Flink GitHub 仓库中移除了,这些示例社区不再提供,因此 flink-contrib/docker-flinkflink-container/dockerflink-container/kubernetes 模块都已删除了。目前你可以通过查看 Flink Docker integration 官方文档学会如何使用和自定义 Flink Docker 镜像,文档中包含了 docker run、docker compose、docker swarm 和 standalone Kubernetes。

1.2. 内存管理

  • JobManager 使用新的内存模型:可以参考 FLIP-116,介绍了 JobManager 新的内存模型,提供了新的配置选项来控制 JobManager 的进程内存消耗,这种改变会影响 Standalone、YARN、Mesos 和 Active Kubernetes。如果你尝试在不做任何调整的情况下重用以前的Flink 配置,则新的内存模型可能会导致 JVM 的计算内存参数不同,从而导致性能发生变化甚至失败,可以参考 Migrate Job Manager Memory Configuration 文档进行迁移变更。 jobmanager.heap.sizejobmanager.heap.mb 配置参数已经过期了,如果这些过期的选项还继续使用的话,为了维持向后兼容性,它们将被解释为以下新选项之一:

    • jobmanager.memory.heap.size:JVM Heap,为了 Standalone 和 Mesos 部署
    • jobmanager.memory.process.size:进程总内存,为了容器部署(Kubernetes 和 YARN)
  • 下面两个选项已经删除了并且不再起作用了:
    • containerized.heap-cutoff-ratio
    • containerized.heap-cutoff-min
  • JVM 参数,JobManager JVM 进程的 direct 和 metaspace 内存现在通过下面两个参数进行配置:
    • jobmanager.memory.off-heap.size
    • jobmanager.memory.jvm-metaspace.size
  • 如果没有正确配置或存在相应的内存泄漏,这些新的限制可能会产生相应的 OutOfMemoryError 异常
  • 移除过期的mesos.resourcemanager.tasks.mem参数

1.3. Table API/SQL

  • Blink planner 成为默认的 planner

  • 改变了 Table API 的包结构:由于包 org.apache.flink.table.api.scala/java 中的各种问题,这些包下的所有类都已迁移。 此外,如 Flink 1.9 中所述,scala 表达式已移至 org.apache.flink.table.api

  • 如果你之前使用了下面的类

    • org.apache.flink.table.api.java.StreamTableEnvironment
    • org.apache.flink.table.api.scala.StreamTableEnvironment
    • org.apache.flink.table.api.java.BatchTableEnvironment
    • org.apache.flink.table.api.scala.BatchTableEnvironment
  • 如果你不需要转换成 DataStream 或者从 DataStream 转换,那么你可以使用:

    • org.apache.flink.table.api.TableEnvironment
  • 如果你需要转换成 DataStream/DataSet,或者从 DataStream/DataSet 转换,那么你需要将依赖 imports 改成:

    • org.apache.flink.table.api.bridge.java.StreamTableEnvironment
    • org.apache.flink.table.api.bridge.scala.StreamTableEnvironment
    • org.apache.flink.table.api.bridge.java.BatchTableEnvironment
    • org.apache.flink.table.api.bridge.scala.BatchTableEnvironment
  • 对于 Scala 表达式,使用下面的 import:

    • org.apache.flink.table.api._ instead of org.apache.flink.table.api.bridge.scala._
  • 如果你使用 Scala 隐式转换成 DataStream/DataSet,或者从 DataStream/DataSet 转换,那么该导入

    • org.apache.flink.table.api.bridge.scala._
  • 移除 StreamTableSink 接口中的 emitDataStream 方法:该接口的 emitDataStream 方法将移除

  • 移除 BatchTableSink 中的 emitDataSet 方法:将该接口的 emitDataSet 方法重命名为 consumeDataSet 并且返回 DataSink

  • 纠正 TableEnvironment.execute()StreamTableEnvironment.execute() 的执行行为:在早期的版本, TableEnvironment.execute()StreamExecutionEnvironment.execute() 都可以触发 Table 程序和 DataStream 程序。从 Flink 1.11.0 开始,Table 程序只能由 TableEnvironment.execute()触发。将 Table 程序转换为 DataStream 程序(通过 toAppendStream() 或 toRetractStream() 方法)后,只能由 StreamExecutionEnvironment.execute()触发它。

  • 纠正 ExecutionEnvironment.execute()BatchTableEnvironment.execute() 的执行行为:在早期的版本中, BatchTableEnvironment.execute()ExecutionEnvironment.execute() 都可以触发 Table 和 DataSet 应用程序(针对老的 planner)。 从 Flink 1.11.0 开始,批处理 Table 程序只能由 BatchEnvironment.execute() 触发。将 Table 程序转换为DataSet 程序(通过 toDataSet() 方法)后,只能由 ExecutionEnvironment.execute() 触发它。

  • 在 Row 类型中添加了更改标志:在 Row 类型中添加了一个更改标志 RowKind

1.4. 状态

  • 删除已弃用的后台清理开关: StateTtlConfig#cleanupInBackground 已经被删除,因为在 1.10 中该方法已被弃用,并且默认启用了后台 TTL。
  • 改变 StateBackendFactory#createFromConfig 的参数类型:从 Flink 1.11 开始, StateBackendFactory 接口中的 createFromConfig方法中的参数变为 ReadableConfig 而不是 Configuration。Configuration 类是 ReadableConfig 接口的实现类,因为它实现了 ReadableConfig 接口,所以自定义 StateBackend 也应该做相应的调整。
  • 删除过期的 OptionsFactory 和 ConfigurableOptionsFactory 类:过期的 OptionsFactory 和 ConfigurableOptionsFactory 类已被删除。请改用 RocksDBOptionsFactory 和 ConfigurableRocksDBOptionsFactory。如果任何类扩展了DefaultConfigurableOptionsFactory,也请重新编译你的应用程序代码。
  • 默认情况下启用 setTotalOrderSeek:从 Flink 1.11 开始,默认情况下,RocksDB 的 ReadOptions 将启用 setTotalOrderSeek 选项。这是为了防止用户忘记使用 optimizeForPointLookup。为了向后兼容,我们支持通过 RocksDBOptionsFactory 自定义 ReadOptions。如果观察到性能下降,请将 setTotalOrderSeek 设置为 false(根据我们的测试,这种情况不应该发生)。
  • 增加 state.backend.fs.memory-threshold 的默认值: state.backend.fs.memory-threshold 的默认值已从 1K 增加到20K,以防止在远程 FS 上为小状态创建太多小文件。对于那些 source 处配置很多并行度或者有状态的算子的作业可能会因此变更而出现 JM OOM 或 RPC message exceeding maximum frame size 的问题。如果遇到此类问题,请手动将配置设置回 1K。

1.5. Connectors

  • 移除 Kafka 0.8/0.9 Connector
  • 移除 ElasticSearch 2.x Connector
  • 移除 KafkaPartitioner
  • 改进的 fallback 文件系统,以只处理特定的文件系统
  • 将 FileSystem#getKind 方法设置过期的

1.6. Runtime

  • 流作业在 Checkpoint 同步部分失败时会立即失败:无论配置什么参数,Checkpoint 同步部分中的失败(如算子抛出异常)都将立即使其任务(和作业)失败,从 Flink 1.5 版本开始,可以通过设置 setTolerableCheckpointFailureNumber(…) 或 setFailTaskOnCheckpointError(…) 参数来忽略此类的失败,现在这两个参数只影响异步的失败。
  • Checkpoint 超时不再被 CheckpointConfig#setTolerableCheckpointFailureNumber 忽略:现在将 Checkpoint 超时视为正常的 Checkpoint 故障,并根据 CheckpointConfig#setTolerableCheckpointFailureNumber 配置的值进行检查。

1.7. 各种接口变更

  • 移除过期的 StreamTask#getCheckpointLock() :在方法在 Flink 1.10 中已经设置过期了,目前不再提供该方法。用户可以使用 MailboxExecutor 来执行需要与任务线程安全的操作。
  • 从 Flink 1.11.0 开始,flink-streaming-java 模块不再依赖 flink-client 模块,如果你项目依赖于 flink-client 模块,需要显示的添加其为依赖项。
  • AsyncWaitOperator 是可链接的:默认情况下,将允许 AsyncWaitOperator 与所有算子链接在一起,但带有 SourceFunction 的任务除外。
  • 更改了 ShuffleEnvironment 接口的 createInputGates 和 createResultPartitionWriters 方法的参数类型。
  • CompositeTypeSerializerSnapshot#isOuterSnapshotCompatible 方法标示过期了。
  • 移除了过期的 TimestampExtractor:可以使用 TimestampAssigner 和 WatermarkStrategies。
  • 将 ListCheckpointed 标示为过期的:可以使用 CheckpointedFunction 作为代替
  • 移除了过期的 state 连接方法:移除了 RuntimeContext#getFoldingState() 、 OperatorStateStore#getSerializableListState() 和 OperatorStateStore#getOperatorState() 连接状态的方法,这意味着在 1.10 运行成功的代码在 1.11 上是运行不了的。

2. 构建安装部署

2.1. 参考链接[Flink编译及其相关软件的安装部署]

2.2. 编译好的链接,百度网盘提取码;aium

3. 导入Flink源码到idea当中

4. 寄语:及时当勉励,岁月不待人。

14.Flink1.11 安装部署及Release 文档解读相关推荐

  1. 系统部署文档_详解window系统下安装部署SWFTools(文档转换)工具教程

    概述 SWFTools是包括pdf2swf, jpeg2swf, png2swf, avi2swf, font2swf, and wav2swf等在内的Adobe Flash工具集合,我们可以用它非常 ...

  2. oracle11gr2 active data guard,Oracle11gR2 Aactive DataGuard(手动)装配部署及维护文档(三)之升级及rman...

    Oracle11gR2 Aactive DataGuard(手动)安装部署及维护文档(三)之升级及rman l          第六部分: dataguard其它管理问题 一.滚动升级DG 升级概要 ...

  3. oracle adg维护,Oracle11gR2 Aactive DataGuard(手动)装配部署及维护文档(三)之升级及rman...

    Oracle11gR2 Aactive DataGuard(手动)安装部署及维护文档(三)之升级及rman l          第六部分: dataguard其它管理问题 一.滚动升级DG 升级概要 ...

  4. 云服务器CentOS8.2安装部署Docker一文详解

    目录 前言 一.Docker简介 二.安装部署以及测试Docker 1.安装Docker 1.1查看系统版本 1.2移除旧依赖 1.3安装方法 1.4设置存储库 ​编辑 1.5安装Docker引擎 1 ...

  5. 14天学会安卓开发(附PDF文档和全部示例代码)

    前言: 本人也是菜鸟,老鸟看了此文有哪里不好之处敬请指点,本书是根据<<Android应用开发揭秘>>攒写的,如何把一本书读薄,是一件值得思考的问题.相信看过那本书的都知道有5 ...

  6. ContextCapture User Guide V4.4.11 ContextCapture(Smart3D 帮助文档 第三章 认识软件)

    一.准则 ContextCapture使用一组取自不同视点的静态数码照片作为输入数据. 可以提供各种不同的额外数据:相机属性(焦距.传感器尺寸.主点.镜头失真),照片位置(GPS).照片旋转(INS) ...

  7. ContextCapture User Guide V4.4.11 Welcome(Smart3D 帮助文档 第一章 欢迎)

    一.导言 欢迎阅读ContextCapture用户指南.ContextCapture是一种根据简单照片或者点云来生成高分辨率的3d模型的软件解决方案,且不需要任何人工干预.ContextCapture ...

  8. 使用轻量应用服务器部署Docsify在线文档平台

    编者按:本文来自轻量应用服务器征文活动用户投稿,已获得作者(昵称CS社)授权发布.文章首发于微信公众号"弹性计算百晓生". 无论是出于兴趣爱好需要搭建个人博客,还是工作需要建设信息 ...

  9. 布置到linux的文件,免费的Office套件,如何在Linux中部署OnlyOffice桌面文档编辑器...

    原标题:免费的Office套件,如何在Linux中部署OnlyOffice桌面文档编辑器 如果您是Ubuntu用户(或者一般的Linux用户),那么您很可能将LibreOffice作为默认的offic ...

最新文章

  1. SBO-COMMON库中查各个表的大小的SQL语句
  2. 1.65亿人次扫码登记的背后,是TBase的秒级返回
  3. 【深入Java虚拟机】之一:Java内存区域与内存溢出
  4. linux硬盘保护卡,保护卡下安装Linux
  5. ios 不被遮挡 阴影_IOS开发之Bug--iOS7View被导航栏遮挡问题的解决
  6. 工作之余,如何再赚一份收入?
  7. Dubbo与Spring Cloud
  8. TypeScript笔记(1)——环境配置与第一个ts程序
  9. 【luogu P2319 [HNOI2006]超级英雄】 题解
  10. 下载Visual Studio 2008 Beta 2
  11. java 2 实用教程部分课后答案
  12. [Android][Kernel]基于crash工具搭建分析ramdump的平台
  13. coolie PK webpack 之三:模块构建
  14. 徒步穿越的技巧和要领
  15. 使用Go语言开发生成阿里云ECS监控报表,定时自动发送邮件给指定人员
  16. selenium登录163邮箱,得到cookie,requests后续请求
  17. 2022-2027年中国安防智能化行业市场全景评估及发展战略规划报告
  18. 2012-03-01
  19. 2022 CSP-S2 提高组 第2轮 复赛 视频
  20. PXI和PXI Express的比较

热门文章

  1. 个人作业2——APP案例分析
  2. 维吉尼亚密码解密轮子
  3. 微信小程序自定义车牌号输入键盘-附源码
  4. PHP基础知识 - PHP 使用 MySQLI
  5. c语言编程模拟机械钟表行走,C语言课程设计报告-模拟时钟转动程序
  6. linux 两块硬盘做r0,本文是emp3r0r:Linux用户打造的Linux后渗透框架的后续。
  7. 构建自定义的wince系统
  8. A1 为什么要面向服务的架构SOA?什么是SOA?
  9. 应用之星:免费的傻瓜式在线制作电子书平台
  10. 产品范围与项目范围的联系与区别