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

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

确定
我再想想
选择版块
092947bevjlmiytnwwd8ky.jpg 鲲鹏应用创新大赛微话题 【鲲鹏知识挑战赛】参与挑战,赢取精彩好礼! 汇聚鲲鹏领域技术专家大咖
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

五湖四海@银河护卫队

发帖: 106粉丝: 34

级别 : 版主

发消息 + 关注

发表于2020年07月07日 23:21:17 715 3
直达本楼层的链接
楼主
显示全部楼层
[大数据] Spark-2.2.0-bin-hadoop2.6移植指南 for 中标麒麟7.5 【鲲鹏920(ARM64) 】

1 Spark简介

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。

Spark是用于大规模数据处理的统一分析引擎,具有可伸缩、基于内存计算等特点,已经成为轻量级大数据快速处理的统一平台,各种不同的应用,如实时流处理、机器学习、交互式查询等,都可以通过Spark建立在不同的存储和运行系统上。

官方链接:http://spark.apache.org/

类别:大数据

语言: 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

R

3.1.1


Maven

3.5.4

参考下面安装说明

JDK

1.8.0_191

参考下面安装说明

Protoc

2.5.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 java-1.8.0*   bison* ncurses*

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 http://mirror.bit.edu.cn/apache//ant/binaries/apache-ant-1.9.14-bin.tar.gz

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

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

3、进入解压路径

cd apache-ant-1.9.14/

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

vi /etc/proflile

         5、使ANT_HOME环境变量生效

source /etc/proflile

 

3.5 gccg++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

         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++

       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++

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

chmod +x c++

 

3.6 安装Protoc

下载并解压源码:

wget   https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz

tar   -zxf protobuf-2.5.0.tar.gz

cd   protobuf-2.5.0

修改autogen.sh文件的第20-24行:

vi   autogen.sh

注释如下红框内注释内容并增加如下:

curl -L   https://github.com/google/googletest/archive/release-1.5.0.tar.gz | tar zx

mv googletest-release-1.5.0 gtest

image.png

打ARM补丁:

cp   protoc.patch ./src/google/protobuf/stubs/

cd   ./src/google/protobuf/stubs/

patch   -p1 < protoc.patch

cd   -

proctoc ARM补丁为:

补丁下载地址:https://bbs.huaweicloud.com/forum/forum.php?mod=attachment&aid=MTA2NDU0fDk4MDQ3ODFhfDE1OTQxMzIzNDB8MTIzMTI2fDQxODcz

编译并安装到系统默认目录:

./autogen.sh   && ./configure CFLAGS='-fsigned-char' && make && make   install

3.7 编译安装Snappy 1.1.3

下载并解压源码:

wget   https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz

tar   zxvf snappy-1.1.3.tar.gz

cd   snappy-1.1.3/

执行./configure进行编译配置:

./configure

  执行make进行编译:

make   -j32

      执行make install编译安装:

make   install

image.png

查看编译后的结果:

cd   /usr/local/lib

image.png

3.8 编译安装Hadoop-Snappy

通过git clone下载源码:

git   clone https://github.com/electrum/hadoop-snappy.git

修改src/main/native/Makefile.am文件:

vi   src/main/native/Makefile.am

根据如果红框内的内容进行修改

image.png

 

执行mvn package进行编译:

mvn   package

image.png

 

查看编译后的jar文件:

cd   target/hadoop-snappy-0.0.1-SNAPSHOT-tar/hadoop-snappy-0.0.1-SNAPSHOT/lib

image.png

【注】:hadoop-snappy-0.0.1-SNAPSHOT.jar文件在hadoop-2.6.0-cdh5.15.1编译完成后,需将该文件拷贝到$HADOOP_HOME/lib库目录下

3.9 编译安装R语言

通过wget下载源码并解压:

wget   http://cran.rstudio.com/src/base/R-3/R-3.1.1.tar.gz

tar   -zxvf R-3.1.1.tar.gz

安装gcc-gfortran依赖:

yum   -y install gcc-gfortran

rpm   -ivh gcc-gfortran-4.8.5-28.el7.ns7.02.aarch64.rpm   libgfortran-4.8.5-28.el7.ns7.02.aarch64.rpm

执行configure生成Makefile

