Flink 使用介紹相關(guān)文檔目錄
背景
Flink 1.13.2版本在ARM架構(gòu)Linux系統(tǒng)上運行导盅,如果啟用了rocksdb state backend荧降,會出現(xiàn)架構(gòu)不兼容異常。原因是Flink中的frocksdbjni并非使用Java編寫,沒有提供ARM支持个曙。本篇為大家?guī)砭幾garm版本的frocksdbjni的方式。
編譯環(huán)境
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對應(yīng)的frocksdbjni版本分支渔肩。
編譯
編譯相關(guān)說明位于frocksdb/java/RELEASE.md
中因俐。編譯命令為:
make jclean clean rocksdbjavastaticrelease
注意:
編譯的時候zlib 1.2.11會出現(xiàn)無法下載的情況。實際情況為zlib下載鏈接發(fā)生了變化。
需要編輯項目根目錄的Makefile
抹剩,將:
ZLIB_DOWNLOAD_BASE ?= http://zlib.net
修改為:
ZLIB_DOWNLOAD_BASE ?= http://zlib.net/fossils
然后重新編譯撑帖。
這個問題本人已提交PR修復(fù) https://github.com/ververica/frocksdb/pull/58。讀者編譯無需再處理此問題澳眷。
編譯輸出位于frocksdb/java/target
胡嘿。可以找到rocksdbjni-5.17.2-linux64.jar
钳踊。雖然名字和frocksdbjni
不同但是內(nèi)容是一樣的衷敌。
處理Flink binary
將編譯好的frocksdbjni使用maven install命令加入到Flink編譯環(huán)境的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架構(gòu),無需再重新編譯適配沟堡。