建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

五湖四海@银河护卫队

发帖: 176粉丝: 73

级别 : 版主,版块专家

发消息 + 关注

更新于2020年10月21日 20:29:53 1106 5
直达本楼层的链接
楼主
显示全部楼层
[技术干货] Kafka-0.8.2.2移植指南 for 中标麒麟7.5【鲲鹏920(ARM64) 】

1简介

Apache Kafka是一个开源流处理软件平台,用ScalaJava编写。该项目旨在提供统一、高吞吐量、低延迟的平台,用于处理实时数据馈送。它的存储层本质上是一个大规模可扩展设计为分布式事务日志的发布/订阅消息队列。

官方链接:https://kafka.apache.org/

类别:开源流处理平台

语言:Scala/Java

 

2环境

类别

子项

版本

获取地址(方法)

 

硬件

CPU

Kunpeng 920

iBMC

网络

Ethernet-10GE

iBMC

存储

SATA 4T

iBMC

内存

xxG xxxMHz

iBMC

OS

NeoKylin

7.5

cat /etc/neokylin-release

Kernel

4.14.0

cat /proc/version

 

软件

GCC

4.8.5

gcc -v

OpenJDK

 

1.8.0_191

参考下面安装说明

Kafka

2.11-1.1.0

参考下面安装说明

3依赖安装

3.1安装OpenJDK

下载并安装到指定目录(如/opt/tools/installed):

wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz

tar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz

mv jdk8u191-b12   /opt/tools/installed/

【注】:使用系统自带Openjdk软件包可以通过执行“yum -y install java-1.8.0*进行安装然后参考如下步骤配置JAVA_HOME环境变量;

配置java环境变量,在/etc/profile文件末尾处增加下面的代码:

JAVA_HOME=/opt/tools/installed/jdk8u191-b12

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME PATH

运行下面命令,使修改的环境变量生效:

source /etc/profile

3.2安装GCC等依赖项

挂载OS镜像:

mount -o loop   /home/NeoKylin/nsV7Update5-adv-lic-build05-aarch64.iso /mnt/NeoKylin/

修改/etc/yum.repos.d/ns7-adv.repo文件,配置yum本地源:

[ns7-adv-os]

name=NeoKylin Linux Advanced Server 7 - Os

baseurl= file:///mnt/NeoKylin

gpgcheck=0

gpgkey=file:///mnt/NeoKylin/RPM-GPG-KEY-neokylin-release

enabled=1

运行下面的命令,使yum源配置生效:

yum clean all

yum makecache

yum安装GCC等相关依赖:

sudo yum install -y snappy snappy-devel autoconf automake libtool   git gcc gcc-c++ make cmake openssl openssl-devel ncurses-devel zlib zlib-devel   bzip2 bzip2-devel bzip2-libs readline readline-devel bison zip unzip tar tcl

3.3安装Maven

下载并安装到指定目录(如/opt/tools/installed):

wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

tar -zxf apache-maven-3.5.4-bin.tar.gz

mv apache-maven-3.5.4 /opt/tools/installed/

修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:

JAVA_HOME=/opt/tools/installed/jdk8u191-b12

M2_HOME=/opt/tools/installed/apache-maven-3.5.4

PATH=$M2_HOME/bin:$JAVA_HOME/bin:$PATH

export M2_HOME   JAVA_HOME PATH

运行下面的命令,是修改的环境变量生效:

source /etc/profile

修改maven配置文件中的:本地仓路径、远程仓等:

配置文件路径:/opt/tools/installed/apache-maven-3.5.4/conf/settings.xml

本地仓库配置:(可选,可保持默认)

<!--默认在“~/.m2/”目录下,可以按下行格式修改成你自己想保存的目录-->

<localRepository>/path/to/local/repo</localRepository>

远程仓库配置:(可选,默认用maven2官方远程仓但访问慢,建议用国内maven仓)

<!--修改成自己搭建的maven仓库,如果没有,可以使用下面的华为开源maven -->

<mirror>
  <id>
huaweimaven</id>
  <name>
huaweicloud maven</name>
  <url>
https://mirrors.huaweicloud.com/repository/maven/</url>
  <mirrorOf>central</mirrorOf>
  </mirror>

