Flink設置checkpoint 狀態與容錯

一致性檢查點:

在流式應用處理過程中,Flink會週期性的爲應用狀態生成檢查點。一旦發生故障,Flink會利用最新的檢查點來恢復任務狀態,並重新啓動處理程序。如果所有算子的狀態都可以寫入檢查點並從其中恢復,並且所有輸入流的消費位置都能重置到檢查點的那一刻,那麼檢查點和故障恢復機制就能爲整個應用狀態提供精確一次的一致性保障。 值得一提的是,Flink的檢查點機制,只能保證應用內部狀態的精確一致性,至於端對端的精確一致性保證,還需結合外部讀寫系統的支持。

        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);

        final ParameterTool params = Launcher.parameterCheck(args);
        env.getConfig().setGlobalJobParameters(params);
	
		//啓用checkpoint間隔 60*1000ms
        env.enableCheckpointing(1000L * 60L);
        CheckpointConfig checkpointConf = env.getCheckpointConfig();
        // 設置 exactly-once (this is the default)
        checkpointConf.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
        // 設置checkpoint最小間隔 30 * 1000ms
        checkpointConf.setMinPauseBetweenCheckpoints(1000L * 30L);
        // 設置checkpoint在30秒內完成 否則將被丟棄
        checkpointConf.setCheckpointTimeout(1000L * 30L);
        // 任務canel後,檢查點的狀態       		
        checkpointConf.enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

        env.setStateBackend((StateBackend) new RocksDBStateBackend(params.get(Constants.STATE_BACKEND_PATH), true));

        env.setRestartStrategy(RestartStrategies.fixedDelayRestart(10, Time.of(30, TimeUnit.SECONDS)));


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章