我正在编写一个Flink作业来存储状态并使用RocksDB执行聚合,但我不确定在哪里可以让RocksDB存储状态。在我的本地机器上,我将其存储在~/Downloads/flink-1.15.4/rocksdb/。但在AWS中,我无法使用像file://rocksdb/这样的存储。我也尝试过在S3上存储。
这两种方法都不起作用,我试图避免因为高成本而不得不使用EFS。最好的方法是什么?
对于我的检查点本身,我可以使用S3(同时设置我的env的检查点存储)。
我正在编写一个Flink作业来存储状态并使用RocksDB执行聚合,但我不确定在哪里可以让RocksDB存储状态。在我的本地机器上,我将其存储在~/Downloads/flink-1.15.4/rocksdb/。但在AWS中,我无法使用像file://rocksdb/这样的存储。我也尝试过在S3上存储。
这两种方法都不起作用,我试图避免因为高成本而不得不使用EFS。最好的方法是什么?
对于我的检查点本身,我可以使用S3(同时设置我的env的检查点存储)。
1条答案
按热度按时间ht4b089n1#
出于性能原因,
rocksdb.localdir
应该始终指向本地磁盘。这是RocksDB将保持工作状态的地方,并且必须在每次状态访问时从S3(例如)读取和写入将非常痛苦。我看不出有任何理由使用EFS; EBS很好。如果你关心性能,请选择SSD。
如果
rocksdb.localdir
使用临时存储也没关系。由于Flink依赖于检查点进行恢复,因此本地磁盘是否存活并不重要。有些人甚至使用RAM磁盘作为RocksDB本地存储。