Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Flink rocksdb压实过滤器不工作_Java_Apache Flink_Flink Streaming_Rocksdb - Fatal编程技术网

Java Flink rocksdb压实过滤器不工作

Java Flink rocksdb压实过滤器不工作,java,apache-flink,flink-streaming,rocksdb,Java,Apache Flink,Flink Streaming,Rocksdb,我有一个燧石簇。我启用了压缩过滤器并使用状态TTL。但是Rocksdb压缩过滤器不能从内存中释放状态 我的Flink管道中有大约300条记录 我的状态TTL配置: @Override public void open(Configuration parameters) throws Exception { ListStateDescriptor<ObjectNode> descriptor = new ListStateDescriptor<ObjectNode>

我有一个燧石簇。我启用了压缩过滤器并使用状态TTL。但是Rocksdb压缩过滤器不能从内存中释放状态

我的Flink管道中有大约300条记录

我的状态TTL配置:

@Override
public void open(Configuration parameters) throws Exception {
    ListStateDescriptor<ObjectNode> descriptor = new ListStateDescriptor<ObjectNode>(
            "my-state",
            TypeInformation.of(new TypeHint<ObjectNode>() {})
    );


    StateTtlConfig ttlConfig = StateTtlConfig
            .newBuilder(Time.seconds(600))
            .cleanupInRocksdbCompactFilter(2)
            .build();

    descriptor.enableTimeToLive(ttlConfig);

    myState = getRuntimeContext().getListState(descriptor);
}
XDB和Grafana的监测:


正如TTL清理的名称所示(CleanupInRockSDB CompactFilter),它依赖于仅在压实过程中运行的自定义RocksDB压实过滤器。更多详情请参阅

屏幕截图中的指标显示一直没有运行压缩。我认为数据的大小不足以在此时开始任何压缩

压缩筛选器不会从内存中释放状态


我假设主RAM内存的意思是“来自内存”。如果是这样,压实根本就不会在那里进行。RocksDB在主存中保存的数据大小总是有限的。它基本上是一个缓存,过期的未触及状态最终应该被从中逐出。其余部分会定期地溢出到磁盘,并随着时间的推移而溢出。此时,TTL清理将从系统中删除过期状态。

感谢您的回复。我可以按state.backend.rocksdb.compression.level.max-size-level-base和state.backend.rocksdb.compression.level.target-file-size-base配置强制运行压缩筛选器吗?内存使用量一直在增加,我不知道原因。如何从内存中自动删除状态?是的,您可以通过调整级别的目标大小来调整压缩触发。通常,RocksDB使用的主内存大小不应无限增长。memtables()和缓存有一些限制,可通过RocksDB自定义选项直接配置。这确实不简单。如果您使用Flink 1.10,那么Flink会尝试配置RocksDB的内存使用()以根据Flink托管内存()进行限制。目前,Flink中没有自动方法直接在memtables for RocksDB中清除过期状态。其思想是,它增长到极限,然后在磁盘压缩期间进行清理,以使其占用的空间受到实际数据大小的限制。
state.backend: rocksdb
state.backend.rocksdb.ttl.compaction.filter.enabled: true
state.backend.rocksdb.block.blocksize: 16kb
state.backend.rocksdb.compaction.level.use-dynamic-size: true
state.backend.rocksdb.thread.num: 4
state.checkpoints.dir: file:///opt/flink/checkpoint
state.backend.rocksdb.timer-service.factory: rocksdb
state.backend.rocksdb.checkpoint.transfer.thread.num: 2
state.backend.local-recovery: true
state.backend.rocksdb.localdir: /opt/flink/rocksdb
jobmanager.execution.failover-strategy: region
rest.port: 8081
state.backend.rocksdb.memory.managed: true
# state.backend.rocksdb.memory.fixed-per-slot: 20mb
state.backend.rocksdb.memory.write-buffer-ratio: 0.9
state.backend.rocksdb.memory.high-prio-pool-ratio: 0.1
taskmanager.memory.managed.fraction: 0.6
taskmanager.memory.network.fraction: 0.1
taskmanager.memory.network.min: 500mb
taskmanager.memory.network.max: 700mb
taskmanager.memory.process.size: 5500mb
taskmanager.memory.task.off-heap.size: 800mb

metrics.reporter.influxdb.class: org.apache.flink.metrics.influxdb.InfluxdbReporter
metrics.reporter.influxdb.host: ####
metrics.reporter.influxdb.port: 8086
metrics.reporter.influxdb.db: ####
metrics.reporter.influxdb.username: ####
metrics.reporter.influxdb.password: ####
metrics.reporter.influxdb.consistency: ANY
metrics.reporter.influxdb.connectTimeout: 60000
metrics.reporter.influxdb.writeTimeout: 60000

state.backend.rocksdb.metrics.estimate-num-keys: true
state.backend.rocksdb.metrics.num-running-compactions: true
state.backend.rocksdb.metrics.background-errors: true
state.backend.rocksdb.metrics.block-cache-capacity: true
state.backend.rocksdb.metrics.block-cache-pinned-usage: true
state.backend.rocksdb.metrics.block-cache-usage: true
state.backend.rocksdb.metrics.compaction-pending: true