2017-08-26 436 views
1

我們使用文件系統作爲檢查點狀態後端。以下是我們的設置:Flink刪除舊檢查點文件

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); 
env.setStreamTimeCharacteristic(timeCharacteristic); 
env.getConfig().setAutoWatermarkInterval(Time.seconds(30).toMilliseconds()); 
env.enableCheckpointing(Time.seconds(30).toMilliseconds()); 
CheckpointConfig checkpointConfig = env.getCheckpointConfig(); 
checkpointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE); 
env.setStateBackend(new FsStateBackend(props.getProperty("backendstate.path"))); 

這種發展過程中正常工作,但只要我們部署到生產中,我們發現,檢查點文件趕緊吃磁盤空間。我做了一個ls以檢查點目錄之一,並發現

chk-10 chk-104 chk-13 chk-18 chk-23 chk-28 chk-32 chk-37 chk-41 chk-46 chk-50 chk-55 chk-6 chk-64 chk-69 chk-73 chk-78 chk-82 chk-87 chk-91 chk-96 chk-100 ... hundreds of them 

我想知道是否有一種方法可以刪除舊CHK-X檔案或我們必須手動刪除它們?

回答

0

你可以試試這個

CheckpointConfig config = env.getCheckpointConfig(); 
config.enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION); 

的ExternalizedCheckpointCleanup模式配置,當你取消的作業用什麼關卡外化發生:

ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION:保留外在檢查點時的作業取消。請注意,在這種情況下,您必須手動清除取消後的檢查點狀態。

ExternalizedCheckpointCleanup.DELETE_ON_CANCELLATION:當作業被取消時,刪除外部化檢查點。檢查點狀態只有在作業失敗時纔可用。

1

在部署過程中設置以下屬性中的「的conf /弗林克-conf.yaml」文件,檢查點的最大數量要保留:

state.checkpoints.num-retained 

理想情況下,應該超過1 ,因爲如果最後的檢查點損壞,它有助於恢復工作。

欲瞭解更多信息,請看看這裏:Config Options