./configure   --enable-R-shlib --enable-R-static-lib --with-libpng --with-jpeglib   --with-readline=no --prefix=/home/tools/R-3.1.1

image.png

 

执行make all -j10 && make install进行编译安装:

make   all -j10 && make install

查看编译后文件:

cd   /home/tools/R-3.1.1/

image.png

R_HOME添加到环境变量:

vim   /etc/profile

在文末尾添加如下内容

R_HOME=/home/tools/R-3.1.1

export   PATH=$R_HOME:$PATH

更新环境变量:

source   /etc/profile

 

4 软件移植分析

1、使用checkSo工具(获取地址:https://bbs.huaweicloud.com/forum/thread-22679-1-1.html检查spark-2.2.0-bin-hadoop2.6对应x86的安装包或源码包是否有依赖x86so文件,通过检查spark-2.2.0-bin-hadoop2.6的源码spark-2.2.0-bin-hadoop2.6.tgz发现有如下依赖的x86架构的so文件

image.png

上图依赖库的编译见 5 依赖库编译 章节(需要编译commons-crypto-1.0.0.jarjline-2.12.1.jarscala-compiler-2.11.8.jarleveldbjni-all-1.8.jarlz4-1.3.0.jarnetty-all-4.0.43.Final.jar并将其放入本地maven仓,然后编译spark-2.2.0-bin-hadoop2.6);

 

5 依赖库编译

5.1 编译commons-crypto-1.0.0.jar

1、下载源码并解压

wget   https://github.com/apache/commons-crypto/archive/CRYPTO-1.0.0.tar.gz

tar   -zxvf CRYPTO-1.0.0.tar.gz

cd commons-crypto-CRYPTO-1.0.0

2、修改Makefile.common文件增加-fsigned-char

vi   Makefile.common

增加 -fsigned-char

image.png

3、执行maven编译

mvn   clean install -DskipTests

4、查看编译后的jar

cd   target/

image.png

【注】:commons-crypto-1.0.0.jar通过mvn install方式已同步到本地maven/root/.m2/repository/org/apache/commons/commons-crypto/1.0.0/路径下;

 

5.2 编译jline-2.12.1.jar

编译依赖关系jline-2.11 / jline-2.12 à jansi-1.11 à jansi-native-1.5

参考《鲲鹏920(ARM64) Jansi-1.4移植指南V1.1.doc》编译jansi-native-1.5jansi1.11(编译命令使用mvn package -Dmaven.javadoc.skip=true),编译生成的jansi-1.11.jar拷贝到maven本地仓库

 

1)下载jansi-native-1.5源码,并解压

wget https://github.com/fusesource/jansi-native/archive/jansi-native-1.5.tar.gz

tar   -zxvf jansi-native-1.5.tar.gz

cd   jansi-native-jansi-native-1.5/

        2)编译jansi-native-1.5并查看编译结果

mvn   package -Dmaven.javadoc.skip=true

cd   target/

image.png

3)将编译后的jansi-native-1.5.jarjansi-native-1.5-linux64.jar拷贝到本地maven仓对应路径

cp   jansi-native-1.5.jar   /root/.m2/repository/org/fusesource/jansi/jansi-native/1.5/

cp   jansi-native-1.5-linux64.jar   /root/.m2/repository/org/fusesource/jansi/jansi-native/1.5/

4)将编译后的libjansi.so拷贝到maven安装包解压对应路径

mkdir -p   /home/zdk/others/apache-maven-3.5.4/lib/jansi-native/aarch64-Linux

cp ./native-build/target/lib/libjansi.so   /home/zdk/others/apache-maven-3.5.4/lib/jansi-native/aarch64-Linux/

cd /home/zdk/others/apache-maven-3.5.4/lib/jansi-native/aarch64-Linux/

image.png

5)下载jansi-1.12.1源码并解压

wget   https://github.com/fusesource/jansi/archive/jansi-project-1.11.tar.gz

tar   zxvf jansi-project-1.11.tar.gz

6)进入jansi-1.11解压目录

cd   jansi-jansi-project-1.11/jansi/

         7)修改pom.xml

vi pom.xml

 

注释如下红框内容

image.png

8)使用maven编译并查看编译结果

mvn   clean package -Dmaven.javadoc.skip=true

cd   target/

image.png

