Flink sql 状态过期后,checkpoint 大小没变化

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

Flink sql 状态过期后,checkpoint 大小没变化

孙啸龙
大家好:
        版本:1.12.0
        方式:flink sql
        测试sql:
        select a.id,b.money,b.createTime from test_state_from a
        full join test_state_from1 b on a.id=b.id;
        问题:
       test_state_from和test_state_from1 分别插入50万条数据,查看 checkpoint 大小为83m,state ttl 设 置为16分钟,30分钟后查看checkpoint的值还是83m,状态过期清理后的checkpoint为什么没变小?
Reply | Threaded
Open this post in threaded view
|

Re: Flink sql 状态过期后,checkpoint 大小没变化

Yun Tang
使用的state backend,以及对应的checkpoint 类型是什么(是否开启incremental checkpoint)?

在一开始插入数据后,直到state TTL超过,期间均没有再插入数据过么?还是说一直在以一定的数据量在插入数据?


祝好
唐云
________________________________
From: 孙啸龙 <[hidden email]>
Sent: Thursday, January 14, 2021 15:52
To: [hidden email] <[hidden email]>
Subject: Flink sql 状态过期后,checkpoint 大小没变化

大家好:
        版本:1.12.0
        方式:flink sql
        测试sql:
        select a.id,b.money,b.createTime from test_state_from a
        full join test_state_from1 b on a.id=b.id;
        问题:
       test_state_from和test_state_from1 分别插入50万条数据,查看 checkpoint 大小为83m,state ttl 设      置为16分钟,30分钟后查看checkpoint的值还是83m,状态过期清理后的checkpoint为什么没变小?
Reply | Threaded
Open this post in threaded view
|

Re: Flink sql 状态过期后,checkpoint 大小没变化

孙啸龙
你好:
     使用的state backend是rocksdb,没有开启增量,后续没有再插入过数据。

> 在 2021年1月14日,下午4:07,Yun Tang <[hidden email]> 写道:
>
> 使用的state backend,以及对应的checkpoint 类型是什么(是否开启incremental checkpoint)?
>
> 在一开始插入数据后,直到state TTL超过,期间均没有再插入数据过么?还是说一直在以一定的数据量在插入数据?
>
>
> 祝好
> 唐云
> ________________________________
> From: 孙啸龙 <[hidden email]>
> Sent: Thursday, January 14, 2021 15:52
> To: [hidden email] <[hidden email]>
> Subject: Flink sql 状态过期后,checkpoint 大小没变化
>
> 大家好:
>        版本:1.12.0
>        方式:flink sql
>        测试sql:
>        select a.id,b.money,b.createTime from test_state_from a
>        full join test_state_from1 b on a.id=b.id;
>        问题:
>       test_state_from和test_state_from1 分别插入50万条数据,查看 checkpoint 大小为83m,state ttl 设      置为16分钟,30分钟后查看checkpoint的值还是83m,状态过期清理后的checkpoint为什么没变小?

Reply | Threaded
Open this post in threaded view
|

Re: Flink sql 状态过期后,checkpoint 大小没变化

Yun Tang
Hi,

你本地的数据肯定是过期了,checkpoint size没有变化是因为你的数据总量83MB,且之后没有插入新数据,导致没有触发RocksDB的compaction,所以本地的数据没有物理上清理,而在full snapshot时候,估计你并没有开启cleanFullSnapshot [1],所以导致full snapshot时候并没有删除掉过期数据。

其实你可以查询一下状态,默认情况下,已经过期的数据是无法再查询到了。

建议开启增量checkpoint即可,过期数据即使物理不删除,也因为过期而无法再读取到了,没必要过分关注UI上的checkpoint size。


[1] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/state.html#cleanup-in-full-snapshot

祝好
唐云
________________________________
From: 孙啸龙 <[hidden email]>
Sent: Thursday, January 14, 2021 16:11
To: [hidden email] <[hidden email]>
Subject: Re: Flink sql 状态过期后,checkpoint 大小没变化

