鲲鹏迁移——DevKit

news2024/12/24 2:56:13

参考文档

鲲鹏DevKit开发套件下载-鲲鹏社区鲲鹏社区是面向鲲鹏合作伙伴、开发者的全产业社区,集学习、实验、认证等功能为一体,是鲲鹏计算产业的官方社区。icon-default.png?t=N7T8https://www.hikunpeng.com/developer/devkit/download

鲲鹏社区-官网丨凝心聚力 共创行业新价值鲲鹏社区是面向鲲鹏合作伙伴、开发者的全产业社区,集学习、实验、认证等功能为一体,是鲲鹏计算产业的官方社区。icon-default.png?t=N7T8https://www.hikunpeng.com/document/detail/zh/kunpengdevps/handon_tutorials/bestpractice/kunpengdeppractice_21_0011.html

[root@openeuler40 ~]# setenforce 0
[root@openeuler40 ~]# ls /resourses/
[root@openeuler40 ~]#
[root@openeuler40 ~]# mkdir /devkit/
[root@openeuler40 ~]# tar -xf /resourses/DevKit-All-24.0.RC1-Linux-Kunpeng.tar.gz /devkit/
[root@openeuler40 ~]# ls /devkit/
DevKit-All-24.0.RC1-Linux-Kunpeng
[root@openeuler40 ~]# cd /devkit/DevKit-All-24.0.RC1-Linux-Kunpeng/
[root@openeuler40 DevKit-All-24.0.RC1-Linux-Kunpeng]#
[root@openeuler40 DevKit-All-24.0.RC1-Linux-Kunpeng]# ./install.sh(参考社区文档安装)

安装后验证:

​

[root@openeuler40 ~]# cd /opt/DevKit/tools/

[root@openeuler40 tools]# ./devkit -v

24.0.RC1

[root@openeuler40 tools]#

[root@vm1 ~]# firefox https://10.2.35.40:8086
​

​

[root@vm1 ~]# mkdir /testdir/

[root@vm1 testdir]# wget https://repo1.maven.org/maven2/io/netty/netty-all/4.1.34.Final/netty-all-4.1.34.Final.jar

[root@vm1 testdir]# ls

netty-all-4.1.34.Final.jar

[root@vm1 testdir]#

在浏览器上传软件包,进行应用迁移评估(参考社区文档)
​

Oplocal:在x86_64平台上安装devkit

[root@oplocal ~]# setenforce 0
[root@oplocal ~]# vim /etc/selinux/config 
[root@oplocal ~]# cat /etc/selinux/config | grep ^SELINUX=
SELINUX=permissive
[root@oplocal ~]#

[root@oplocal ~]# ls DevKit-All-24.0.RC1-Linux-x86-64.tar.gz 文件自行下载上传
DevKit-All-24.0.RC1-Linux-x86-64.tar.gz
[root@oplocal ~]#
[root@oplocal ~]# mkdir /devkit/
[root@oplocal ~]# tar -xf DevKit-All-24.0.RC1-Linux-x86-64.tar.gz -C /devkit/
[root@oplocal ~]# ls /devkit/
DevKit-All-24.0.RC1-Linux-x86-64
[root@oplocal ~]# cd /devkit/DevKit-All-24.0.RC1-Linux-x86-64/
[root@oplocal DevKit-All-24.0.RC1-Linux-x86-64]#
[root@oplocal DevKit-All-24.0.RC1-Linux-x86-64]# cat /etc/yum.repos.d/openeuler.repo
[openEuler]
name=openEuler
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64/
enabled=1
gpgcheck=0
注:自行配置yum源,默认没有
[root@oplocal DevKit-All-24.0.RC1-Linux-x86-64]#
[root@oplocal DevKit-All-24.0.RC1-Linux-x86-64]# ./install.sh(参考社区文档安装)

在oplocal下载nginx的rpm包:

[root@oplocal ~]# mkdir /pkg_download
[root@oplocal ~]# yum -y install --downloadonly --destdir=/pkg_download nginx
[root@oplocal ~]# ls /pkg_download/
gd-2.2.5-6.oe1.x86_64.rpm
gperftools-libs-2.7-7.oe1.x86_64.rpm
libunwind-1.3.1-3.oe1.x86_64.rpm
libwebp-1.0.0-5.oe1.x86_64.rpm
nginx-1.16.1-2.oe1.x86_64.rpm
nginx-all-modules-1.16.1-2.oe1.noarch.rpm
nginx-filesystem-1.16.1-2.oe1.noarch.rpm
nginx-mod-http-image-filter-1.16.1-2.oe1.x86_64.rpm
nginx-mod-http-perl-1.16.1-2.oe1.x86_64.rpm
nginx-mod-http-xslt-filter-1.16.1-2.oe1.x86_64.rpm
nginx-mod-mail-1.16.1-2.oe1.x86_64.rpm
nginx-mod-stream-1.16.1-2.oe1.x86_64.rpm
[root@oplocal ~]#
[root@vm1 ~]# mkdir /oplocal_download
[root@vm1 ~]# scp -r 192.168.99.100:/pkg_download/* /oplocal_download
[root@vm1 ~]# ls /oplocal_download/
gd-2.2.5-6.oe1.x86_64.rpm
gperftools-libs-2.7-7.oe1.x86_64.rpm
libunwind-1.3.1-3.oe1.x86_64.rpm
libwebp-1.0.0-5.oe1.x86_64.rpm
nginx-1.16.1-2.oe1.x86_64.rpm
nginx-all-modules-1.16.1-2.oe1.noarch.rpm
nginx-filesystem-1.16.1-2.oe1.noarch.rpm
nginx-mod-http-image-filter-1.16.1-2.oe1.x86_64.rpm
nginx-mod-http-perl-1.16.1-2.oe1.x86_64.rpm
nginx-mod-http-xslt-filter-1.16.1-2.oe1.x86_64.rpm
nginx-mod-mail-1.16.1-2.oe1.x86_64.rpm
nginx-mod-stream-1.16.1-2.oe1.x86_64.rpm
[root@vm1 ~]#
自行上传nginx的rpm包,查看迁移报告

在oplocal上源码安装nginx:

下载源码包:
[root@oplocal ~]# wget https://nginx.org/download/nginx-1.26.0.tar.gz
[root@oplocal ~]# ls nginx-1.26.0.tar.gz 
nginx-1.26.0.tar.gz
[root@oplocal ~]# tar -xf nginx-1.26.0.tar.gz -C /usr/src/   解压
[root@oplocal ~]# ls /usr/src/nginx-1.26.0/
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[root@oplocal ~]#
[root@oplocal ~]# cd /usr/src/nginx-1.26.0/

配置:
[root@oplocal nginx-1.26.0]# useradd -s /sbin/nologin nginx
[root@oplocal nginx-1.26.0]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx
输出略
[root@oplocal nginx-1.26.0]# ls /usr/src/nginx-1.26.0/objs/
autoconf.err  ngx_auto_config.h   ngx_modules.c
Makefile      ngx_auto_headers.h  src
[root@oplocal nginx-1.26.0]#

编译:(注:gcc 、gcc-c++、make等包在安装devkit时已经安装了)
[root@oplocal nginx-1.26.0]# make 输出略
[root@oplocal nginx-1.26.0]# ls /usr/src/nginx-1.26.0/objs/
autoconf.err  nginx    ngx_auto_config.h   ngx_modules.c  src
Makefile      nginx.8  ngx_auto_headers.h  ngx_modules.o
[root@oplocal nginx-1.26.0]# /usr/src/nginx-1.26.0/objs/nginx -V(已编译出二进制文件)
nginx version: nginx/1.26.0
built by gcc 7.3.0 (GCC) 
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@oplocal nginx-1.26.0]#

安装:
[root@oplocal nginx-1.26.0]# ls /usr/local/nginx
ls: cannot access '/usr/local/nginx': No such file or directory
[root@oplocal nginx-1.26.0]#
[root@oplocal nginx-1.26.0]# make install 输出略
[root@oplocal nginx-1.26.0]# ls /usr/local/nginx/
conf  html  logs  sbin
[root@oplocal nginx-1.26.0]# ls /usr/local/nginx/sbin/nginx 
/usr/local/nginx/sbin/nginx
[root@oplocal nginx-1.26.0]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.26.0
built by gcc 7.3.0 (GCC) 
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@oplocal nginx-1.26.0]#
注:不想使用绝对路径,可使用软连接或配置环境变量

在arm平台源码安装nginx:

[root@openeuler40 ~]# mkdir /pkg_download
[root@openeuler40 ~]# cd /pkg_download
[root@openeuler40 pkg_download]# wget https://nginx.org/download/nginx-1.26.0.tar.gz
[root@openeuler40 pkg_download]# tar -xf nginx-1.26.0.tar.gz -C /usr/src/
[root@openeuler40 pkg_download]# cd /usr/src/nginx-1.26.0/
[root@openeuler40 nginx-1.26.0]#
[root@openeuler40 nginx-1.26.0]# useradd -s /sbin/nologin nginx
[root@openeuler40 nginx-1.26.0]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx
[root@openeuler40 nginx-1.26.0]# make && make install
[root@openeuler40 nginx-1.26.0]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.26.0
built by gcc 7.3.0 (GCC) 
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@openeuler40 nginx-1.26.0]#

清理环境:源码安装的软件可以直接删除安装目录卸载
[root@openeuler40 ~]# rm -rf /usr/local/nginx/
[root@openeuler40 ~]# rm -rf /usr/src/nginx-1.26.0/
[root@openeuler40 ~]# userdel -r nginx

Cmake迁移评估:

下载x86的软件包,在x86平台测试:
[root@oplocal pkg_download]# ls cmake-3.19.8-Linux-x86_64.tar.gz 
cmake-3.19.8-Linux-x86_64.tar.gz
[root@oplocal pkg_download]# 自行下载上传到指定目录

[root@oplocal pkg_download]# mkdir /cmake
[root@oplocal pkg_download]# tar -xf cmake-3.19.8-Linux-x86_64.tar.gz -C /cmake/
[root@oplocal pkg_download]# ls /cmake/
cmake-3.19.8-Linux-x86_64
[root@oplocal pkg_download]# ls /cmake/cmake-3.19.8-Linux-x86_64/
bin  doc  man  share
[root@oplocal pkg_download]# ls /cmake/cmake-3.19.8-Linux-x86_64/bin/
ccmake  cmake  cmake-gui  cpack  ctest
[root@oplocal pkg_download]#
[root@oplocal pkg_download]#  /cmake/cmake-3.19.8-Linux-x86_64/bin/cmake --help
输出略,能正常输出帮助信息
[root@oplocal pkg_download]# rm -rf /cmake/ 清理环境
在arm平台测试:
[root@openeuler40 ~]# ls /pkg_download/cmake-3.19.8-Linux-x86_64.tar.gz 
/pkg_download/cmake-3.19.8-Linux-x86_64.tar.gz
[root@openeuler40 ~]#
[root@openeuler40 ~]# mkdir /cmake
[root@openeuler40 ~]# tar -xf /pkg_download/cmake-3.19.8-Linux-x86_64.tar.gz -C /cmake
[root@openeuler40 ~]# /cmake/cmake-3.19.8-Linux-x86_64/bin/cmake --help
-bash: /cmake/cmake-3.19.8-Linux-x86_64/bin/cmake: cannot execute binary file: Exec format error
[root@openeuler40 ~]#无法执行,此时是arm架构
[root@openeuler40 ~]# uname -r
4.19.90-2003.4.0.0036.oe1.aarch64
[root@openeuler40 ~]#

在arm平台和x86平台的devkit都可执行迁移评估:

评估迁移到arm的CentOS7.6:有可以替换的包下载

[root@centos7 ~]# mkdir /cmake
[root@centos7 ~]# cd /cmake
[root@centos7 cmake]# wget https://archive.kernel.org/centos-vault/altarch/7.6.1810/os/aarch64/Packages/cmake-2.8.12.2-2.el7.aarch64.rpm
[root@centos7 cmake]# wget https://archive.kernel.org/centos-vault/altarch/7.6.1810/os/aarch64/Packages/cmake-gui-2.8.12.2-2.el7.aarch64.rpm
[root@centos7 cmake]# ls
cmake-2.8.12.2-2.el7.aarch64.rpm  cmake-gui-2.8.12.2-2.el7.aarch64.rpm
[root@centos7 cmake]#
注:rpm包可以直接安装,也可以提取出其中的二进制文件进行替换
[root@centos7 cmake]# rpm2cpio cmake-2.8.12.2-2.el7.aarch64.rpm | cpio -div 输出略
[root@centos7 cmake]# rpm2cpio cmake-gui-2.8.12.2-2.el7.aarch64.rpm | cpio -div 输出略
[root@centos7 cmake]# ls usr/bin/
ccmake  cmake  cmake-gui  cpack  ctest
[root@centos7 cmake]# ./usr/bin/cmake --help
./usr/bin/cmake: error while loading shared libraries: libarchive.so.13: cannot open shared object file: No such file or directory
[root@centos7 cmake]# 此时缺少共享库
使用ldd命令查询所需的共享库:
[root@centos7 cmake]# ldd ./usr/bin/cmake 输出略
[root@centos7 cmake]# ldd ./usr/bin/cmake  | grep 'not found'
	libarchive.so.13 => not found