9)将编译后的jansi-1.11.jar拷贝到本地maven仓对应路径

cp   jansi-1.11.jar /root/.m2/repository/org/fusesource/jansi/jansi/1.11/

image.png

10)下载jline-2.12.1源码,并解压

wget   https://github.com/jline/jline2/archive/jline-2.12.1.tar.gz

tar   zxvf jline-2.12.1.tar.gz

cd   jline2-jline-2.12.1/

image.png

11)执行maven编译并查看编译结果

mvn install

cd   target/

image.png

【注】:jline-2.12.1.jar通过mvn install方式已同步到本地maven/root/.m2/repository/jline/jline/2.12.1/路径下。

 

5.3 编译scala-compiler-2.11.8.jar

1、通过git clone获取下载scala源码并checkout2.11.8版本

git   clone https://github.com/scala/scala.git

cd scala/

git   checkout v2.11.8

image.png

2、检查commit日期

chmod   -R 755 *

./tools/get-scala-commit-date

image.png

3、获取编译依赖,从网上分别下载maven-ant-tasks-2.1.1.jarant-dotnet-1.0.jarvizant.jarant.jar并上传到lib/ant路径下

cd lib/ant/

wget   https://dl.bintray.com/typesafe/scala-sha-bootstrap/org/scala-lang/bootstrap/7b456ca6b93900f96e58cc8371f03d90a9c1c8d1/lib/ant/ant.jar

wget   https://dl.bintray.com/typesafe/scala-sha-bootstrap/org/scala-lang/bootstrap/943cd5c8802b2a3a64a010efb86ec19bac142e40/lib/ant/ant-contrib.jar

wget   https://dl.bintray.com/typesafe/scala-sha-bootstrap/org/scala-lang/bootstrap/2c61d6e9a912b3253194d5d6d3e1db7e2545ac4b/lib/ant/vizant.jar

wget   https://dl.bintray.com/typesafe/scala-sha-bootstrap/org/scala-lang/bootstrap/3fc1e35ca8c991fc3488548f7a276bd9053c179d/lib/ant/ant-dotnet-1.0.jar

wget   https://dl.bintray.com/typesafe/scala-sha-bootstrap/org/scala-lang/bootstrap/7e50e3e227d834695f1e0bf018a7326e06ee4c86/lib/ant/maven-ant-tasks-2.1.1.jar

image.png

4、返回scala/路径执行ant进行编译

 

cd   ../../

ant

image.png

5、查看编译后的jar包(默认不带版本号

cd   build/pack/lib

image.png

6、重命名scala-compiler.jar并拷贝到本地maven

cp   scala-compiler.jar scala-compiler-2.11.8.jar

cp   scala-compiler-2.11.8.jar   /root/.m2/repository/org/scala-lang/scala-compiler/2.11.8/

image.png

 


举报
分享

分享文章到朋友圈

分享文章到微博

五湖四海@银河护卫队

发帖: 106粉丝: 34

级别 : 版主

发消息 + 关注

发表于2020年07月07日 23:21:42
直达本楼层的链接
沙发
显示全部楼层

5.4 编译leveldbjni-all-1.8.jar

Leveldb是一个google实现的非常高效的kv数据库;

官方链接:https://github.com/google/leveldb

依据网上资料,编译leveldbjni-all-1.8.jar,需要先将leveldb和snappy编译成静态库,再将两个静态库编译进leveldbjni.so里面,最后生成leveldbjni-all-1.8.jar压缩包。

注:如下编译snappy-1.1.3、leveldb-1.20和leveldbjni需要在同一个ssh窗口执行,切换ssh会导致如下临时定义的SNAPPY_HOME和LEVELDB_HOME变量失效,如发生ssh窗口异常,编译leveldbjni时需要先定义临时SNAPPY_HOME和LEVELDB_HOME变量(变量路径要正确);

5.4.1 编译snappy-1.1.3

wget https://github.com/google/snappy/archive/1.1.3.tar.gz

tar   -zxvf 1.1.3.tar.gz

cd   snappy-1.1.3/

./autogen.sh

./configure   --with-pic

image.png

make   -j20

image.png

export   SNAPPY_HOME=`pwd`

cp   .libs/libsnappy.a .

5.4.2 编译leveldb-1.20

1)源码下载并解压

