Flink инкрементная контрольная точка с rockdb использует много памяти - PullRequest
2 голосов
/ 31 мая 2019

Теперь я использую инкрементную контрольную точку в Flink с RocksDB, работающую в среде контейнера. Как я знаю, для выполнения инкрементальной контрольной точки у rockdb будет много памяти, JIRA уже описывает эту проблему: https://issues.apache.org/jira/browse/FLINK-7289 Я попытался настроить конфигурацию моего Rocksdb, но мой контейнер все еще был убит из-за OOM. Вот страница монитора: мой контейнер будет уничтожен и перезапущен, а затем снова уничтожен.

enter image description here

Вот мои конфигурации:

public class BackendOptions implements OptionsFactory {

@Override
public DBOptions createDBOptions(DBOptions dbOptions) {
    return dbOptions
            .setIncreaseParallelism(4)
            .setUseFsync(false)
            .setMaxOpenFiles(-1);

}
@Override
public ColumnFamilyOptions createColumnOptions(ColumnFamilyOptions columnFamilyOptions) {
    return columnFamilyOptions.setCompactionStyle(CompactionStyle.LEVEL)
            .setLevelCompactionDynamicLevelBytes(true)
            .setTargetFileSizeBase(256 * 1024 * 1024)
            .setWriteBufferSize(64 * 1024 * 1024)
            .setMaxBytesForLevelBase(1024 * 1024 * 1024)
            .setMinWriteBufferNumberToMerge(2)
            .setMaxWriteBufferNumber(5)

            .setOptimizeFiltersForHits(true)
            .setTableFormatConfig(
                    new BlockBasedTableConfig()
                            .setBlockCacheSize(256 * 1024 * 1024)  // 256 MB
                            .setBlockSize(128 * 1024) //// 128 KB
                            .setCacheIndexAndFilterBlocks(true)
            );
}

Я делаю контрольную точку каждые 1 минуту, а размер состояния составляет около 5 ГБ. Может ли кто-нибудь мне помочь или сказать какой-нибудь правильный способ использовать инкрементную контрольную точку?

...