[case49]聊聊flink的checkpoint配置

news/2024/7/1 18:12:37 标签: 大数据

本文主要研究下flink的checkpoint配置

实例

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

// start a checkpoint every 1000 ms
env.enableCheckpointing(1000);

// advanced options:

// set mode to exactly-once (this is the default)
env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);

// checkpoints have to complete within one minute, or are discarded
env.getCheckpointConfig().setCheckpointTimeout(60000);

// make sure 500 ms of progress happen between checkpoints
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(500);

// allow only one checkpoint to be in progress at the same time
env.getCheckpointConfig().setMaxConcurrentCheckpoints(1);

// enable externalized checkpoints which are retained after job cancellation
env.getCheckpointConfig().enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

// This determines if a task will be failed if an error occurs in the execution of the task’s checkpoint procedure.
env.getCheckpointConfig().setFailOnCheckpointingErrors(true);
  • 使用StreamExecutionEnvironment.enableCheckpointing方法来设置开启checkpoint;具体可以使用enableCheckpointing(long interval),或者enableCheckpointing(long interval, CheckpointingMode mode);interval用于指定checkpoint的触发间隔(单位milliseconds),而CheckpointingMode默认是CheckpointingMode.EXACTLY_ONCE,也可以指定为CheckpointingMode.AT_LEAST_ONCE
  • 也可以通过StreamExecutionEnvironment.getCheckpointConfig().setCheckpointingMode来设置CheckpointingMode,一般对于超低延迟的应用(大概几毫秒)可以使用CheckpointingMode.AT_LEAST_ONCE,其他大部分应用使用CheckpointingMode.EXACTLY_ONCE就可以
  • checkpointTimeout用于指定checkpoint执行的超时时间(单位milliseconds),超时没完成就会被abort掉
  • minPauseBetweenCheckpoints用于指定checkpoint coordinator上一个checkpoint完成之后最小等多久可以出发另一个checkpoint,当指定这个参数时,maxConcurrentCheckpoints的值为1
  • maxConcurrentCheckpoints用于指定运行中的checkpoint最多可以有多少个,用于包装topology不会花太多的时间在checkpoints上面;如果有设置了minPauseBetweenCheckpoints,则maxConcurrentCheckpoints这个参数就不起作用了(大于1的值不起作用)
  • enableExternalizedCheckpoints用于开启checkpoints的外部持久化,但是在job失败的时候不会自动清理,需要自己手工清理state;ExternalizedCheckpointCleanup用于指定当job canceled的时候externalized checkpoint该如何清理,DELETE_ON_CANCELLATION的话,在job canceled的时候会自动删除externalized state,但是如果是FAILED的状态则会保留;RETAIN_ON_CANCELLATION则在job canceled的时候会保留externalized checkpoint state
  • failOnCheckpointingErrors用于指定在checkpoint发生异常的时候,是否应该fail该task,默认为true,如果设置为false,则task会拒绝checkpoint然后继续运行

flink-conf.yaml相关配置

#==============================================================================
# Fault tolerance and checkpointing
#==============================================================================

# The backend that will be used to store operator state checkpoints if
# checkpointing is enabled.
#
# Supported backends are 'jobmanager', 'filesystem', 'rocksdb', or the
# <class-name-of-factory>.
#
# state.backend: filesystem

# Directory for checkpoints filesystem, when using any of the default bundled
# state backends.
#
# state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints

# Default target directory for savepoints, optional.
#
# state.savepoints.dir: hdfs://namenode-host:port/flink-checkpoints

# Flag to enable/disable incremental checkpoints for backends that
# support incremental checkpoints (like the RocksDB state backend). 
#
# state.backend.incremental: false
  • state.backend用于指定checkpoint state存储的backend,默认为none
  • state.backend.async用于指定backend是否使用异步snapshot(默认为true),有些不支持async或者只支持async的state backend可能会忽略这个参数
  • state.backend.fs.memory-threshold,默认为1024,用于指定存储于files的state大小阈值,如果小于该值则会存储在root checkpoint metadata file
  • state.backend.incremental,默认为false,用于指定是否采用增量checkpoint,有些不支持增量checkpoint的backend会忽略该配置
  • state.backend.local-recovery,默认为false
  • state.checkpoints.dir,默认为none,用于指定checkpoint的data files和meta data存储的目录,该目录必须对所有参与的TaskManagers及JobManagers可见
  • state.checkpoints.num-retained,默认为1,用于指定保留的已完成的checkpoints个数
  • state.savepoints.dir,默认为none,用于指定savepoints的默认目录
  • taskmanager.state.local.root-dirs,默认为none