wget https://github.com/google/leveldb/archive/v1.20.tar.gz

tar -zxvf   v1.20.tar.gz

cd   leveldb-1.20

       2)修改build_detect_platform

vi   build_detect_platform

 

注释如下红框内的3行注释内容,并添加如下三行:

echo   "PLATFORM_CCFLAGS=$PLATFORM_CCFLAGS $PLATFORM_SHARED_CFLAGS"   >> $OUTPUT

echo   "PLATFORM_CXXFLAGS=$PLATFORM_CXXFLAGS $PLATFORM_SHARED_CFLAGS"   >> $OUTPUT

echo   "PLATFORM_SHARED_CFLAGS=" >> $OUTPUT

image.png

3)修改Makefile,增加-fPIC的编译选项

vi   Makefile

增加-fPIC

image.png

4对比补丁leveldbpatch.zip(下载地址:https://bbs.huaweicloud.com/forum/forum.php?mod=attachment&aid=MTA2NDQ5fDYxOWEyNGJmfDE1OTQxMzIzNDB8MTIzMTI2fDQxODcz),将代码合入(替换源码压缩包对应路径中的文件即可

5)执行编译

make   -j20

export   LEVELDB_HOME=`pwd`

cp   out-static/libleveldb.a .


5.4.3 编译leveldbjni

1)通过git获取源码

git   clone https://github.com/fusesource/leveldbjni.git

cd   leveldbjni

export   LEVELDBJNI_HOME=`pwd`

2)修改pom.xml

vi   pom.xml

 

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

      <module>leveldbjni-linux64</module>

      <module>leveldbjni-all</module>

image.png

image.png

image.png

3)修改leveldbjni-all/pom.xml文件

vi   leveldbjni-all/pom.xml

 

注释如下红框内注释内容,并按红框内框内容进行修改

image.png

image.png

4)修改所有pom.xml文件中的版本号

将所有pom.xml文件中的版本“99-master-SNAPSHOT”改为“1.8”:

sed -i   's/99-master-SNAPSHOT/1.8/g' `find . -name pom.xml`

5)编译选项增加 -fsigned-char

vim leveldbjni/src/main/native-package/Makefile.in

增加-fsigned-char

image.png

6)修改automake版本号

vi   leveldbjni/src/main/native-package/aclocal.m4

vi   leveldbjni/src/main/native-package/configure

automake版本号从1.14改成1.13,注意不要改成1.13.4(根据系统安装automake版本号进行修改)

7)执行maven编译并查看编译结果

export   LIBRARY_PATH=${SNAPPY_HOME};export C_INCLUDE_PATH=${LIBRARY_PATH};export   CPLUS_INCLUDE_PATH=${LIBRARY_PATH}

mvn   clean package -P download -P linux64-aarch64 –DskipTests

cd   leveldbjni-all/target/

image.png

注:执行maven编译会自动编译五个模块:leveldbjni-projectleveldbjnileveldbjni-linux64leveldbjni-linux64-aarch64leveldbjni-all

8)将编译后的leveldbjni-all-1.8.jar复制到本地maven仓对应路径进行覆盖

cp   leveldbjni-all-1.8.jar   /root/.m2/repository/org/fusesource/leveldbjni/leveldbjni-all/1.8/

image.png

5.5 编译lz4-1.3.0.jar

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

wget https://github.com/lz4/lz4-java/archive/1.3.0.zip   --no-check-certificate

unzip   1.3.0.zip

2、进入解压目录

cd lz4-java-1.3.0/

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

vi build.xml

增加如下内容

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

image.png

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

ant

image.png

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

image.png

【注】:如通过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

 

将下载的ivy-2.2.0.jar解压

jar   xvf ivy-2.2.0.jar

将解压后org/apache/ivy/core/settings/ivysettings.xml拷贝到lz4-java-1.3.0编译路径/home/zdk/others/lz4/

cp   org/apache/ivy/core/settings/ivysettings.xml   /home/zdk/others/lz4/lz4-java-1.3.0/

修改/home/zdk/others/lz4/lz4-java-1.3.0/ivysettings.xml

vi /home/zdk/others/lz4/lz4-java-1.3.0/ivysettings.xml

增加如下内容