你好:
     使用的state backend是rocksdb,没有开启增量,后续没有再插入过数据。

> 在 2021年1月14日,下午4:07,Yun Tang <[hidden email]> 写道:
>
> 使用的state backend,以及对应的checkpoint 类型是什么(是否开启incremental checkpoint)?
>
> 在一开始插入数据后,直到state TTL超过,期间均没有再插入数据过么?还是说一直在以一定的数据量在插入数据?
>
>
> 祝好
> 唐云
> ________________________________
> From: 孙啸龙 <[hidden email]>
> Sent: Thursday, January 14, 2021 15:52
> To: [hidden email] <[hidden email]>
> Subject: Flink sql 状态过期后,checkpoint 大小没变化
>
> 大家好:
>        版本:1.12.0
>        方式:flink sql
>        测试sql:
>        select a.id,b.money,b.createTime from test_state_from a
>        full join test_state_from1 b on a.id=b.id;
>        问题:
>       test_state_from和test_state_from1 分别插入50万条数据,查看 checkpoint 大小为83m,state ttl 设      置为16分钟,30分钟后查看checkpoint的值还是83m,状态过期清理后的checkpoint为什么没变小?

Reply | Threaded
Open this post in threaded view
|

Re: Flink sql 状态过期后,checkpoint 大小没变化

孙啸龙
你好:
非常谢谢,
        本地的数据是过期了。
不好意思,还有几个疑问想请教下。
1.看文档,开启cleanFullSnapshot是只能对单个状态设置吗,没查到flink sql 开启cleanFullSnapshot的配置的地方?因为只看到StateTtlConfig是对于单个状态的设置,没有对job或者对table的config设置。
2.cleanFullSnapshot 开启后,从checkpoint恢复才会触发清理,不是在checkpoint过程中触发清理掉过期数据?
       

> 在 2021年1月14日,下午4:48,Yun Tang <[hidden email]> 写道:
>
> Hi,
>
> 你本地的数据肯定是过期了,checkpoint size没有变化是因为你的数据总量83MB,且之后没有插入新数据,导致没有触发RocksDB的compaction,所以本地的数据没有物理上清理,而在full snapshot时候,估计你并没有开启cleanFullSnapshot [1],所以导致full snapshot时候并没有删除掉过期数据。
>
> 其实你可以查询一下状态,默认情况下,已经过期的数据是无法再查询到了。
>
> 建议开启增量checkpoint即可,过期数据即使物理不删除,也因为过期而无法再读取到了,没必要过分关注UI上的checkpoint size。
>
>
> [1] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/state.html#cleanup-in-full-snapshot
>
> 祝好
> 唐云
> ________________________________
> From: 孙啸龙 <[hidden email]>
> Sent: Thursday, January 14, 2021 16:11
> To: [hidden email] <[hidden email]>
> Subject: Re: Flink sql 状态过期后,checkpoint 大小没变化
>
> 你好:
>     使用的state backend是rocksdb,没有开启增量,后续没有再插入过数据。
>
>> 在 2021年1月14日,下午4:07,Yun Tang <[hidden email]> 写道:
>>
>> 使用的state backend,以及对应的checkpoint 类型是什么(是否开启incremental checkpoint)?
>>
>> 在一开始插入数据后,直到state TTL超过,期间均没有再插入数据过么?还是说一直在以一定的数据量在插入数据?
>>
>>
>> 祝好
>> 唐云
>> ________________________________
>> From: 孙啸龙 <[hidden email]>
>> Sent: Thursday, January 14, 2021 15:52
>> To: [hidden email] <[hidden email]>
>> Subject: Flink sql 状态过期后,checkpoint 大小没变化
>>
>> 大家好:
>>       版本:1.12.0
>>       方式:flink sql
>>       测试sql:
>>       select a.id,b.money,b.createTime from test_state_from a
>>       full join test_state_from1 b on a.id=b.id;
>>       问题:
>>      test_state_from和test_state_from1 分别插入50万条数据,查看 checkpoint 大小为83m,state ttl 设      置为16分钟,30分钟后查看checkpoint的值还是83m,状态过期清理后的checkpoint为什么没变小?
>

