关于flink CheckPoint 状态数据保存的问题

classic Classic list List threaded Threaded
6 messages Options
lp
Reply | Threaded
Open this post in threaded view
|

关于flink CheckPoint 状态数据保存的问题

lp
我写了一个带状态的function
采用了如下cp配置:
env.enableCheckpointing(5000L, CheckpointingMode.EXACTLY_ONCE);
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(100L);
env.getCheckpointConfig().setCheckpointTimeout(60000L);
env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
env.setStateBackend(new FsStateBackend("file:///cp/eventCounter"));

请教几个问题:
①按照官网的介绍,目录数据应该是这样的
/user-defined-checkpoint-dir
    /{job-id}
        |
        + --shared/
        + --taskowned/
        + --chk-1/
        + --chk-2/
        + --chk-3/
        ...

但是我的测试是job正常running时,chk-*永远只有一个,每次做chk,递增 +1 一次


②状态数据按照理解是保存在chk-*下面的,但是我的测试下面只有一个_metadata,并没有每次chk的数据,使用的flink1.12
当我改成使用flink1.8时,是可以看到如下chk-*目录下除了_metadata,还有每次的chk数据.
所以flink1.12高版本的情况每次chk的数据在哪里


③按照官网介绍,默认只保留最新的一份chk数据,如果想保留最近的多份,除了全局flink-conf.yaml中配置state.checkpoints.num-retained:
5, 有程序中使用env 针对每job的配置方式吗





--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink CheckPoint 状态数据保存的问题

tison
只有一个的问题是因为默认保留的 chk 数量是一个,可以修改这个配置[1]来改变。

Best,
tison.

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/config.html#state-checkpoints-num-retained


lp <[hidden email]> 于2021年4月1日周四 下午3:48写道:

> 我写了一个带状态的function
> 采用了如下cp配置:
> env.enableCheckpointing(5000L, CheckpointingMode.EXACTLY_ONCE);
> env.getCheckpointConfig().setMinPauseBetweenCheckpoints(100L);
> env.getCheckpointConfig().setCheckpointTimeout(60000L);
>
> env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
> env.setStateBackend(new FsStateBackend("file:///cp/eventCounter"));
>
> 请教几个问题:
> ①按照官网的介绍,目录数据应该是这样的
> /user-defined-checkpoint-dir
>     /{job-id}
>         |
>         + --shared/
>         + --taskowned/
>         + --chk-1/
>         + --chk-2/
>         + --chk-3/
>         ...
>
> 但是我的测试是job正常running时,chk-*永远只有一个,每次做chk,递增 +1 一次
>
>
> ②状态数据按照理解是保存在chk-*下面的,但是我的测试下面只有一个_metadata,并没有每次chk的数据,使用的flink1.12
> 当我改成使用flink1.8时,是可以看到如下chk-*目录下除了_metadata,还有每次的chk数据.
> 所以flink1.12高版本的情况每次chk的数据在哪里
>
>
>
> ③按照官网介绍,默认只保留最新的一份chk数据,如果想保留最近的多份,除了全局flink-conf.yaml中配置state.checkpoints.num-retained:
> 5, 有程序中使用env 针对每job的配置方式吗
>
>
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
>
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink CheckPoint 状态数据保存的问题

tison
这个配置本身我看了一下只能走 flink-conf.yaml,而且似乎是 per cluster 配置的,虽然 perjob /
application 部署的时候没啥问题,但是 session 可能就不行了。配置这块 Flink 是有点全走 flink-conf.yaml +
默认你是用 perjob / application 的意思。

你提的数据看不到的问题,首先确认一下是否 chk 真的有数据。另外我依稀记得 tangyun(in cc) 做过一个改动,可以问下他的看法。

Best,
tison.


tison <[hidden email]> 于2021年4月1日周四 下午3:50写道:

> 只有一个的问题是因为默认保留的 chk 数量是一个,可以修改这个配置[1]来改变。
>
> Best,
> tison.
>
> [1]
> https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/config.html#state-checkpoints-num-retained
>
>
> lp <[hidden email]> 于2021年4月1日周四 下午3:48写道:
>
>> 我写了一个带状态的function
>> 采用了如下cp配置:
>> env.enableCheckpointing(5000L, CheckpointingMode.EXACTLY_ONCE);
>> env.getCheckpointConfig().setMinPauseBetweenCheckpoints(100L);
>> env.getCheckpointConfig().setCheckpointTimeout(60000L);
>>
>> env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
>> env.setStateBackend(new FsStateBackend("file:///cp/eventCounter"));
>>
>> 请教几个问题:
>> ①按照官网的介绍,目录数据应该是这样的
>> /user-defined-checkpoint-dir
>>     /{job-id}
>>         |
>>         + --shared/
>>         + --taskowned/
>>         + --chk-1/
>>         + --chk-2/
>>         + --chk-3/
>>         ...
>>
>> 但是我的测试是job正常running时,chk-*永远只有一个,每次做chk,递增 +1 一次
>>
>>
>> ②状态数据按照理解是保存在chk-*下面的,但是我的测试下面只有一个_metadata,并没有每次chk的数据,使用的flink1.12
>> 当我改成使用flink1.8时,是可以看到如下chk-*目录下除了_metadata,还有每次的chk数据.
>> 所以flink1.12高版本的情况每次chk的数据在哪里
>>
>>
>>
>> ③按照官网介绍,默认只保留最新的一份chk数据,如果想保留最近的多份,除了全局flink-conf.yaml中配置state.checkpoints.num-retained:
>> 5, 有程序中使用env 针对每job的配置方式吗
>>
>>
>>
>>
>>
>> --
>> Sent from: http://apache-flink.147419.n8.nabble.com/
>>
>
lp
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink CheckPoint 状态数据保存的问题

lp
In reply to this post by tison
如题,除了通过这种全局配置文件中的方式修改,能在程序中通过代码的方式修改吗



--
Sent from: http://apache-flink.147419.n8.nabble.com/
lp
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink CheckPoint 状态数据保存的问题

lp
In reply to this post by tison
好的,谢谢



--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink CheckPoint 状态数据保存的问题

Paul Lam
关于 chk 下只有 _metadata 的问题,大概是因为 state 比较小,被嵌入到 _medata 文件里了。可以参考这个配置项 [1]。

[1] https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/config.html#state-backend-fs-memory-threshold

Best,
Paul Lam

> 2021年4月1日 16:25,lp <[hidden email]> 写道:
>
> 好的,谢谢
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/