You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Roman Khachatryan (Jira)" <ji...@apache.org> on 2020/05/21 08:28:00 UTC
[jira] [Updated] (FLINK-17860) Recursively remove channel state
directories
[ https://issues.apache.org/jira/browse/FLINK-17860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Roman Khachatryan updated FLINK-17860:
--------------------------------------
Description:
With a high degree of parallelism, we end up with n*n files in each checkpoint (not mitigated by state.backend.fs.memory-threshold: 1048576 and state.backend.fs.write-buffer-size: 4194304 because each state is ten-hundreds Mb).
Writing them if fast (from many subtasks), removing them is slow (from JM).
Instead of going through them 1 by 1, we could remove the directory recursively.
The easiest way is to remove channelStateHandle.discard() calls and use isRecursive=true in FsCompletedCheckpointStorageLocation.disposeStorageLocation.
Note: with the current isRecursive=false there will be an exception if there are any files left under that folder.
This can be extended to other state handles in future as well.
was:
With a high degree of parallelism, we end up with n*n files in each checkpoint (not mitigated by state.backend.fs.memory-threshold: 1048576 and state.backend.fs.write-buffer-size: 4194304 because each state is ten-hundreds Mb).
Writing them if fast (from many subtasks), removing them is slow (from JM).
Instead of going through them 1 by 1, we could remove the directory recursively.
The easiest way is to just not call discard for channelStateHandles and then switch flag isRecursive=true (if unalignedCheckpoints == true?).
This can be extended to other state handles in future as well.
> Recursively remove channel state directories
> --------------------------------------------
>
> Key: FLINK-17860
> URL: https://issues.apache.org/jira/browse/FLINK-17860
> Project: Flink
> Issue Type: Improvement
> Components: Runtime / Checkpointing
> Affects Versions: 1.11.0
> Reporter: Roman Khachatryan
> Assignee: Roman Khachatryan
> Priority: Critical
> Fix For: 1.11.0
>
>
> With a high degree of parallelism, we end up with n*n files in each checkpoint (not mitigated by state.backend.fs.memory-threshold: 1048576 and state.backend.fs.write-buffer-size: 4194304 because each state is ten-hundreds Mb).
> Writing them if fast (from many subtasks), removing them is slow (from JM).
>
> Instead of going through them 1 by 1, we could remove the directory recursively.
>
> The easiest way is to remove channelStateHandle.discard() calls and use isRecursive=true in FsCompletedCheckpointStorageLocation.disposeStorageLocation.
> Note: with the current isRecursive=false there will be an exception if there are any files left under that folder.
>
> This can be extended to other state handles in future as well.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)