flink1.10配置rocksdb保存checkpoint时,idea运行报错

本文介绍在Apache Flink中配置RocksDB状态后端的方法,包括所需依赖及解决IDEA运行时报错的问题,指出需引入Hadoop客户端依赖以支持HDFS。

首先,使用rocksdb需要引入依赖:

<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-statebackend-rocksdb -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-statebackend-rocksdb_2.12</artifactId>
            <version>1.10.0</version>
        </dependency>

 但是在idea中运行时,仍然报错,如下:

Caused by: org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Could not find a file system implementation for scheme 'hdfs'. The scheme is not directly supported by Flink and no Hadoop file system to support this scheme could be loaded.
	at org.apache.flink.core.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:450)
	at org.apache.flink.core.fs.FileSystem.get(FileSystem.java:362)
	at org.apache.flink.core.fs.Path.getFileSystem(Path.java:298)
	at org.apache.flink.runtime.state.filesystem.FsCheckpoi
在 Apache Flink 1.20 中配置 RocksDB 作为状态后端需要对 Flink 的状态后端机制进行调整,并确保依赖库正确安装。以下是详细步骤: ### 配置 RocksDB 状态后端 #### 1. 添加 RocksDB 依赖 Flink 默认使用 `HashMapStateBackend`,但可以通过引入 `flink-statebackend-rocksdb` 模块来启用 RocksDB。该模块是 Flink 的可选依赖,因此需要手动将其添加到 Flink 的 `lib/` 目录中。 下载适用于 Flink 1.20 的 RocksDB 状态后端 JAR 包: ```bash wget https://repo1.maven.org/maven2/org/apache/flink/flink-statebackend-rocksdb_2.12/1.20.1/flink-statebackend-rocksdb-1.20.1.jar ``` 将该 JAR 文件复制到 Flink 安装目录下的 `lib/` 子目录中: ```bash cp flink-statebackend-rocksdb-1.20.1.jar /path/to/flink/lib/ ``` #### 2. 修改 Flink 配置文件 编辑 `conf/flink-conf.yaml` 文件,设置默认的状态后端为 `rocksdb`: ```yaml state.backend: rocksdb ``` 还可以根据需求进一步优化 RocksDB 的行为,例如启用增量检查点(Incremental Checkpointing)以减少检查点大小: ```yaml state.checkpoints.dir: file:///path/to/checkpoints state.savepoints.dir: file:///path/to/savepoints state.rocksdb.files.open: -1 # 允许打开的文件数上限,-1 表示无限制 state.rocksdb.memory.managed: true # 启用托管内存 ``` #### 3. 在代码中显式设置状态后端(可选) 如果希望仅对特定作业使用 RocksDB,可以在程序入口处通过 `StreamExecutionEnvironment` 设置状态后端: ```java StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStateBackend(new RocksDBStateBackend()); ``` #### 4. 部署和验证 启动 Flink 集群并提交作业后,可通过 Web UI 查看任务运行情况,确认是否成功加载 RocksDB 状态后端。同,日志文件中应包含 RocksDB 初始化的相关信息,如数据库路径、列族创建等。 ### 注意事项 - **资源管理**:RocksDB 对磁盘 I/O 和内存有较高要求,建议合理配置 `taskmanager.memory.managed.size` 以避免性能瓶颈[^4]。 - **兼容性**:确保所使用的 Flink 版本与 RocksDB 插件版本一致,否则可能导致类加载失败或运行异常。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值