You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by "yinghua_zh@163.com" <yi...@163.com> on 2021/01/14 09:26:26 UTC

请教个Flink checkpoint的问题

我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?


yinghua_zh@163.com

请教个Flink checkpoint的问题

Posted by gimlee <gi...@163.com>.
设置下state.checkpoints.num-retained这个值,像是数量超了自动删除



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: 回复: 请教个Flink checkpoint的问题

Posted by 赵一旦 <hi...@gmail.com>.
Evan说的这个是一个设置,但也仅影响cancel那个命令,stop还是会删除。这个点其实做的不是很好,不清楚为啥,之前Q过,没人鸟。。。
所以按照我的经验,如果是需要停止并基于保存点重启,那还好。如果计划基于检查点重启,无比提前备份检查点,然后停任务,然后复制备份回去。
在或者,直接cancel,不用stop。

Evan <ch...@foxmail.com> 于2021年1月14日周四 下午6:49写道:

> 是的,应该是机制问题,链接[1]打开有这样一句解释:
>
>  If you choose to retain externalized checkpoints on cancellation you have
> to handle checkpoint clean up manually when you cancel the job as well
> (terminating with job status JobStatus#CANCELED).
>
> [1]
> https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#execution-checkpointing-externalized-checkpoint-retention
>
> 如回答有误,请指正。
>
>
>
>
>
>
> 发件人: yinghua_zh@163.com
> 发送时间: 2021-01-14 18:02
> 收件人: user-zh
> 主题: 回复: 回复: 请教个Flink checkpoint的问题
> 代码如下:
>     streamEnv.enableCheckpointing(5 * 60 * 1000);
>     CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
>     checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
>     checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
>     checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
>     checkPointConfig.setMaxConcurrentCheckpoints(1);
>     checkPointConfig.setTolerableCheckpointFailureNumber(3);
>     checkPointConfig
>
> .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
>
>     String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);
>     try {
>       StateBackend rocksDBStateBackend = new
> RocksDBStateBackend(checkpointPath);
>       streamEnv.setStateBackend(rocksDBStateBackend);
>
>
>
> yinghua_zh@163.com
>
> 发件人: Evan
> 发送时间: 2021-01-14 17:55
> 收件人: user-zh
> 主题: 回复: 请教个Flink checkpoint的问题
> 代码图挂掉了,看不到代码
>
>
>
> 发件人: yinghua_zh@163.com
> 发送时间: 2021-01-14 17:26
> 收件人: user-zh
> 主题: 请教个Flink checkpoint的问题
>
> 我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
>
> 现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
>
>
> yinghua_zh@163.com
>

Re:Re: Re: 请教个Flink checkpoint的问题

Posted by 邮件帮助中心 <yi...@163.com>.
1:先前测试过使用stopWithSavepoint时会将之前成功保存的checkpoint数据给删除掉,后来我们查看了下源码,里面描述如下,就是调用该方法时Flink会将程序设置成Finished态的,可能和实际使用场景有出入。
/**
 * Stops a program on Flink cluster whose job-manager is configured in this client's configuration.
 * Stopping works only for streaming programs. Be aware, that the program might continue to run for
 * a while after sending the stop command, because after sources stopped to emit data all operators
 * need to finish processing.
 *
 * @param jobId the job ID of the streaming program to stop
 * @param advanceToEndOfEventTime flag indicating if the source should inject a {@code MAX_WATERMARK} in the pipeline
 * @param savepointDirectory directory the savepoint should be written to
 * @return a {@link CompletableFuture} containing the path where the savepoint is located
 */

CompletableFuture<String> stopWithSavepoint(final JobID jobId, final boolean advanceToEndOfEventTime, @Nullable final String savepointDirectory);

















在 2021-01-17 16:48:22,"Congxian Qiu" <qc...@gmail.com> 写道:
>Hi
>    你可以看一下是不是 作业的状态变成了 FINISH 了,现在 Flink 在 FINISH 的时候,会删除 checkpoint(就算设置了
>retain on cancel 也会删除)
>    PS :FLINK-18263 正在讨论是否在 Job 变为 FINISH 状态后保留 checkpoint
>[1] https://issues.apache.org/jira/browse/FLINK-18263
>Best,
>Congxian
>
>
>yinghua_zh@163.com <yi...@163.com> 于2021年1月15日周五 上午11:23写道:
>
>> 感谢您的答复,今天我使用cancelWithSavepoint时也还是删除了,通过你的答复知道机制如此,我再使用另外的参数来观察下。
>>
>>
>>
>> yinghua_zh@163.com
>>
>> 发件人: Yun Tang
>> 发送时间: 2021-01-15 11:02
>> 收件人: user-zh
>> 主题: Re: 回复: 请教个Flink checkpoint的问题
>> Hi
>>
>> 这是因为在Flink-1.7.0 之后,savepoint也被当做是retained checkpoint了 [1],当你stop with
>> savepoint 成功时,新的savepoint创建之后,旧的checkpoint因为默认retain
>> checkpoint的数量为1而被subsume掉了,也就是被删掉了。
>>
>> 如果你还想保留之前的一个旧的checkpoint,可以将默认retain的checkpoint数目设置为2 [2]。
>>
>> 另外说一句,即使是已经deprecated的cancel with
>> savepoint的用法,当新的savepoint创建成功后,旧的checkpoint在默认情况下也应该会被删除,除非增大retain的checkpoint数量。
>>
>>
>> [1] https://issues.apache.org/jira/browse/FLINK-10354
>> [2]
>> https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/checkpointing.html#state-checkpoints-num-retained
>>
>> 祝好
>> 唐云
>> ________________________________
>> From: yinghua_zh@163.com <yi...@163.com>
>> Sent: Thursday, January 14, 2021 19:00
>> To: user-zh <us...@flink.apache.org>
>> Subject: 回复: 回复: 请教个Flink checkpoint的问题
>>
>> 好的,感谢您的回复!
>>
>>
>>
>> yinghua_zh@163.com
>>
>> 发件人: Evan
>> 发送时间: 2021-01-14 18:48
>> 收件人: user-zh
>> 主题: 回复: 回复: 请教个Flink checkpoint的问题
>> 是的,应该是机制问题,链接[1]打开有这样一句解释:
>>
>> If you choose to retain externalized checkpoints on cancellation you have
>> to handle checkpoint clean up manually when you cancel the job as well
>> (terminating with job status JobStatus#CANCELED).
>>
>> [1]
>> https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#execution-checkpointing-externalized-checkpoint-retention
>>
>> 如回答有误,请指正。
>>
>>
>>
>>
>>
>> 发件人: yinghua_zh@163.com
>> 发送时间: 2021-01-14 18:02
>> 收件人: user-zh
>> 主题: 回复: 回复: 请教个Flink checkpoint的问题
>> 代码如下:
>>     streamEnv.enableCheckpointing(5 * 60 * 1000);
>>     CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
>>     checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
>>     checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
>>     checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
>>     checkPointConfig.setMaxConcurrentCheckpoints(1);
>>     checkPointConfig.setTolerableCheckpointFailureNumber(3);
>>     checkPointConfig
>>
>> .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
>>
>>     String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);
>>     try {
>>       StateBackend rocksDBStateBackend = new
>> RocksDBStateBackend(checkpointPath);
>>       streamEnv.setStateBackend(rocksDBStateBackend);
>>
>>
>>
>> yinghua_zh@163.com
>> 发件人: Evan
>> 发送时间: 2021-01-14 17:55
>> 收件人: user-zh
>> 主题: 回复: 请教个Flink checkpoint的问题
>> 代码图挂掉了,看不到代码
>> 发件人: yinghua_zh@163.com
>> 发送时间: 2021-01-14 17:26
>> 收件人: user-zh
>> 主题: 请教个Flink checkpoint的问题
>>
>> 我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
>>
>> 现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
>> yinghua_zh@163.com
>>

Re: Re: 请教个Flink checkpoint的问题

Posted by Congxian Qiu <qc...@gmail.com>.
Hi
    你可以看一下是不是 作业的状态变成了 FINISH 了,现在 Flink 在 FINISH 的时候,会删除 checkpoint(就算设置了
retain on cancel 也会删除)
    PS :FLINK-18263 正在讨论是否在 Job 变为 FINISH 状态后保留 checkpoint
[1] https://issues.apache.org/jira/browse/FLINK-18263
Best,
Congxian


yinghua_zh@163.com <yi...@163.com> 于2021年1月15日周五 上午11:23写道:

> 感谢您的答复,今天我使用cancelWithSavepoint时也还是删除了,通过你的答复知道机制如此,我再使用另外的参数来观察下。
>
>
>
> yinghua_zh@163.com
>
> 发件人: Yun Tang
> 发送时间: 2021-01-15 11:02
> 收件人: user-zh
> 主题: Re: 回复: 请教个Flink checkpoint的问题
> Hi
>
> 这是因为在Flink-1.7.0 之后,savepoint也被当做是retained checkpoint了 [1],当你stop with
> savepoint 成功时,新的savepoint创建之后,旧的checkpoint因为默认retain
> checkpoint的数量为1而被subsume掉了,也就是被删掉了。
>
> 如果你还想保留之前的一个旧的checkpoint,可以将默认retain的checkpoint数目设置为2 [2]。
>
> 另外说一句,即使是已经deprecated的cancel with
> savepoint的用法,当新的savepoint创建成功后,旧的checkpoint在默认情况下也应该会被删除,除非增大retain的checkpoint数量。
>
>
> [1] https://issues.apache.org/jira/browse/FLINK-10354
> [2]
> https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/checkpointing.html#state-checkpoints-num-retained
>
> 祝好
> 唐云
> ________________________________
> From: yinghua_zh@163.com <yi...@163.com>
> Sent: Thursday, January 14, 2021 19:00
> To: user-zh <us...@flink.apache.org>
> Subject: 回复: 回复: 请教个Flink checkpoint的问题
>
> 好的,感谢您的回复!
>
>
>
> yinghua_zh@163.com
>
> 发件人: Evan
> 发送时间: 2021-01-14 18:48
> 收件人: user-zh
> 主题: 回复: 回复: 请教个Flink checkpoint的问题
> 是的,应该是机制问题,链接[1]打开有这样一句解释:
>
> If you choose to retain externalized checkpoints on cancellation you have
> to handle checkpoint clean up manually when you cancel the job as well
> (terminating with job status JobStatus#CANCELED).
>
> [1]
> https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#execution-checkpointing-externalized-checkpoint-retention
>
> 如回答有误,请指正。
>
>
>
>
>
> 发件人: yinghua_zh@163.com
> 发送时间: 2021-01-14 18:02
> 收件人: user-zh
> 主题: 回复: 回复: 请教个Flink checkpoint的问题
> 代码如下:
>     streamEnv.enableCheckpointing(5 * 60 * 1000);
>     CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
>     checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
>     checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
>     checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
>     checkPointConfig.setMaxConcurrentCheckpoints(1);
>     checkPointConfig.setTolerableCheckpointFailureNumber(3);
>     checkPointConfig
>
> .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
>
>     String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);
>     try {
>       StateBackend rocksDBStateBackend = new
> RocksDBStateBackend(checkpointPath);
>       streamEnv.setStateBackend(rocksDBStateBackend);
>
>
>
> yinghua_zh@163.com
> 发件人: Evan
> 发送时间: 2021-01-14 17:55
> 收件人: user-zh
> 主题: 回复: 请教个Flink checkpoint的问题
> 代码图挂掉了,看不到代码
> 发件人: yinghua_zh@163.com
> 发送时间: 2021-01-14 17:26
> 收件人: user-zh
> 主题: 请教个Flink checkpoint的问题
>
> 我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
>
> 现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
> yinghua_zh@163.com
>

回复: Re: 请教个Flink checkpoint的问题

Posted by "yinghua_zh@163.com" <yi...@163.com>.
感谢您的答复,今天我使用cancelWithSavepoint时也还是删除了,通过你的答复知道机制如此,我再使用另外的参数来观察下。



yinghua_zh@163.com
 
发件人: Yun Tang
发送时间: 2021-01-15 11:02
收件人: user-zh
主题: Re: 回复: 请教个Flink checkpoint的问题
Hi
 
这是因为在Flink-1.7.0 之后,savepoint也被当做是retained checkpoint了 [1],当你stop with savepoint 成功时,新的savepoint创建之后,旧的checkpoint因为默认retain checkpoint的数量为1而被subsume掉了,也就是被删掉了。
 
如果你还想保留之前的一个旧的checkpoint,可以将默认retain的checkpoint数目设置为2 [2]。
 
另外说一句,即使是已经deprecated的cancel with savepoint的用法,当新的savepoint创建成功后,旧的checkpoint在默认情况下也应该会被删除,除非增大retain的checkpoint数量。
 
 
[1] https://issues.apache.org/jira/browse/FLINK-10354
[2] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/checkpointing.html#state-checkpoints-num-retained
 
祝好
唐云
________________________________
From: yinghua_zh@163.com <yi...@163.com>
Sent: Thursday, January 14, 2021 19:00
To: user-zh <us...@flink.apache.org>
Subject: 回复: 回复: 请教个Flink checkpoint的问题
 
好的,感谢您的回复!
 
 
 
yinghua_zh@163.com
 
发件人: Evan
发送时间: 2021-01-14 18:48
收件人: user-zh
主题: 回复: 回复: 请教个Flink checkpoint的问题
是的,应该是机制问题,链接[1]打开有这样一句解释:
 
If you choose to retain externalized checkpoints on cancellation you have to handle checkpoint clean up manually when you cancel the job as well (terminating with job status JobStatus#CANCELED).
 
[1] https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#execution-checkpointing-externalized-checkpoint-retention
 
如回答有误,请指正。
 
 
 
 
 
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 18:02
收件人: user-zh
主题: 回复: 回复: 请教个Flink checkpoint的问题
代码如下:
    streamEnv.enableCheckpointing(5 * 60 * 1000);
    CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
    checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
    checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
    checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
    checkPointConfig.setMaxConcurrentCheckpoints(1);
    checkPointConfig.setTolerableCheckpointFailureNumber(3);
    checkPointConfig
            .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
 
    String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);
    try {
      StateBackend rocksDBStateBackend = new RocksDBStateBackend(checkpointPath);
      streamEnv.setStateBackend(rocksDBStateBackend);
 
 
 
yinghua_zh@163.com
发件人: Evan
发送时间: 2021-01-14 17:55
收件人: user-zh
主题: 回复: 请教个Flink checkpoint的问题
代码图挂掉了,看不到代码
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 17:26
收件人: user-zh
主题: 请教个Flink checkpoint的问题
我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
yinghua_zh@163.com

Re: 回复: 请教个Flink checkpoint的问题

Posted by Yun Tang <my...@live.com>.
Hi

这是因为在Flink-1.7.0 之后,savepoint也被当做是retained checkpoint了 [1],当你stop with savepoint 成功时,新的savepoint创建之后,旧的checkpoint因为默认retain checkpoint的数量为1而被subsume掉了,也就是被删掉了。

如果你还想保留之前的一个旧的checkpoint,可以将默认retain的checkpoint数目设置为2 [2]。

另外说一句,即使是已经deprecated的cancel with savepoint的用法,当新的savepoint创建成功后,旧的checkpoint在默认情况下也应该会被删除,除非增大retain的checkpoint数量。


[1] https://issues.apache.org/jira/browse/FLINK-10354
[2] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/checkpointing.html#state-checkpoints-num-retained

祝好
唐云
________________________________
From: yinghua_zh@163.com <yi...@163.com>
Sent: Thursday, January 14, 2021 19:00
To: user-zh <us...@flink.apache.org>
Subject: 回复: 回复: 请教个Flink checkpoint的问题

好的,感谢您的回复!



yinghua_zh@163.com

发件人: Evan
发送时间: 2021-01-14 18:48
收件人: user-zh
主题: 回复: 回复: 请教个Flink checkpoint的问题
是的,应该是机制问题,链接[1]打开有这样一句解释:

If you choose to retain externalized checkpoints on cancellation you have to handle checkpoint clean up manually when you cancel the job as well (terminating with job status JobStatus#CANCELED).

[1] https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#execution-checkpointing-externalized-checkpoint-retention

如回答有误,请指正。





发件人: yinghua_zh@163.com
发送时间: 2021-01-14 18:02
收件人: user-zh
主题: 回复: 回复: 请教个Flink checkpoint的问题
代码如下:
    streamEnv.enableCheckpointing(5 * 60 * 1000);
    CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
    checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
    checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
    checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
    checkPointConfig.setMaxConcurrentCheckpoints(1);
    checkPointConfig.setTolerableCheckpointFailureNumber(3);
    checkPointConfig
            .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

    String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);
    try {
      StateBackend rocksDBStateBackend = new RocksDBStateBackend(checkpointPath);
      streamEnv.setStateBackend(rocksDBStateBackend);



yinghua_zh@163.com
发件人: Evan
发送时间: 2021-01-14 17:55
收件人: user-zh
主题: 回复: 请教个Flink checkpoint的问题
代码图挂掉了,看不到代码
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 17:26
收件人: user-zh
主题: 请教个Flink checkpoint的问题
我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
yinghua_zh@163.com

回复: 回复: 请教个Flink checkpoint的问题

Posted by "yinghua_zh@163.com" <yi...@163.com>.
好的,感谢您的回复!



yinghua_zh@163.com
 
发件人: Evan
发送时间: 2021-01-14 18:48
收件人: user-zh
主题: 回复: 回复: 请教个Flink checkpoint的问题
是的,应该是机制问题,链接[1]打开有这样一句解释:
 
If you choose to retain externalized checkpoints on cancellation you have to handle checkpoint clean up manually when you cancel the job as well (terminating with job status JobStatus#CANCELED).
 
[1] https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#execution-checkpointing-externalized-checkpoint-retention 
 
如回答有误,请指正。
 
 
 
 
 
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 18:02
收件人: user-zh
主题: 回复: 回复: 请教个Flink checkpoint的问题
代码如下:
    streamEnv.enableCheckpointing(5 * 60 * 1000);
    CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
    checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
    checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
    checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
    checkPointConfig.setMaxConcurrentCheckpoints(1);
    checkPointConfig.setTolerableCheckpointFailureNumber(3);
    checkPointConfig
            .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
 
    String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);
    try {
      StateBackend rocksDBStateBackend = new RocksDBStateBackend(checkpointPath);
      streamEnv.setStateBackend(rocksDBStateBackend);
 
 
 
yinghua_zh@163.com
发件人: Evan
发送时间: 2021-01-14 17:55
收件人: user-zh
主题: 回复: 请教个Flink checkpoint的问题
代码图挂掉了,看不到代码
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 17:26
收件人: user-zh
主题: 请教个Flink checkpoint的问题
我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
yinghua_zh@163.com

回复: 回复: 请教个Flink checkpoint的问题

Posted by Evan <ch...@foxmail.com>.
是的,应该是机制问题,链接[1]打开有这样一句解释:

 If you choose to retain externalized checkpoints on cancellation you have to handle checkpoint clean up manually when you cancel the job as well (terminating with job status JobStatus#CANCELED).

[1] https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#execution-checkpointing-externalized-checkpoint-retention 

如回答有误,请指正。





 
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 18:02
收件人: user-zh
主题: 回复: 回复: 请教个Flink checkpoint的问题
代码如下:
    streamEnv.enableCheckpointing(5 * 60 * 1000);
    CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
    checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
    checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
    checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
    checkPointConfig.setMaxConcurrentCheckpoints(1);
    checkPointConfig.setTolerableCheckpointFailureNumber(3);
    checkPointConfig
            .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

    String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);
    try {
      StateBackend rocksDBStateBackend = new RocksDBStateBackend(checkpointPath);
      streamEnv.setStateBackend(rocksDBStateBackend);



yinghua_zh@163.com
 
发件人: Evan
发送时间: 2021-01-14 17:55
收件人: user-zh
主题: 回复: 请教个Flink checkpoint的问题
代码图挂掉了,看不到代码
 
 
 
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 17:26
收件人: user-zh
主题: 请教个Flink checkpoint的问题
我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
 
 
yinghua_zh@163.com

回复: 回复: 请教个Flink checkpoint的问题

Posted by "yinghua_zh@163.com" <yi...@163.com>.
代码如下:
    streamEnv.enableCheckpointing(5 * 60 * 1000);
    CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
    checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
    checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
    checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
    checkPointConfig.setMaxConcurrentCheckpoints(1);
    checkPointConfig.setTolerableCheckpointFailureNumber(3);
    checkPointConfig
            .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

    String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);
    try {
      StateBackend rocksDBStateBackend = new RocksDBStateBackend(checkpointPath);
      streamEnv.setStateBackend(rocksDBStateBackend);



yinghua_zh@163.com
 
发件人: Evan
发送时间: 2021-01-14 17:55
收件人: user-zh
主题: 回复: 请教个Flink checkpoint的问题
代码图挂掉了,看不到代码
 
 
 
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 17:26
收件人: user-zh
主题: 请教个Flink checkpoint的问题
我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
 
 
yinghua_zh@163.com

Re: Re: 请教个Flink checkpoint的问题

Posted by "yinghua_zh@163.com" <yi...@163.com>.
感谢您的答复!



yinghua_zh@163.com
 
发件人: 赵一旦
发送时间: 2021-01-14 18:43
收件人: user-zh
主题: Re: Re: 请教个Flink checkpoint的问题
机制就是这样的。如下是我之前做过的测试。
启动后等待若干检查点之后做如下操作文件系统上的检查点是否保留说明
WEB UI 点击 Cancel 方式取消任务 保留 合理,因为设置了 RETAIN_ON_CANCELLATION。
通过命令生成保存点:flink savepoint ${jobId} ${savepointDir} 保留 OK
通过命令取消任务:flink cancel ${jobId} 保留 OK
通过命令取消任务并生成保存点:flink cancel -s ${savepointDir} ${jobId} 保留 OK
通过命令停止任务(基于默认保存点目录):flink stop ${jobId} *不*保留 *注意别被特点坑*
通过命令停止任务并生成保存点:flink stop -p ${savepointDir} ${jobId} *不*保留 *注意别被特点坑 *
 
yinghua_zh@163.com <yi...@163.com> 于2021年1月14日周四 下午6:23写道:
 
> [root@sdp-10-88-100-147 flink-1.11.3]# hdfs dfs -ls
> hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6
> Java HotSpot(TM) 64-Bit Server VM warning: ignoring option
> MaxPermSize=512m; support was removed in 8.0
> log4j:WARN No such property [datePattern] in
> org.apache.log4j.RollingFileAppender.
> 21/01/14 17:05:50 INFO util.NativeCodeLoader: Loaded the native-hadoop
> library
> Found 1 items
> -rw-rw-r--   3 yarn hdfs       5388 2021-01-14 17:03
> hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6/_metadata
>  // 这个是通过JobManger看到已经checkpoing完成后去查询出来的记录,的确是生成了,里面已经包含了_metadata文件
> [root@sdp-10-88-100-147 flink-1.11.3]# hdfs dfs -ls
> hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6
> //我停止任务后再去查询时,这个目录已经删除了,出错如下
> Java HotSpot(TM) 64-Bit Server VM warning: ignoring option
> MaxPermSize=512m; support was removed in 8.0
> log4j:WARN No such property [datePattern] in
> org.apache.log4j.RollingFileAppender.
> 21/01/14 17:06:17 INFO util.NativeCodeLoader: Loaded the native-hadoop
> library
> ls:
> `hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6':
> No such file or directory
> //出错信息,checkpoint信息被删除了,这个目录我是专门用来存放checkpoint信息,排除其他主动删除该文件的可能
>
>
>
>
>
> yinghua_zh@163.com
>
> 发件人: tison
> 发送时间: 2021-01-14 18:04
> 收件人: user-zh
> 主题: Re: 请教个Flink checkpoint的问题
> 没明白你说的最近一次 checkpoint 被删除啥意思,你可以列一下 checkpoint 目录的内容,你觉得应该是啥,结果是啥。
>
> Best,
> tison.
>
>
> Evan <ch...@foxmail.com> 于2021年1月14日周四 下午5:56写道:
>
> > 代码图挂掉了,看不到代码
> >
> >
> >
> >
> > 发件人: yinghua_zh@163.com
> > 发送时间: 2021-01-14 17:26
> > 收件人: user-zh
> > 主题: 请教个Flink checkpoint的问题
> >
> >
> 我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
> >
> >
> 现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
> >
> >
> > yinghua_zh@163.com
> >
>

Re: Re: 请教个Flink checkpoint的问题

Posted by 赵一旦 <hi...@gmail.com>.
机制就是这样的。如下是我之前做过的测试。
启动后等待若干检查点之后做如下操作文件系统上的检查点是否保留说明
WEB UI 点击 Cancel 方式取消任务 保留 合理,因为设置了 RETAIN_ON_CANCELLATION。
通过命令生成保存点:flink savepoint ${jobId} ${savepointDir} 保留 OK
通过命令取消任务:flink cancel ${jobId} 保留 OK
通过命令取消任务并生成保存点:flink cancel -s ${savepointDir} ${jobId} 保留 OK
通过命令停止任务(基于默认保存点目录):flink stop ${jobId} *不*保留 *注意别被特点坑*
通过命令停止任务并生成保存点:flink stop -p ${savepointDir} ${jobId} *不*保留 *注意别被特点坑 *

yinghua_zh@163.com <yi...@163.com> 于2021年1月14日周四 下午6:23写道:

> [root@sdp-10-88-100-147 flink-1.11.3]# hdfs dfs -ls
> hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6
> Java HotSpot(TM) 64-Bit Server VM warning: ignoring option
> MaxPermSize=512m; support was removed in 8.0
> log4j:WARN No such property [datePattern] in
> org.apache.log4j.RollingFileAppender.
> 21/01/14 17:05:50 INFO util.NativeCodeLoader: Loaded the native-hadoop
> library
> Found 1 items
> -rw-rw-r--   3 yarn hdfs       5388 2021-01-14 17:03
> hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6/_metadata
>  // 这个是通过JobManger看到已经checkpoing完成后去查询出来的记录,的确是生成了,里面已经包含了_metadata文件
> [root@sdp-10-88-100-147 flink-1.11.3]# hdfs dfs -ls
> hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6
> //我停止任务后再去查询时,这个目录已经删除了,出错如下
> Java HotSpot(TM) 64-Bit Server VM warning: ignoring option
> MaxPermSize=512m; support was removed in 8.0
> log4j:WARN No such property [datePattern] in
> org.apache.log4j.RollingFileAppender.
> 21/01/14 17:06:17 INFO util.NativeCodeLoader: Loaded the native-hadoop
> library
> ls:
> `hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6':
> No such file or directory
> //出错信息,checkpoint信息被删除了,这个目录我是专门用来存放checkpoint信息,排除其他主动删除该文件的可能
>
>
>
>
>
> yinghua_zh@163.com
>
> 发件人: tison
> 发送时间: 2021-01-14 18:04
> 收件人: user-zh
> 主题: Re: 请教个Flink checkpoint的问题
> 没明白你说的最近一次 checkpoint 被删除啥意思,你可以列一下 checkpoint 目录的内容,你觉得应该是啥,结果是啥。
>
> Best,
> tison.
>
>
> Evan <ch...@foxmail.com> 于2021年1月14日周四 下午5:56写道:
>
> > 代码图挂掉了,看不到代码
> >
> >
> >
> >
> > 发件人: yinghua_zh@163.com
> > 发送时间: 2021-01-14 17:26
> > 收件人: user-zh
> > 主题: 请教个Flink checkpoint的问题
> >
> >
> 我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
> >
> >
> 现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
> >
> >
> > yinghua_zh@163.com
> >
>

Re: Re: 请教个Flink checkpoint的问题

Posted by "yinghua_zh@163.com" <yi...@163.com>.
[root@sdp-10-88-100-147 flink-1.11.3]# hdfs dfs -ls hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
log4j:WARN No such property [datePattern] in org.apache.log4j.RollingFileAppender.
21/01/14 17:05:50 INFO util.NativeCodeLoader: Loaded the native-hadoop library
Found 1 items
-rw-rw-r--   3 yarn hdfs       5388 2021-01-14 17:03 hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6/_metadata   // 这个是通过JobManger看到已经checkpoing完成后去查询出来的记录,的确是生成了,里面已经包含了_metadata文件
[root@sdp-10-88-100-147 flink-1.11.3]# hdfs dfs -ls hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6  //我停止任务后再去查询时,这个目录已经删除了,出错如下
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
log4j:WARN No such property [datePattern] in org.apache.log4j.RollingFileAppender.
21/01/14 17:06:17 INFO util.NativeCodeLoader: Loaded the native-hadoop library
ls: `hdfs://hdfsCluster/apps/ccp/flink/checkpoints/10001/39ed8aee0a2c4497be9a9d826355f595/chk-6': No such file or directory    //出错信息,checkpoint信息被删除了,这个目录我是专门用来存放checkpoint信息,排除其他主动删除该文件的可能





yinghua_zh@163.com
 
发件人: tison
发送时间: 2021-01-14 18:04
收件人: user-zh
主题: Re: 请教个Flink checkpoint的问题
没明白你说的最近一次 checkpoint 被删除啥意思,你可以列一下 checkpoint 目录的内容,你觉得应该是啥,结果是啥。
 
Best,
tison.
 
 
Evan <ch...@foxmail.com> 于2021年1月14日周四 下午5:56写道:
 
> 代码图挂掉了,看不到代码
>
>
>
>
> 发件人: yinghua_zh@163.com
> 发送时间: 2021-01-14 17:26
> 收件人: user-zh
> 主题: 请教个Flink checkpoint的问题
>
> 我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
>
> 现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
>
>
> yinghua_zh@163.com
>

Re:Re: 请教个Flink checkpoint的问题

Posted by 邮件帮助中心 <yi...@163.com>.
刚才又操作了一次,我重新截图了放在附件里了,
开始在18:29:29时没有看到chk-8生成,就是在18:29:29时checkpoint没有生成,
然后18:29:34查看时,checkpoint生成了
然后18:29:51查看时,checkpoint还在,此时我停止了那个任务
18:30:11去查看时,checkpoint的chk-8不见了














在 2021-01-14 18:04:27,"tison" <wa...@gmail.com> 写道:
>没明白你说的最近一次 checkpoint 被删除啥意思,你可以列一下 checkpoint 目录的内容,你觉得应该是啥,结果是啥。
>
>Best,
>tison.
>
>
>Evan <ch...@foxmail.com> 于2021年1月14日周四 下午5:56写道:
>
>> 代码图挂掉了,看不到代码
>>
>>
>>
>>
>> 发件人: yinghua_zh@163.com
>> 发送时间: 2021-01-14 17:26
>> 收件人: user-zh
>> 主题: 请教个Flink checkpoint的问题
>>
>> 我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
>>
>> 现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
>>
>>
>> yinghua_zh@163.com
>>

Re: 请教个Flink checkpoint的问题

Posted by tison <wa...@gmail.com>.
没明白你说的最近一次 checkpoint 被删除啥意思,你可以列一下 checkpoint 目录的内容,你觉得应该是啥,结果是啥。

Best,
tison.


Evan <ch...@foxmail.com> 于2021年1月14日周四 下午5:56写道:

> 代码图挂掉了,看不到代码
>
>
>
>
> 发件人: yinghua_zh@163.com
> 发送时间: 2021-01-14 17:26
> 收件人: user-zh
> 主题: 请教个Flink checkpoint的问题
>
> 我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
>
> 现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?
>
>
> yinghua_zh@163.com
>

回复: 请教个Flink checkpoint的问题

Posted by Evan <ch...@foxmail.com>.
代码图挂掉了,看不到代码



 
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 17:26
收件人: user-zh
主题: 请教个Flink checkpoint的问题
我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?


yinghua_zh@163.com

回复: 请教个Flink checkpoint的问题

Posted by "yinghua_zh@163.com" <yi...@163.com>.
刚才代码截图没发出去,再贴下代码
streamEnv.enableCheckpointing(5 * 60 * 1000);
CheckpointConfig checkPointConfig = streamEnv.getCheckpointConfig();
checkPointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
checkPointConfig.setCheckpointTimeout(1 * 60 * 1000);
checkPointConfig.setMinPauseBetweenCheckpoints((1 * 30 * 1000));
checkPointConfig.setMaxConcurrentCheckpoints(1);
checkPointConfig.setTolerableCheckpointFailureNumber(3);
checkPointConfig
        .enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

String checkpointPath = this.execOptions.get(CHECKPOINT_PATH);



yinghua_zh@163.com
 
发件人: yinghua_zh@163.com
发送时间: 2021-01-14 17:26
收件人: user-zh
主题: 请教个Flink checkpoint的问题
我在yarn上提交任务时,设置flink的checkpoint是5分钟一次,checkpoint使用RocksDBStateBackend保存在HDFS上且任务取消后不删除checkpoint,代码如下
现在我发现,当我停止任务时使用stopWithSavepoint发现任务停止后把最近一次的checkpoint信息给删除了?目前机制是这样的吗还是我使用有问题?是不是调用cancelWithSavepoint停止任务时就不会删除最近一次的checkpoint信息?


yinghua_zh@163.com