[root@centos7 cmake]#

查看什么软件包提供了对应的文件:
[root@centos7 cmake]# yum provides "*/libarchive.so.13"
[root@centos7 cmake]# yum -y install libarchive-3.1.2-14.el7_7.aarch64
[root@centos7 cmake]# ls /usr/lib64/libarchive.so.13
/usr/lib64/libarchive.so.13
[root@centos7 cmake]# ll /usr/lib64/libarchive.so.13
lrwxrwxrwx. 1 root root 20 May 15 09:18 /usr/lib64/libarchive.so.13 -> libarchive.so.13.1.2
[root@centos7 cmake]# ./usr/bin/cmake –help
[root@centos7 cmake]# uname -r
4.18.0-193.28.1.el7.aarch64
[root@centos7 cmake]#

尝试迁移cmake到arm的openeuler20.03:

此时SP3有可以替换的包,但是20.03没有:

方法一:

[root@openeuler40 ~]# cd /cmake/
[root@openeuler40 cmake]# wget https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-Linux-aarch64.tar.gz
[root@openeuler40 cmake]# ls
cmake-3.19.8-Linux-aarch64.tar.gz  cmake-3.19.8-Linux-x86_64
[root@openeuler40 cmake]# tar -xf cmake-3.19.8-Linux-aarch64.tar.gz
[root@openeuler40 cmake]#
[root@openeuler40 cmake]# ls cmake-3.19.8-Linux-aarch64/bin/cmake
[root@openeuler40 cmake]# cmake-3.19.8-Linux-aarch64/bin/cmake --help 可以使用

方法二:

下载cmake的源码包,在arm的openeuler 20.03上完成编译,并验证(+5/-0)
[root@openeuler40 ~]# cd /cmake/
[root@openeuler40 cmake]# wget https://github.com/Kitware/CMake/archive/refs/tags/v3.19.8.tar.gz
[root@openeuler40 cmake]# tar -xf v3.19.8.tar.gz
[root@openeuler40 cmake]# cd CMake-3.19.8/
[root@openeuler40 CMake-3.19.8]# ls 输出略
[root@openeuler40 CMake-3.19.8]# yum -y install openssl-devel
[root@openeuler40 CMake-3.19.8]# ./bootstrap --prefix=/cmake/cmakeinstall
[root@openeuler40 CMake-3.19.8]# make && make install
[root@openeuler40 CMake-3.19.8]# ls /cmake/cmakeinstall/bin/
cmake  cpack  ctest
[root@openeuler40 CMake-3.19.8]# /cmake/cmakeinstall/bin/cmake  --help 可以使用
[root@openeuler40 CMake-3.19.8]# cd
[root@openeuler40 ~]# rm -rf /cmake/
[root@openeuler40 ~]#

源码迁移:

迁移smartdenovo到arm的openeuler 20.03:

[root@vm1 ~]# ls smartdenovo-master.zip 自行获取文件
smartdenovo-master.zip
[root@vm1 ~]#

按要求修改源代码即可(参考社区文档),修改后上传到arm平台主机:

[root@openeuler40 ~]# ls /pkg_download/smartdenovo-master.zip /pkg_download/BoostKit-ksl_2.2.0.zip 
/pkg_download/BoostKit-ksl_2.2.0.zip
/pkg_download/smartdenovo-master.zip
[root@openeuler40 ~]#
[root@openeuler40 ~]# cd /pkg_download/
[root@openeuler40 pkg_download]# mkdir boostkit
[root@openeuler40 pkg_download]# unzip BoostKit-ksl_2.2.0.zip -d boostkit
Archive:  BoostKit-ksl_2.2.0.zip
  inflating: boostkit/boostkit-ksl-2.2.0-1.aarch64.rpm  
  inflating: boostkit/Kunpeng BoostKit User License Agreement 2.0.txt  
  inflating: boostkit/鲲鹏应用使能套件BoostKit用户许可协议 2.0.txt  