<!-- path to local maven repo and default maven layout -->

        <property   name="local-maven2-pattern"   value="${user.home}/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision]"   override="false" />

        <!-- set resolver   chain as default -->

        <settings   defaultResolver="main" />

        <!-- configure   caches -->

        <caches   repositoryCacheDir="${user.home}/.ivy2/cache">

          <!-- do not   cache from local .m2-->

          <cache   name="nocache" useOrigin="true" />

          <cache   name="default" />

        </caches>

        <resolvers>

          <chain   name="main">

            <!-- as this   is not cached, even changing SNAPSHOT dependencies are resolved correctly   -->

            <filesystem   name="local-maven-2" m2compatible="true"   local="true" cache="nocache">

               <ivy   pattern="${local-maven2-pattern}.pom" />

               <artifact   pattern="${local-maven2-pattern}(-[classifier]).[ext]" />

              </filesystem>

            <!-- use   repository manager as proxy to maven-central (and all other   repositories)-->

            <ibiblio   name="repomanager" m2compatible="true"   root="http://maven.aliyun.com/nexus/content/groups/public/"   cache="default"/>

         </chain>

       </resolvers>

image.png

修改build.xml增加<ivy:settings file="ivysettings.xml"/>调用编译路径的ivysettings.xml(跟build.xml同路径)

vi   build.xml

image.png

修改ivy.xml1.3-SNAPSHOT1.3.0

vi   ivy.xml

image.png

重新执行ant编译

ant

image.png

将编译的lz4-1.3.0.jar替换到本地maven

cd   dist/

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

image.png

 

5.6 编译netty-all-4.0.43.Final.jar

Netty是一个客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化并简化了TCPUDP套接字服务器等网络编程。

1)下载apr-1.5.2源码,并编译安装

wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz

tar   -zxvf apr-1.5.2.tar.gz

cd   apr-1.5.2

./configure

make

make   install

image.png

image.png

2)下载tcnative-1.1.33.Fork25源码并解压

wget https://github.com/netty/netty-tcnative/archive/netty-tcnative-parent-1.1.33.Fork25.tar.gz

tar   -zxvf netty-tcnative-parent-1.1.33.Fork25.tar.gz

3)进入netty-tcnative解压目录并将拷贝apr-1.5.2.tar.gz

cd netty-tcnative-netty-tcnative-1.1.33.Fork25

cp ../apr-1.5.2.tar.gz   .

image.png

4)修改pom.xml,在编译native库过程中添加-fsigned-char

vi pom.xml

 

注释如下红框内注内容,并添加

                  <get src="file:///root/.m2/repository/io/netty/netty-tcnative/1.1.33.Fork25/test/netty-tcnative-netty-tcnative-parent-1.1.33.Fork25/apr-1.5.2.tar.gz"   dest="${project.build.directory}/${aprTarGzFile}"   verbose="on" />

image.png

image.png

5)修改openssl-static/target/antrun/build-main.xml

vi openssl-static/target/antrun/build-main.xml

 

注释红框内注释行(两处都要注释)

image.png

6)修改libressl-static/pom.xmlopenssl-dynamic/pom.xmlopenssl-static/pom.xml,添加-fsigned-char

vi libressl-static/pom.xml

 

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

              <configureArg>CFLAGS=-fsigned-char</configureArg>

image.png

image.png

vi openssl-dynamic/pom.xml

 

增加如下内容

              <configureArg>CFLAGS=-fsigned-char</configureArg>

image.png

vi openssl-static/pom.xml

 

增加如下内容

              <configureArg>CFLAGS=-fsigned-char</configureArg>

image.png

7)执行maven编译

mvn   install -DskipTests

image.png

8)查看编译后的jar并重命名拷贝到本地maven

cd   openssl-dynamic/target/

cp   netty-tcnative-1.1.33.Fork25-linux-aarch_64.jar   netty-tcnative-1.1.33.Fork25-linux-aarch_64-fedora.jar

cp   netty-tcnative-1.1.33.Fork25-linux-aarch_64-fedora.jar   /root/.m2/repository/io/netty/netty-tcnative/1.1.33.Fork25/

image.png

9)下载netty-4.0.43源码,并解压

wget https://github.com/netty/netty/archive/netty-4.0.43.Final.tar.gz

tar   -zxvf netty-4.0.43.Final.tar.gz

