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即可。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值