[root@openeuler40 pkg_download]#
[root@openeuler40 boostkit]# rpm -ivh boostkit-ksl-2.2.0-1.aarch64.rpm
[root@openeuler40 boostkit]# env | grep LD_LIBRARY_PATH
[root@openeuler40 boostkit]# LD_LIBRARY_PATH=/usr/local/ksl/lib:
[root@openeuler40 boostkit]# env | grep LD_LIBRARY_PATH
[root@openeuler40 boostkit]# set | grep LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/ksl/lib:
[root@openeuler40 boostkit]# export LD_LIBRARY_PATH
[root@openeuler40 boostkit]# env | grep LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/ksl/lib:
[root@openeuler40 boostkit]#
[root@openeuler40 pkg_download]# mkdir smart
[root@openeuler40 pkg_download]# unzip smartdenovo-master.zip -d smart
[root@openeuler40 pkg_download]# cd smart/smartdenovo-master/
[root@openeuler40 smartdenovo-master]#
[root@openeuler40 smartdenovo-master]# vim Makefile 查看文件是否修改 (参考社区修改)
https://www.hikunpeng.com/document/detail/zh/kunpengdevps/handon_tutorials/bestpractice/smartdenovopt_21_0012.html
[root@openeuler40 smartdenovo-master]# vim ksw.c 查看文件是否修改
[root@openeuler40 smartdenovo-master]# make clean
rm -f *.o *.gcda *.gcno *.gcov gmon.out pairaln wtpre wtcyc wtmer wtzmo wtobt wtclp wtext wtlay wtcns wtmsa wtdif wtcorr wtjnt wtgbo
[root@openeuler40 smartdenovo-master]#
[root@openeuler40 smartdenovo-master]# vim wtlay.h

[root@openeuler40 smartdenovo-master]# make install 
cp pairaln wtpre wtcyc wtmer wtzmo wtobt wtclp wtext wtgbo wtlay wtcns wtmsa /usr/local/bin
[root@openeuler40 smartdenovo-master]#
[root@openeuler40 smartdenovo-master]# ls /usr/local/bin/
pairaln  wtclp  wtcns  wtcyc  wtext  wtgbo  wtlay  wtmer  wtmsa  wtobt  wtpre  wtzmo
[root@openeuler40 smartdenovo-master]#

软件包重构:

[root@vm1 ~]# mkdir /vm1_download
[root@vm1 ~]# cd /vm1_download
[root@vm1 vm1_download]# wget https://ci.bigtop.apache.org/view/Releases/job/Bigtop-3.0.0/DISTRO=centos-7,PLATFORM=amd64-slave/lastSuccessfulBuild/artifact/output/kafka/noarch/kafka-2.4.1-1.el7.noarch.rpm
[root@vm1 vm1_download]# ls
kafka-2.4.1-1.el7.noarch.rpm
[root@vm1 vm1_download]#

[root@vm1 vm1_download]# wget https://mirror.iscas.ac.cn/kunpeng/maven/org/rocksdb/rocksdbjni/5.18.3/rocksdbjni-5.18.3.jar
[root@vm1 vm1_download]# ls
kafka-2.4.1-1.el7.noarch.rpm  rocksdbjni-5.18.3.jar
[root@vm1 vm1_download]#
[root@openeuler40 ~]# yum -y install rpmrebuild rpm-build  装包,用于打包

重构完成后可以下载重构包安装测试:
[root@vm1 Downloads]# scp kafka-2.4.1-1.el7.aarch64.rpm root@10.2.35.40:/pkg_download
[root@openeuler40 ~]# ls /pkg_download/kafka-2.4.1-1.el7.aarch64.rpm 
/pkg_download/kafka-2.4.1-1.el7.aarch64.rpm
[root@openeuler40 ~]#
[root@openeuler40 ~]# rpm -ivh /pkg_download/kafka-2.4.1-1.el7.aarch64.rpm
error: Failed dependencies:
	bigtop-utils >= 0.7 is needed by kafka-2.4.1-1.el7.aarch64
	zookeeper is needed by kafka-2.4.1-1.el7.aarch64
[root@openeuler40 ~]# 缺少两个依赖
[root@openeuler40 ~]# cd /pkg_download/
[root@openeuler40 pkg_download]# wget https://mirrors.aliyun.com/openeuler/openEuler-20.03-LTS-SP4/everything/aarch64/Packages/zookeeper-3.6.1-2.6.oe2003sp4.noarch.rpm
[root@openeuler40 pkg_download]# wget https://ci.bigtop.apache.org/view/Releases/job/Bigtop-3.2.1-aarch64/DISTRO=centos-7,PLATFORM=aarch64-slave,PRODUCT=bigtop-utils/lastSuccessfulBuild/artifact/output/bigtop-utils/noarch/bigtop-utils-3.2.1-1.el7.noarch.rpm