cd   netty-netty-4.0.43.Final/

image.png

10)修改transport-native-epoll/pom.xml,在编译native库过程中添加-fsigned-char

vi   transport-native-epoll/pom.xml

 

增加如下内容

              <configureArgs>

                  <configureArg>CFLAGS=-fsigned-char</configureArg>

              </configureArgs>

image.png

11)编译打成jar

mvn install   -DskipTests

image.png

12)查看编译后的netty-all-4.0.23.Final.jar, netty-all-4.0.43.Final.jar放置于netty-netty-4.0.43.Final/all/target目录

cd all/target/

image.png

【注】:netty-all-4.0.43.Final.jar通过mvn install方式已同步到本地maven/root/.m2/repository/io/netty/netty-all/4.0.23.Final/路径下。

 

6 Spark-2.2.0-hadoop2.6编译

6.1 下载源码

下载代码并解压:

wget https://github.com/apache/spark/archive/v2.2.0.tar.gz

tar -zxvf v2.2.0.tar.gz

6.2 修改pom.xml

进入hadoop源码解压目录并修改pom.xml

cd spark-2.2.0/

image.png

修改pom.xml

vi pom.xml

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

    <hadoop.version>2.6.0-cdh5.15.1</hadoop.version>

image.png

image.png

vi pom.xml

增加如下内容

<scala.complete.version>${scala.binary.version}.8</scala.complete.version>

image.png

cd build/

wget   https://downloads.typesafe.com/zinc/0.3.11/zinc-0.3.11.tgz

wget   https://downloads.typesafe.com/scala/2.11.8/scala-2.11.8.tgz

同步scala版本:

./dev/change-scala-version.sh   2.11

image.png

6.3 执行编译

执行编译并查看编译后的结果:

export MAVEN_OPTS="-Xms1024m   -Xmx12G -XX:PermSize=4096m"

dev/make-distribution.sh --tgz -Pyarn   -Phive -Phive-thriftserver -Psparkr -Phadoop-2.6.0-cdh5.15.1   -Dhadoop.version=2.6.0-cdh5.15.1 -DrecompileMode=all -DskipTests

ls

image.png

image.png

 

6.4 注意

1) 编译过程中遇到问题可以参考第9FAQ

 

7 验证

1、编译验证

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

2、功能验证

暂无。

 

8 参考信息

更多关于Spark信息参考官网:http://spark.apache.org/

9 FAQ

9.1 git clone报证书错误

9.1.1 问题现象

image.png

9.1.2 解决方法

git config --global http."sslVerify" false

9.2 wget下载https链接报证书错误

9.2.1 问题现象

image.png

9.2.2 解决方法

在下载命令后面跟参数--no-check-certificate

9.3 通过ant编译scala-compiler-2.11.8.jarerror java.langstackOverflowError

9.3.1 问题现象

image.png

9.3.2 解决方法

java堆栈错误,重新执行ant编译即可解决。

 

9.4 编译leveldbjniautomake命令找不到

9.4.1 问题现象

image.png

 

9.4.2 解决方法

没有安装automake-1.14,可以使用yum install automake安装。如果yum源上找的没有1.14的版本,则需要修改leveldbjni-linux64/target/native-build下的配置文件。修改leveldbjni/src/main/native-package/configureleveldbjni/src/main/native-package/aclocal.m4,将里面的1.14改成服务器上安装的automake版本,比如1.13

9.5 编译leveldbjnierror: required file 'autotools/compile' not found

9.5.1 问题现象

image.png

 

9.5.2 解决方法

根据问题信息,需要手动进入相应目录,手动执行相应命令安装。

cd leveldbjni-linux64/target/native-build

automake   --add-missing



点赞 评论 引用 举报

阿奇@汪汪队

发帖: 60粉丝: 47

级别 : 版主

发消息 + 关注

发表于2020年07月08日 09:15:37
直达本楼层的链接
板凳
显示全部楼层

楼主用心,新详细,攒攒

点赞 评论 引用 举报

火灵

发帖: 109粉丝: 7

级别 : 外部版主

发消息 + 关注

发表于2020年07月09日 00:20:16
直达本楼层的链接
地板
显示全部楼层

感谢分享啦!楼主也辛苦了!

点赞 评论 引用 举报

游客

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