Reply | Threaded
Open this post in threaded view
|

Re: Flink sql 状态过期后,checkpoint 大小没变化

Yun Tang
Hi

  1.  目前没有全局的配置
  2.  开启cleanFullSnapshot 并不会物理清除数据,只是确保checkpoint数据中没有相关过期数据

祝好
唐云
________________________________
From: 孙啸龙 <[hidden email]>
Sent: Thursday, January 14, 2021 20:43
To: [hidden email] <[hidden email]>
Subject: Re: Flink sql 状态过期后,checkpoint 大小没变化

你好:
非常谢谢,
        本地的数据是过期了。
不好意思,还有几个疑问想请教下。
1.看文档,开启cleanFullSnapshot是只能对单个状态设置吗,没查到flink sql 开启cleanFullSnapshot的配置的地方?因为只看到StateTtlConfig是对于单个状态的设置,没有对job或者对table的config设置。
2.cleanFullSnapshot 开启后,从checkpoint恢复才会触发清理,不是在checkpoint过程中触发清理掉过期数据?


> 在 2021年1月14日,下午4:48,Yun Tang <[hidden email]> 写道:
>
> Hi,
>
> 你本地的数据肯定是过期了,checkpoint size没有变化是因为你的数据总量83MB,且之后没有插入新数据,导致没有触发RocksDB的compaction,所以本地的数据没有物理上清理,而在full snapshot时候,估计你并没有开启cleanFullSnapshot [1],所以导致full snapshot时候并没有删除掉过期数据。
>
> 其实你可以查询一下状态,默认情况下,已经过期的数据是无法再查询到了。
>
> 建议开启增量checkpoint即可,过期数据即使物理不删除,也因为过期而无法再读取到了,没必要过分关注UI上的checkpoint size。
>
>
> [1] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/state.html#cleanup-in-full-snapshot
>
> 祝好
> 唐云
> ________________________________
> From: 孙啸龙 <[hidden email]>
> Sent: Thursday, January 14, 2021 16:11
> To: [hidden email] <[hidden email]>
> Subject: Re: Flink sql 状态过期后,checkpoint 大小没变化
>
> 你好:
>     使用的state backend是rocksdb,没有开启增量,后续没有再插入过数据。
>
>> 在 2021年1月14日,下午4:07,Yun Tang <[hidden email]> 写道:
>>
>> 使用的state backend,以及对应的checkpoint 类型是什么(是否开启incremental checkpoint)?
>>
>> 在一开始插入数据后,直到state TTL超过,期间均没有再插入数据过么?还是说一直在以一定的数据量在插入数据?
>>
>>
>> 祝好
>> 唐云
>> ________________________________
>> From: 孙啸龙 <[hidden email]>
>> Sent: Thursday, January 14, 2021 15:52
>> To: [hidden email] <[hidden email]>
>> Subject: Flink sql 状态过期后,checkpoint 大小没变化
>>
>> 大家好:
>>       版本:1.12.0
>>       方式:flink sql
>>       测试sql:
>>       select a.id,b.money,b.createTime from test_state_from a
>>       full join test_state_from1 b on a.id=b.id;
>>       问题:
>>      test_state_from和test_state_from1 分别插入50万条数据,查看 checkpoint 大小为83m,state ttl 设      置为16分钟,30分钟后查看checkpoint的值还是83m,状态过期清理后的checkpoint为什么没变小?
>

Reply | Threaded
Open this post in threaded view
|

Re: Flink sql 状态过期后,checkpoint 大小没变化

chenchencc
你好,我也遇到这个问题,flink 1.12.2 sql,想问下
1.有什么方式能本地物理上删除那些ttl过期的数据吗
2.有什么方式能checkpoint时候删除ttl过期的数据吗?让checkpoint数据不再继续增长?



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