[root@openeuler40 pkg_download]# rpm -ivh /pkg_download/zookeeper-3.6.1-2.6.oe2003sp4.noarch.rpm /pkg_download/bigtop-utils-3.2.1-1.el7.noarch.rpm /pkg_download/kafka-2.4.1-1.el7.aarch64.rpm 
warning: /pkg_download/zookeeper-3.6.1-2.6.oe2003sp4.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID fb37bc6f: NOKEY
error: Failed dependencies:
	java-1.8.0-openjdk is needed by zookeeper-3.6.1-2.6.oe2003sp4.noarch
[root@openeuler40 pkg_download]#

[root@openeuler40 pkg_download]# yum list | grep java | grep 1.8.0
[root@openeuler40 pkg_download]# yum -y install java-1.8.0-openjdk.aarch64
[root@openeuler40 pkg_download]# rpm -ivh /pkg_download/zookeeper-3.6.1-2.6.oe2003sp4.noarch.rpm /pkg_download/bigtop-utils-3.2.1-1.el7.noarch.rpm /pkg_download/kafka-2.4.1-1.el7.aarch64.rpm

[root@openeuler40 bin]# cd /opt/zookeeper/bin/
[root@openeuler40 bin]# ./zkServer.sh start 启动zookeeper
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@openeuler40 bin]#

[root@openeuler40 bin]# ls /opt/zookeeper/lib/zookeeper-*
/opt/zookeeper/lib/zookeeper-3.6.1.jar
/opt/zookeeper/lib/zookeeper-jute-3.6.1.jar
/opt/zookeeper/lib/zookeeper-prometheus-metrics-3.6.1.jar
[root@openeuler40 bin]#


[root@openeuler40 bin]# cp /opt/zookeeper/lib/zookeeper-3.6.1.jar /opt/zookeeper/lib/zookeeper-jute-3.6.1.jar /usr/lib/kafka/libs/

[root@openeuler40 bin]# cd /usr/lib/kafka/bin
[root@openeuler40 bin]# ./kafka-server-start.sh ../config/server.properties

注:此窗口被占用,下面命令另开一个终端

功能验证:
[root@openeuler40 ~]# cd /usr/lib/kafka/bin
[root@openeuler40 bin]# kafka-topics.sh --zookeeper localhost:2181 --create --topic sandbox-experiment -partitions 2 --replication-factor 1
Created topic sandbox-experiment.
[root@openeuler40 bin]#创建主题

启动消费者服务:
[root@openeuler40 bin]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sandbox-experiment
注:此终端被占用,下面命令另开一个终端

启动生产者服务:
[root@openeuler40 ~]# cd /usr/lib/kafka/bin
[root@openeuler40 bin]# kafka-console-producer.sh --broker-list localhost:9092 --topic sandbox-experiment
>
>hello 发送消息

消费者服务可以接收到消息:
[root@openeuler40 bin]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sandbox-experiment
hello

自行关闭所有启动的服务:
Kafka的服务可以使用kill或ctrl+c结束
[root@openeuler40 bin]# cd /opt/zookeeper/bin/
[root@openeuler40 bin]# ./zkServer.sh stop
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[root@openeuler40 bin]#

源码迁移megahit:

[root@openeuler40 sourcecode]# ls /megahit-master.zip 
/megahit-master.zip
[root@openeuler40 sourcecode]#
[root@openeuler40 sourcecode]# pwd
/opt/DevKit/workspace/devadmin/porting/sourcecode
[root@openeuler40 sourcecode]#
[root@openeuler40 sourcecode]# unzip /megahit-master.zip -d .
[root@openeuler40 sourcecode]# mv megahit-master/ megahit
[root@openeuler40 sourcecode]# yum -y install git cmake
[root@openeuler40 sourcecode]# cd megahit/
[root@openeuler40 megahit]# git init
Initialized empty Git repository in /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/.git/
[root@openeuler40 megahit]# git submodule update --init
[root@openeuler40 megahit]#
[root@openeuler40 megahit]# mkdir build && cd build
[root@openeuler40 build]# cmake .. -DCMAKE_BUILD_TYPE=Release
[root@openeuler40 build]# ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile
[root@openeuler40 build]#

[root@openeuler40 build]# cp /opt/DevKit/devkitplugins/inline_asm/config/KunpengTrans.h /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/src/utils
[root@openeuler40 build]# (以上文件应该在迁移源码修改后复制,此处提前复制了)
[root@openeuler40 build]# chown -R devkit:devkit ../../megahit/

