方法
将lz4-java仓中的LZ4开源代码替换成鲲鹏加速库LZ4代码,Kafka组件通过KafkaLZ4BlockInputStream和KafkaLZ4BlockOutputStream类来调用lz4-java-1.7.1.jar,通过使能鲲鹏加速库LZ4压缩算法,使Kafka在使用LZ4压缩格式时,性能得到提升。
软件要求
表1 软件要求
类别 |
支持版本 |
Java |
OpenJDK |
操作系统 |
openEuler 22.03 LTS SP3 |
Kafka |
2.5.0 |
Ant |
1.9.14 |
lz4-java |
1.7.1 |
软件获取
使能Kafka鲲鹏加速库LZ4特性所需软件包及其获取方式如表2所示。
表2 Kafka使能鲲鹏加速库LZ4软件获取列表
名称 |
软件包名称 |
发布类型 |
说明 |
获取地址 |
鲲鹏加速库LZ4 |
master.zip |
开源 |
通过鲲鹏加速库使LZ4压缩解压缩算法性能提升。 |
Link |
KZL |
BoostKit-kzl_1.0.0.zip |
闭源 |
基于鲲鹏平台对LZ4进行优化的代码仓,通过补丁劫持压缩函数处理方式,调用KZL优化代码,从而达到性能提高效果。 |
Link |
lz4-java开源版本软件包 |
1.7.1.zip |
开源 |
lz4-Java的源码,编译的时候将鲲鹏加速库LZ4打包进去。 |
Link |
配置编译环境
- 安装OpenJDK。
- 下载安装包。
|
wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09/OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gz --no-check-certificate
|
- 解压到指定目录“/opt/tools/installed”。
|
tar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gz
mkdir -p /opt/tools/installed/
mv jdk8u252-b09 /opt/tools/installed/
|
- 配置环境变量。
- 打开“profile”文件。
- 按“i”进入编辑模式,在文件中配置以下内容。
|
export JAVA_HOME=/opt/tools/installed/jdk8u252-b09
export PATH=$JAVA_HOME/bin:$PATH
|
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 生效环境变量。
- 安装Ant。
- 下载Ant 1.9.14版本安装包。
|
wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.9.14-bin.zip --no-check-certificate
|
- 解压到指定目录“/opt/tools/installed”。
|
unzip apache-ant-1.9.14-bin.zip
mv apache-ant-1.9.14 /opt/tools/installed/
|
- 配置Ant环境变量。
- 打开“profile”文件。
- 按“i”进入编辑模式,在文件中配置以下内容。
|
export ANT_HOME=/opt/tools/installed/apache-ant-1.9.14
export PATH=$ANT_HOME/bin:$PATH
|
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 生效环境变量。
- 查看是否生效。

编译鲲鹏加速库LZ4压缩算法
- 下载鲲鹏加速库LZ4压缩算法并合入patch。
- 创建安装目录。
- 下载鲲鹏加速库LZ4压缩算法并解压压缩包。
|
cd /opt/lz4
wget https://gitee.com/kunpeng_compute/lz4/repository/archive/master.zip --no-check-certificate
unzip master.zip
|

- 删除原有的BoostKit-kzl_1.0.0.zip包。
|
cd /opt/lz4/lz4-master
rm -rf BoostKit-kzl_1.0.0.zip
|
- 从表2下载新的BoostKit-kzl_1.0.0.zip包,将其上传到“lz4-master”目录中,并进行解压。
|
cd /opt/lz4/lz4-master
unzip BoostKit-kzl_1.0.0.zip
|
- 解压lz4-1.9.3.zip包,合入KZL的Patch。
|
cd /opt/lz4/lz4-master
unzip lz4-1.9.3.zip
patch -p0 < ./lz4_kzl.patch
cp ./kzl.a ./lz4_accelerater.h ./lz4-1.9.3/lib
cd lz4-1.9.3/lib
ar -x kzl.a
|

- 下载lz4-java并编译。
- 下载并解压lz4-java。
|
cd /opt/lz4/
wget https://github.com/lz4/lz4-java/archive/refs/tags/1.7.1.zip --no-check-certificate
unzip 1.7.1.zip
|
- 使用KZL的LZ4目录替换开源版本的LZ4。
|
cd /opt/lz4/lz4-java-1.7.1/src
rm -rf lz4
cd /opt/lz4/lz4-master
cp -r lz4-1.9.3 /opt/lz4/lz4-java-1.7.1/src/lz4
|
- 修改编译文件build.xml,将.a文件和.o文件编译到JAR中。
- 进入“/opt/lz4/lz4-java-1.7.1”目录,并打开“build.xml”文件。
|
cd /opt/lz4/lz4-java-1.7.1
vim build.xml
|
- 按“i”进入编辑模式,将文件214行<fileset dir="${src}/lz4/lib" includes="lz4.c, lz4hc.c, xxhash.c" />修改为如下内容。
|
<fileset dir="${src}/lz4/lib" includes="*.c,*.h, *.a,*.o" />
|
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行编译。
|
cd /opt/lz4/lz4-java-1.7.1
ant ivy-bootstrap
ant
|

- 将包重命名为lz4-java-1.7.1.jar。
|
cd dist
mv lz4-java-1.6-SNAPSHOT.jar lz4-java-1.7.1.jar
|

使能鲲鹏加速库LZ4压缩算法
将上步骤编译好的lz4-java-1.7.1.jar替换Kafka的“libs”目录下开源版本的软件包,重启Kafka即可。