配置代理:(可选,外网环境下不用配置maven的代理)

  <proxies>

   <proxy>

        <id>optional</id>

        <active>true</active>

        <protocol>http</protocol>

      <username>用户名</username>

      <password>密码</password>

      <host>代理服务器网址</host>

      <port>代理服务器端口</port>

        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>

    </proxy>

  </proxies>

3.4安装ant编译软件

1下载ant开源软件包

wget https://apache.website-solution.net//ant/binaries/apache-ant-1.9.15-bin.tar.gz

2、解压apache-ant-1.9.15-bin.tar.gz

tar zxvf apache-ant-1.9.15-bin.tar.gz

3、进入解压路径

cd apache-ant-1.9.15/

4、将ANT_HOME配置到/etc/profile环境变量中

vi /etc/proflile

增加如下内容

export ANT_HOME=/home/test/apache-ant-1.9.15

export PATH=$ ANT_HOME/bin:$PATH

5、使ANT_HOME环境变量生效

source /etc/proflile

 

3.5安装gradle编译软件

1下载grade开源软件包

wget   https://downloads.gradle.org/distributions/gradle-5.4.1-bin.zip

2、解压gradle-5.4.1-bin.zip

unzip gradle-5.4.1-bin.zip

3、进入解压路径

cd gradle-5.4.1/

image.png

4、将ANT_HOME配置到/etc/profile环境变量中

vi /etc/proflile

image.png

5、使ANT_HOME环境变量生效

source /etc/proflile

 

3.6安装编译gradle-scoverage

1下载ant开源软件包

wget   https://github.com/scoverage/gradle-scoverage/archive/3.1.3.tar.gz

2、解压3.1.3.tar.gz

tar zxvf 3.1.3.tar.gz

3、进入解压路径

cd gradle-scoverage-3.1.3/

image.png

4、使用gradle编译gradle-scoverage-3.1.3

gradle assemble

image.png

 

3.7安装编译shadow

1下载shadow开源软件包

wget https://github.com/johnrengelman/shadow/archive/5.0.0.tar.gz

2、解压5.0.0.tar.gz

tar zxvf 5.0.0.tar.gz

3、进入解压路径

cd shadow-5.0.0/


4
、使用gradle编译shadow-5.0.0

gradle assemble

image.png

 

3.8安装scala软件

1下载scala安装软件包

wget   https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.tgz

2、解压scala-2.11.11.tgz

tar zxvf scala-2.11.11.tgz -d /usr/local

3、将SCALA_HOME配置到/etc/profile环境变量中

vi /etc/proflile

增加如下内容

export   SCALA_HOME=/usr/local/scla-2.11.11
  export PATH=$PATH:$SCALA_HOME/bin

5、使ANT_HOME环境变量生效

source /etc/proflile

 

3.9gccg++c++增加-fsigned-char选项

1、对gcc增加-fsigned-char选项

1)使用which gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)

which gcc


2)
更改gcc的名字(比如改成gcc-arm

mv /usr/bin/gcc   /usr/bin/gcc-arm

3)、进入gcc所在目录执行vi gcc,并填入如下内容保存:

#! /bin/sh

/usr/bin/gcc-arm -fsigned-char "$@"

cd /usr/bin/

vi gcc

image.png

4)、执行chmod +x gcc给脚本添加执行权限

chmod +x gcc

2、对g++增加-fsigned-char选项

1)使用which g++命令寻找g++所在路径(一般位于/usr/bin/g++)

which g++


2)
更改g++的名字(比如改成g++-arm

mv /usr/bin/g++   /usr/bin/g++-arm

3)、进入g++所在目录执行vi g++,并填入如下内容保存:

#! /bin/sh

/usr/bin/g++-arm -fsigned-char "$@"

cd /usr/bin/

vi g++

image.png

4)、执行chmod +x g++给脚本添加执行权限

chmod +x g++

3、对c++增加-fsigned-char选项

1)使用which c++命令寻找g++所在路径(一般位于/usr/bin/c++)

which c++


2)
更改c++的名字(比如改成c++-arm

mv /usr/bin/c++   /usr/bin/c++-arm

3)、进入c++所在目录执行vi c++,并填入如下内容保存:

#! /bin/sh

/usr/bin/c++-arm -fsigned-char "$@"

cd /usr/bin/

vi c++

image.png

4)、执行chmod +x c++给脚本添加执行权限

chmod +x c++

 

4移植分析

使用checkSo工具(获取地址:https://bbs.huaweicloud.com/forum/thread-22679-1-1.html)检查Kafka-0.8.2.2对应x86的安装包(kafka_2.10-0.8.2.2.tgz)或源码包是否有依赖x86so文件,通过检查Kafka-2.10-0.8.2.2对应x86安装包发现有依赖的“liblz4-java.so,lz4-1.2.0.jar”和“libsnappyjava.so,snappy-java-1.1.1.7.jar”

image.png

需要先编译lz4-1.2.0.jarsnappy-java-1.1.1.7.jar使其中包含的liblz4-java.solibsnappyjava.so使能arm,编译过程见 5 依赖库编译

5依赖库编译

5.1编译lz4-1.2.0.jar

1、从github网站下载源码并解压

wget https://github.com/lz4/lz4-java/archive/1.2.0.zip

unzip   1.2.0.zip

2、进入解压目录

cd lz4-java-1.2.0/

image.png

3、修改build.xml增加-fsigned-char

vi build.xml

增加如下内容

      <compilerarg   value="-fsigned-char"/>

image.png

4、修改ivy.xmllz4-java编译后的版本号

vi ivy.xml

注释如下红框内注释内容,并增加如下行

  <info   organisation="net.jpountz.lz4" module="lz4"   revision="1.2.0" />

image.png

5、执行ant编译命令进行编译

ant

image.png

报上图错误时执行ant ivy-bootstrap手动下载ivy-2.2.0.jar

【注】:如通过ant ivy-bootstrap无法下载ivy-2.2.0.jar,可以通过wget手动下载ivy-2.2.0.jarwget http://repo1.maven.org/maven2/org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar;

6、重新执行ant编译

ant

image.png

7、查看编译后的lz4-1.2.0.jar

cd   dist/

image.png

8、将编译的lz4-1.2.0.jar替换到本地maven仓和本地gradle

cp   lz4-1.2.0.jar /root/.m2/repository/net/jpountz/lz4/lz4/1.2.0/

cp lz4-1.2.0.jar   /gradleRepository/caches/modules-2/files-2.1/net.jpountz.lz4/lz4/1.2.0/cd301e9a481eae5b68c53267100aeca43b782b9f/


 

5.2编译snappy-java-1.1.1.7.jar

SnappyGoogle开源的压缩/解压缩库,snappy-java封装了其接口

1)从github网站下载源码并解压

wget https://github.com/xerial/snappy-java/archive/1.1.1.7.zip

mv 1.1.1.7.zip snappy-java-1.1.1.7.zip

unzip snappy-java-1.1.1.7.zip

cd snappy-java-1.1.1.7

image.png

2)修改Makefile文件中snappy源码的下载路径:

vi Makefile

注释如下红框内注释行,并增加

curl   -o$@   http://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.1.tar.gz/8887e3b7253b22a31f5486bca3cbc1c2/snappy-$(VERSION).tar.gz

image.png

注】因为默认的路径已经失效,需要如下使用新的下载路径:http://repository.timesys.com/buildsources/s/snappy/snappy-1.0.4/snappy-1.0.4.tar.gz

3)执行yum -y install libstdc++* glibc*安装相关依赖解决

yum -y   install libstdc++* glibc*

4)修改sbt文件中sbt-launch.jar的下载地址

vim   sbt

注释如下红框内注释行,并增加

declare   sbt_launch_repo="http://dl.bintray.com/typesafe/ivy-releases\

image.png

4)执行make编译并查看编译后的snappy-java-1.1.1.7.jar

make

cd   target/

image.png

5)将编译后的snappy-java-1.1.1.7.jar覆盖到本地maven仓和本地gradle

cp   snappy-java-1.1.1.7.jar /root/.m2/repository/org/xerial/snappy/snappy-java/1.1.1.7/