按要求修改源码,删除选项或应用自动修复:略

Kmrms.h中return语句修改如下:

修改后:

[root@openeuler40 build]# make 编译(有警告,但能正常编译完成)

[root@openeuler40 build]# make simple_test (正常运行无报错)

注:

如果编译时报错,有文档修改错误,可以重新修改文件,然后make clean清理编译环境再重新make

清理环境:

[root@openeuler40 sourcecode]# rm -rf megahit/

[root@openeuler40 sourcecode]# rm -rf /megahit-master.zip

Nginx专项软件迁移:

注:此时无法执行迁移,因为本机是openeuler 20.03的,只能在CentOS7.6或openeuler 20.03-SP1的arm架构主机上执行操作

实现使用Python进行字符串拼接性能增强:

[root@openeuler40 testpython]# time python test.py  string_plus
['test.py', 'string_plus']
1100000000

real	0m8.678s
user	0m8.471s
sys	0m0.184s
[root@openeuler40 testpython]#
[root@openeuler40 testpython]# cat test.py 
import sys

BASE_STRING = "Hello world"
LOOP_TIMES = 100000000
STRING_LIST = [BASE_STRING] * LOOP_TIMES

def string_plus():
	new_string = ''
	for string in STRING_LIST:
		new_string += string
	print(len(new_string))
	

def string_join():
	new_string = ''.join(STRING_LIST)
	print(len(new_string))
	

def main():
	function_map = {
		'string_plus': string_plus,
		'string_join': string_join,
	}
	print(sys.argv)
	_, function = sys.argv
	if function in function_map:
		function_map[function]()
	else:
		print('function {} not exist'.format(function))
		
		
if __name__ == "__main__":
	main()
	
[root@openeuler40 testpython]#
[root@openeuler40 testpython]# time /opt/test.py string_plus
['/opt/test.py', 'string_plus']
1100000000

real	0m9.504s
user	0m8.486s
sys	0m0.218s
[root@openeuler40 testpython]#
[root@openeuler40 testpython]# time /opt/test.py string_join
['/opt/test.py', 'string_join']
1100000000

real	0m4.767s
user	0m4.583s
sys	0m0.176s
[root@openeuler40 testpython]#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1709845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录一次开源 MaxKey 安装部署

官方文档:https://www.maxkey.top/doc/docs/intro/ 开源代码:https://toscode.mulanos.cn/dromara/MaxKey 发行版:https://toscode.mulanos.cn/dromara/MaxKey/releases 一、准备工作 yum install -y yum-utils yum-config-manager --add-r…

CSS 之 自定义属性(变量)

一、简介 ​ CSS的自定义属性,又称为CSS变量或级联变量,用于定义一个带有值的、可重复使用的CSS属性(变量)。其包含的值可以在其作用域内的任意属性上重复使用,在使用时需要借助var()函数获取自定义属性的值。当自定义…

text-embedding 嵌入模型

为什么使用embedding 计算机只能处理数字,但我们希望它能够理解文字、图片或其他形式的数据。这就是embedding的作用。它将这些复杂的数据转换成数字表示,就像给它们贴上了标签一样。这些数字表示不仅保留了原始数据的重要信息,还能在计算机…

短视频商城全套源码:开启电商新纪元

随着数字媒体的快速发展,短视频平台已经成为人们获取信息、娱乐和社交的重要渠道。在这样一个大背景下,短视频商城的兴起,无疑为电商行业带来了新的机遇和挑战。本文将探讨短视频商城全套源码的重要性,以及它如何助力商家和开发者…

Vulnhub - AI-WEB-1.0靶机教程

目录 站点信息收集 c段扫描 端口扫描 目录扫描 漏洞利用 使用 burp 抓包 查询数据库名 查询数据库下的表 查询表中的字段名 查询字段中的数据 --os-shell 上传一句话木马 下载地址:https://download.vulnhub.com/aiweb/AI-Web-1.0.7z 我们从站点信息收…

2024年区块链,物联网与信息技术国际会议(ICBITIT 2024)

2024年区块链,物联网与信息技术国际会议(ICBITIT 2024) 2024 International Conference on Blockchain, Internet of Things, and Information Technology 会议简介: 2024年区块链,物联网与信息技术国际会议&#xff…

【调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包】

