Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS[通俗易懂]

Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS[通俗易懂]背景 Flink 版本 1.13.3,使用 native k8s 部署模式,原采用 HDFS 作为状态快照(Checkpoint、Savepoint)的存储地址,但是由于仅使用了其 HDFS 作为状态

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 发布!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5547.html

(0)
上一篇 2023-05-04
下一篇 2023-05-05

相关推荐

  • python爬虫学习之旅(爬虫python教程)

    python爬虫学习之旅(爬虫python教程)以下是python全栈开发课程学习路线,可以按照这个课程大纲有规划的进行学习:

    2023-10-29
    134
  • 巨杉Tech | SequoiaDB的同城双中心容灾实践「建议收藏」

    巨杉Tech | SequoiaDB的同城双中心容灾实践「建议收藏」1 需求背景 随着数据的大集中,银行纷纷建设了负责本行各个业务处理的生产数据中心,数据中心因其负责了全行的各个业务系统,所以其并发业务负荷能力和不间断运行是评价一个数据中心成熟与否的关键性指标。 近…

    2023-02-22
    134
  • 使用Python进行MongoDB数据查找

    使用Python进行MongoDB数据查找在使用Python对MongoDB进行数据查找前,首先需要连接MongoDB数据库,这可以通过pymongo库的MongoClient实现。如下面的代码:

    2024-01-26
    96
  • Python字典元素计数技巧

    Python字典元素计数技巧在Python编程过程中,我们常常需要对容器类型的元素进行计数,以便分析数据的特征和规律,从而制定相应的处理策略。而在Python中,字典是一种非常便捷的容器类型,它可以用来存储键值对,其中键可以是任何不可变的数据类型,并且具有唯一性。因此,利用字典元素计数技巧可以高效地统计某些数据元素出现的次数,从而更好地处理数据。

    2024-01-02
    106
  • SQL 语句-partition by「建议收藏」

    SQL 语句-partition by「建议收藏」/****** ******/ 初始化数据 create table employee (empid int, deptid int, salary decimal(10, 2)) insert i…

    2023-01-25
    181
  • Linux环境下mysql的安装

    Linux环境下mysql的安装1、环境准备 (1)卸载自带的Mariadb 命令:rpm –qa|grep mariadb 查询已经安装的mariadb rpm –e –nodeps 文件名 卸载mariadb (2)创建配置文…

    2023-03-24
    124
  • 以Python编写1的方法

    以Python编写1的方法Python作为一门强大的编程语言,不仅在科学计算、数据分析、web开发等领域具有广泛的应用,也可以用来实现我们日常生活中的一些小工具。在本文中,我们将探讨如何使用Python来编写一个1的程序。

    2024-06-28
    43
  • 爬虫使用代理的不同方式

    爬虫使用代理的不同方式爬虫代理动态转发与传统api提取的区别: 作为爬虫工作者我们最先接触到的代理的使用方式是通过传统API提取代理,程序通过URL定时获取代理IP信息,需验证IP的可用性、更换代理设置,同时需要设计多线…

    2023-04-13
    150

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注