我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS

Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS

背景

Flink 版本 1.13.3,使用 native k8s 部署模式,原采用 HDFS 作为状态快照(Checkpoint、Savepoint)的存储地址,但是由于仅使用了其 HDFS 作为状态快照存储地址,且 Hadoop 框架较重,在 k8s 集群中占用大量资源,现考虑将其替换为更轻量级的分布式文件系统——NFS。

状态后端参数设置

从 Flink1.13 开始,状态后端分为两种:HashMapStateBackend、EmbeddedRocksDBStateBackend。如果不显示指定状态后端,则 Flink 会使用 HashMapStateBackend。

| 状态后端 | 状态内存中存储位置 | 是否支持异步快照 |
| --- | --- | --- | --- |
| HashMapStateBackend | JVM 堆内存 |否|
| EmbeddedRocksDBStateBackend | RocksDB(堆外托管内存) |是|

两者的适用场景及优缺点详见 官网。

本文使用EmbeddedRocksDBStateBackend + FileSystemCheckpointStorage 的方式存储。算子状态存储在 RocksDB 数据库中,Checkpoint 和 Savepoint 存储在挂载到 jobmanager 的文件中。参数设置如下:

state.backend: rocksdb
state.checkpoint-storage: filesystem
state.checkpoints.dir: /opt/flink/checkpoint
state.savepoints.dir: /opt/flink/Savepoint
kubernetes.pod-template-file: /opt/flink/conf/pod-template.yaml

pod-template

由于存储 Checkpoint 和 Savepoint 的文件需要被所有的 taskmanager 和 jobmanager 访问到,本文使用 PV、 PVC 挂载NFS(NFS的安装与使用请自行百度)文件。可以使用 kubernetes.pod-template-file 参数指定pod-template.yaml存放在本地的文件位置,通过该 yaml 文件指定Checkpoint、Savepoint的存储位置。
pod-template.yaml 如下:

apiVersion: v1
kind: Pod
spec:
  containers:
   # Do not change the main container name
    - name: flink-main-container
      volumeMounts:
        - mountPath: /opt/flink/Checkpoint
          name: Checkpoint
        - mountPath: /opt/flink/Savepoint
          name: Savepoint
  volumes:
    - name: Checkpoint
      persistentVolumeClaim:
        claimName: flink-checkpoint-pvc
    - name: Savepoint
      persistentVolumeClaim:
        claimName: flink-savepoint-pvc

另外该 yaml 文件还可以根据优先级设置 JobManager 和 TaskManager 的其他参数:

  • Defined by Flink:用户无法配置。
  • Defined by the user:用户可以自由指定,Flink框架不会设置。该值会首先使用显式配置,然后是pod-template.yaml里的值,如果没有指定,使用默认值。
  • Merged with Flink:Flink值与用户定义值合并,若名称相同,使用Flink值。

PV中所使用到的PVC、StorageClass等部署文件,可在gzh "HEY DATA"后台回复"pod-template"后获得。

本文由博客一文多发平台 OpenWrite 发布!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS

背景Flink 版本 1.13.3,使用 native k8s 部署模式,原采用 HDFS 作为状态快照(Checkpoint、Savepoint)的存储地址,但是由于仅使用了其 HDFS 作为状态快照存储地址,且 Hadoop 框架较重,在 k8s 集群中占
Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS
2017-09-14

编程热搜

目录