Flink状态后端配置(设置State Backend)

Flink状态后端配置(设置State Backend),第1张

Flink状态后端配置(设置State Backend)

Flink提供不同的状态后端(state backends)来区分状态的存储方式和存储位置。flink状态可以存储在java堆内存内或者内存之外。通过状态后端的设置,flink允许应用保持大容量的状态。开发者可以在不改变应用逻辑的情况下设置状态后端。

默认情况下,flink的状态会保存在taskmanager的内存中,而checkpoint会保存在jobManager的内存中。

flink提供三种开箱即用的State Backend:

  • MemoryStateBackend
  • FsStateBackend
  • RocksDBStateBackend

如果没有配置,则默认使用MemoryStateBackend。

   FsStateBackend通过配置文件系统路径(type, address, path)来进行设置,FsStateBackend将动态数据保存在taskmanger的内存中,通过checkpoint机制,将状态快照写入配置好的文件系统或目录中。最小元数据保存jobManager的内存中,另外FsStateBackend通过配置一个fileStateThreshold阈值,小于该值时state存储到metadata中而非文件中。

  FsStateBackend默认通过配置来使用异步快照(asynchronous snapshots)避免阻塞管道(blocking pipelines),当然也可以通过FsStateBackend的构造函数配置进行关闭。

但是当作业任务比较大的时候,默认使用JobManager保存会使任务失败,报错:state.backend.size is larger that......

意思就是状态后端的大小太大了,无法保存在JobManger中,这时我们可以更换为hdfs.

步骤如下:将flink-conf.yaml文件中加入以下两行:

state.backend: filesystem
state.backend.fs.checkpointdir: hdfs://master:9000/flink-checkpoints

其中master为你hadoop namenode的ip地址或者主机名。之后在所有节点同步flink-conf.yaml,并且启动Flink即可。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5654579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存