调试笔记-系列文章目录 调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包 文章目录 调试笔记-系列文章目录调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包 前言一、调试环境操作系统:Ubuntu 22.04.4 LTS编译环境调试目标 二、调试步…

java函数编程-黑马学习笔记

第一章 01合格的函数 函数就是一个规则 合格的函数就是只要你输入相同,无论多少次调用,不论什么时间调用,输出是相同的。 函数可以引用外部的数据,但是需要去保证外部的数据不可变 static关键字修饰的静态方法本质上和函数没…

TCP 与 UDP

0. tcp 与 udp 的 异同特性 TCPUDPname传输控制协议用户数据报协议面向连接? 需要 传输数据前建立连接传输完毕后断开连接不需要可靠的传输数据? 可靠 有确认机制(三次握手) 有确认、窗口、重传、拥塞控制的机制保证数据可靠传输…

10Django项目--用户管理系统--改

对应视频链接点击直达 10Django项目--用户管理系统--改 对应视频链接点击直达改a,本质b,修改(更新) 页面相关a,index页面新增操作按钮b,修改(更新)页面c,路由和函数 OVER,不会有人不会吧不会的加Q139400651…

项目9-网页聊天室3(主界面之用户信息)

1.前端页面 CSS: 如何让img里的图片自适应div,且不变形_img自适应div大小 铺满且不变形-CSDN博客 JavaScript/jQuery 如何改变一个img元素的src属性|极客教程 (geek-docs.com) 2.要求 左上角显示用户的昵称和头像. 3.后端代码 3.1 添加拦截器 3.2 注册拦截器 …

深入解析MySQL 8中的角色与用户管理

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 深入解析MySQL 8中的角色与用户管理 前言角色和用户的基础概念用户(User)…

收银系统源码--零售连锁店铺如何选择适合自己的收银系统?

如果你现在还认为小便利店只要简单的收款,只有大型的连锁便利店才需要收银软件和管理软件,那你就错了,连锁品牌的便利店是必须要用到专业的收银软件,但是小微型的便利店更应该要用专门的软件, 在各行各业逐步革新互联网…

【ai】LiveKit Agent 的example及python本地开发模式工程实例

title: ‘LiveKit Agent Playground’ playgroundLiveKit Community playground的环境变量:LiveKit API # LiveKit API Configuration LIVEKIT_API_KEYYOUR_API_KEY LIVEKIT_API_SECRETYOUR_API_SECRET# Public configuration NEXT_PUBLIC_LIVEKIT_URLwss://YOUR_…

计算机网络基础 - 计算机网络和因特网(1)

计算机网络基础 计算机网络和因特网什么是 Internet?具体构造的的角度服务角度网络结构 网络边缘网络核心电路交换分组交换概述排队时延和分组丢失转发表和路由选择协议按照有无网络层的连接 分组交换 VS 电路交换 接入网DSL 因特网接入电缆因特网接入光纤到户 FTTH无线接入网…

十五、Python模块 1、(入门一定看!!!)「长期更新Python简单入门到适用」

首先什么是模块? 小伙伴们经常看我写的教程不难发现,前面我们用过几次模块就是sys的那个,其实python不仅标准库中包含了大量的模块(也被称之为准模块),还有大量的第三方模块,开发者也可以自己发…

图卷积神经网络的简史 及其与卷积神经网络的异同

图卷积神经网络(GCN)已经在处理图结构数据方面取得了巨大的成功。在本小节中,我们将深入探讨图卷积神经网络的起源、发展历程,并提供一个简单的Python代码实现示例,以帮助读者更好地理解这一概念。 图卷积神经网络的简…

Echarts图表库推荐以及使用Echarts实现饼图端头弧形效果

推荐Echarts图表库官方链接http://www.ppchart.com/#/ 下面是一段实现饼图端头弧形效果的Echarts代码 下面代码可以直接新建html文件运行看效果也可以看我下面贴的效果图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

【深度学习实战—8】:基于MediaPipe的人脸检测

✨博客主页&#xff1a;王乐予&#x1f388; ✨年轻人要&#xff1a;Living for the moment&#xff08;活在当下&#xff09;&#xff01;&#x1f4aa; &#x1f3c6;推荐专栏&#xff1a;【图像处理】【千锤百炼Python】【深度学习】【排序算法】 目录 &#x1f63a;一、Med…

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(八)

本系列课程&#xff0c;将重点讲解Phpsploit-Framework框架软件的基础使用&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 继续接上一篇文章内容&#xff0c;讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 现在&#xff0c;我们…