小结

  • 可以通过使用StreamExecutionEnvironment.enableCheckpointing方法来设置开启checkpoint;具体可以使用enableCheckpointing(long interval),或者enableCheckpointing(long interval, CheckpointingMode mode)
  • checkpoint的高级配置可以配置checkpointTimeout(用于指定checkpoint执行的超时时间,单位milliseconds),minPauseBetweenCheckpoints(用于指定checkpoint coordinator上一个checkpoint完成之后最小等多久可以出发另一个checkpoint),maxConcurrentCheckpoints(用于指定运行中的checkpoint最多可以有多少个,如果有设置了minPauseBetweenCheckpoints,则maxConcurrentCheckpoints这个参数大于1的值不起作用),enableExternalizedCheckpoints(用于开启checkpoints的外部持久化,在job failed的时候externalized checkpoint state无法自动清理,但是在job canceled的时候可以配置是删除还是保留state)
  • 在flink-conf.yaml里头也有checkpoint的相关配置,主要是state backend的配置,比如state.backend.async、state.backend.incremental、state.checkpoints.dir、state.savepoints.dir等

doc

  • Checkpointing

http://www.niftyadmin.cn/n/1408236.html

相关文章

张爱玲经典爱情语录大全

张爱玲&#xff0c;中国现代作家&#xff0c;本名张煐。1920年09月30日出生在上海公共租界西区。张爱玲的祖父张佩纶是清末名臣&#xff0c;祖母李菊耦是朝廷重臣李鸿章的长女。张爱玲一生创作大量文学作品&#xff0c;类型包括小说、散文、电影剧本以及文学论著&#xff0c;她…

FortiGate安全策略说明

1.安全策略原理 1&#xff09;为了对数据流进行统一控制&#xff0c;方便用户配置和管理&#xff0c;FGT设备引入了安全策略的概念。通过配置安全策略&#xff0c;防火墙能够对经过设备的数据流进行有效的控制和管理。 2&#xff09;当防火墙收到数据报文时&#xff0c;把该报文…

第十次作业 - 项目测评(团队)

目录 第一部分 调研&#xff0c;评测福大助手的bugIOS端Android端福大助手结构体系的思维导图为什么开发人员没有发现这个bug假设团队开发这款app,应注意哪些方面&#xff08;架构、部署运维、微服务等&#xff09;&#xff1f;采访福大助手采访&#xff1a;第二部分 分析估计这…

为什么说Kafka使用磁盘比内存快

为什么说Kafka使用磁盘比内存快 学习过[跟我学Kafka源码之LogManager分析]的同学一定会问为什么Kafka大量使用了磁盘作为传统意义的缓存。其实Kafka最核心的思想是使用磁盘&#xff0c;而不是使用内存&#xff0c;可能所有人都会认为&#xff0c;内存的速度一定比磁盘快&#x…

C# public、protected、private

每个类都创造了有自己的名字空间&#xff0c;指方法和变量可以知道彼此的存在&#xff0c;可以使用。 public类不但可以被同一程序包中的其它类使用&#xff0c;别的程序包中的类也可以使用&#xff1b; 变量和方法的修饰字public、protected、private&#xff1a; public&a…

聊一聊 Spring 中的线程安全性

http://www.importnew.com/27440.html

MyBaties分页插件PageHelper的简单使用

2019独角兽企业重金招聘Python工程师标准>>> 抛出问题&#xff1a; 如果想要将现有的select语句改为支持分页功能的查询语句该怎么做呢&#xff1f; 最简单的一种做法就是将所有的select语句都加上limit来实现分页&#xff0c;这种做法有什么问题呢&#xff1f; 有没…

ArcGIS API for Silverlight部署本地地图服务

ArcGIS API for Silverlight部署本地地图服务 首先介绍下我们的开发和部署环境&#xff1a; 部署环境&#xff1a; Windows 7 旗舰版32位操作系统 IIS 6.0 开发环境&#xff1a; Visual Studio 2010 Visual Studio 2010 SP1 Siverlight 4 Net Framework 4 第一步&…