美文网首页玩转大数据Java
Flink中rocksdb兼容ARM

Flink中rocksdb兼容ARM

作者: AlienPaul | 来源:发表于2024-06-27 14:22 被阅读0次

Flink 使用介绍相关文档目录

Flink 使用介绍相关文档目录

背景

Flink 1.13.2版本在ARM架构Linux系统上运行,如果启用了rocksdb state backend,会出现架构不兼容异常。原因是Flink中的frocksdbjni并非使用Java编写,没有提供ARM支持。本篇为大家带来编译arm版本的frocksdbjni的方式。

编译环境

CentOS 7.4

查看Flink的frocksdbjni版本

以Flink 1.13.2版本为例。查看flink-state-backends/flink-statebackend-rocksdb/pom.xml

<dependency>
    <groupId>com.ververica</groupId>
    <artifactId>frocksdbjni</artifactId>
    <version>5.17.2-ververica-2.1</version>
</dependency>

说明使用的是5.17.2-ververica-2.1版本。

下载frocksdbjni代码

git clone https://github.com/ververica/frocksdb.git

切换到Flink对应的frocksdbjni版本分支。

编译

编译相关说明位于frocksdb/java/RELEASE.md中。编译命令为:

make jclean clean rocksdbjavastaticrelease

注意:

编译的时候zlib 1.2.11会出现无法下载的情况。实际情况为zlib下载链接发生了变化。

需要编辑项目根目录的Makefile,将:

ZLIB_DOWNLOAD_BASE ?= http://zlib.net

修改为:

ZLIB_DOWNLOAD_BASE ?= http://zlib.net/fossils

然后重新编译。

这个问题本人已提交PR修复 https://github.com/ververica/frocksdb/pull/58。读者编译无需再处理此问题。

编译输出位于frocksdb/java/target。可以找到rocksdbjni-5.17.2-linux64.jar。虽然名字和frocksdbjni不同但是内容是一样的。

处理Flink binary

将编译好的frocksdbjni使用maven install命令加入到Flink编译环境的maven仓库。命令示例:

mvn install:install-file -DgroupId=com.ververica -DartifactId=frocksdbjni -Dversion=5.17.2-ververica-2.1 -Dpackaging=jar -Dfile=\path\to\frocksdnjni.jar

然后重新编译Flink。

或者有个更为简单的方式,找到编译好的frocksdbjni jar文件,将其中的:

  • librocksdbjni-linux64.so
  • librocksdbjni-linux32.so(如果有的话)

替换掉FLINK_HOME/lib目录中flink-dist.jar里面的同名文件。

备注

Flink 1.15以上版本的frocksdbjni已更新(>6.20.x)。Jar中包含如下文件:

  • librocksdbjni-linux-aarch64-musl.so
  • librocksdbjni-linux-aarch64.so
  • librocksdbjni-linux-ppc64le-musl.so
  • librocksdbjni-linux-ppc64le.so
  • librocksdbjni-linux32-musl.so
  • librocksdbjni-linux32.so
  • librocksdbjni-linux64-musl.so
  • librocksdbjni-linux64.so

可支持ARM架构,无需再重新编译适配。

相关文章

网友评论

    本文标题:Flink中rocksdb兼容ARM

    本文链接:https://www.haomeiwen.com/subject/wmdecjtx.html