cp   snappy-java-1.1.1.7.jar   /root/.m2/repository/org/xerial/snappy/snappy-java/1.1.1.7/

cp   snappy-java-1.1.1.7.jar   /gradleRepository/caches/modules-2/files-2.1/org.xerial.snappy/snappy-java/1.1.1.7/33b6965e9364145972035c30a45a996aad2bf789/


【注】编译过程报错参考https://bbs.huaweicloud.com/forum/thread-67215-1-1.html

 

6编译安装

1、从github网站下载源码并解压

wget https://archive.apache.org/dist/kafka/0.8.2.2/kafka-0.8.2.2-src.tgz

tar -zxvf   kafka-0.8.2.2-src.tgz

2、进入解压目录

cd   kafka-0.8.2.2-src/

image.png

3、修改build.gradle

vim build.gradle

 

增加如下内容:

ScalaCompileOptions.metaClass.daemonServer   = true

ScalaCompileOptions.metaClass.fork   = true

ScalaCompileOptions.metaClass.useAnt   = false

ScalaCompileOptions.metaClass.useCompileDaemon   = false

image.png

4、执行gradle -g /$UserHome/gradleRepository clean

gradle   -g /$UserHome/gradleRepository clean

image.png

5、执行gradle -g /$UserHome/gradleRepository releaseTarGz -info

gradle   -g /$UserHome/gradleRepository releaseTarGz -info

image.png

6、查看编译的文件

cd   core/build/distributions/

image.png

【注】编译后有x86jar依赖情况下,需要参考“5依赖库编译”解决依赖后重新编译kafka,直到没有依赖即可。

7验证

1、编译验证

使用checkSo工具(获取地址:https://bbs.huaweicloud.com/forum/thread-22679-1-1.html)检查编译后的kafka_2.11-1.1.0.tgz是否不再含有依赖的x86架构的so文件,检查方法参考工具中的 《CheckSo使用说明.docx》,如果还有依赖的x86架构的so文件,则需要继续完成对应jar包的编译,直到无依赖的x86架构的so文件后,再次编译该组件并通过checkSo工具检查确认,编译后的组件包不再有依赖的x86架构的so文件则表明编译成功。

2、功能验证

参考https://www.huaweicloud.com/kunpeng/software/kafka.html

8参考信息

1https://www.huaweicloud.com/kunpeng/software/kafka.html

 

9FAQ

1、  执行gradle -g /$UserHome/gradleRepository clean出现“Could not create task ‘:core:compileScala’”报错,详细报错如下

image.png

解决方法

vim build.gradle

 

增加如下内容:

ScalaCompileOptions.metaClass.daemonServer   = true

ScalaCompileOptions.metaClass.fork   = true

ScalaCompileOptions.metaClass.useAnt   = false

ScalaCompileOptions.metaClass.useCompileDaemon   = false

image.png


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

Linton林小顿

发帖: 152粉丝: 6

发消息 + 关注

发表于2020年10月22日 11:09:02
直达本楼层的链接
沙发
显示全部楼层

干货满满,感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

发帖: 148粉丝: 15

发消息 + 关注

发表于2020年10月22日 15:11:18
直达本楼层的链接
板凳
显示全部楼层

厉害

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

zykpcxzx

发帖: 6粉丝: 0

发消息 + 关注

发表于2020年10月22日 18:03:09
直达本楼层的链接
地板
显示全部楼层

image.png 这里下载ivy-2.2.0.jar 进行重新 执行 ant 编译时 还是会报错的 image.png

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

五湖四海@银河护卫队

发帖: 176粉丝: 73

级别 : 版主,版块专家

发消息 + 关注

发表于2020年10月22日 19:11:36
直达本楼层的链接
5#
显示全部楼层

回复:zykpcxzx 发表于 2020-10-22 18:03 这里下载ivy-2.2.0.jar 进行重新 执行 ant 编译时 还是会报错的

把详细操作步骤贴出来,看下是不是ivy-2.2.0.jar下载的不完整或放的位置不对

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

火灵

发帖: 172粉丝: 11

发消息 + 关注

发表于2020年10月22日 23:40:04
直达本楼层的链接
6#
显示全部楼层

谢谢分享!

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200