CPU | Phytium,FT-2000+/64 |
OS | Kylin Linux Advanced Server 10 |
编译完成rpm下载连接,可在鲲鹏处理器,centos7系统使用
参考华为鲲鹏解决方案
netty 移植
# 略
jline-2.14.6移植
<jansi-native-version>1.6</jansi-native-version>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi-project</artifactId>
<version>1.12</version>
<packaging>pom</packaging>
<dependency>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
<version>2.14.6</version>
<exclusions>
<exclusion>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
</exclusion>
</exclusions>
</dependency>
# 编译Jansi-native 1.6
wget https://github.com/fusesource/jansi-native/archive/jansi-native-1.6.tar.gz
tar -zxf jansi-native-1.6.tar.gz
cd jansi-native-jansi-native-1.6
mvn install -Dplatform=linux64
# 编译Jansi-1.12
wget https://github.com/fusesource/jansi/archive/jansi-project-1.12.tar.gz
tar -zxvf jansi-project-1.12.tar.gz
cd jansi-jansi-project-1.12
mvn install -Dmaven.javadoc.skip=true
# 编译jline-2.14.6
wget https://github.com/jline/jline2/archive/jline-2.14.6.tar.gz
tar -zxvf jline-2.14.6.tar.gz
cd jline2-jline-2.14.6
mvn install -Dmaven.javadoc.skip=true -DskipTests
libhadoop.so移植
# presto-0.244.1 依赖hadoop-2.7.4的本地动态库libhadoop.so,需要使用hadoop-2.7.4的源码编译后获得
yum install snappy snappy-devel protobuf protobuf-devel -y
wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.4/hadoop-2.7.4-src.tar.gz
tar -zxf hadoop-2.7.4-src.tar.gz
cd hadoop-2.7.4-src/hadoop-common-project/hadoop-common
mvn package -Pnative -Drequire.snappy=true -DskipTests -Dmaven.javadoc.skip=true
# target/native/target/usr/local/lib/libhadoop.so.1.0.0
presto-hadoop-apache2-2.7.4-8移植
<dependency>
<groupId>com.facebook.presto.hadoop</groupId>
<artifactId>hadoop-apache2</artifactId>
<version>2.7.4-8</version>
</dependency>
wget https://github.com/prestodb/presto-hadoop-apache2/archive/2.7.4-8.tar.gz
tar -zxf 2.7.4-8.tar.gz
cd presto-hadoop-apache2-2.7.4-8
mkdir -p src/main/resources/nativelib/Linux-aarch64
# 上文获取的libhadoop.so.1.0.0复制到Linux-aarch64文件夹下,改名为libhadoop.so
cp ../hadoop-2.7.4-src/hadoop-common-project/hadoop-common/target/native/target/usr/local/lib/libhadoop.so.1.0.0 src/main/resources/nativelib/Linux-aarch64/libhadoop.so
# 上一步安装snappy后可在/lib64下找到所需的libsnappy.so.1.1.4
cp /lib64/libsnappy.so.1.1.4 src/main/resources/nativelib/Linux-aarch64/libsnappy.so
mvn install
presto-cassandra-driver移植
# jffi-1.2.10移植
yum install -y ant
wget https://github.com/jnr/jffi/archive/1.2.10.tar.gz
tar -zxf 1.2.10.tar.gz
cd jffi-1.2.10
ant
# presto-cassandra-driver移植
wget https://github.com/prestodb/presto-cassandra-driver/archive/3.1.4-1.tar.gz
tar -zxf 3.1.4-1.tar.gz
cd presto-cassandra-driver-3.1.4-1
mvn install -DskipTests
airlift移植
# airlift是facebook开发的命令行框架
<dep.airlift.version>0.197</dep.airlift.version>
# procname移植
git clone http://github.com/airlift/procname.git
cd procname
make
# https://codeload.github.com/airlift/airlift/tar.gz/0.197
git clone http://github.com/airlift/airlift.git
cd airlift
git checkout 0.197
cd launcher/src/main/resources/procname
mkdir Linux-aarch64
# 把上文编译得到的libprocname.so放进Linux-aarch64目录。
mvn install -DskipTests
presto编译
vi presto-main/src/main/java/com/facebook/presto/server/PrestoSystemRequirements.java
# 73-75
if (!"amd64".equals(osArch) && !"ppc64le".equals(osArch) && !"aarch64".equals(osArch)) {
failRequirement("Presto requires amd64 or ppc64le or aarch64 on Linux (found %s)", osArch);
}
vi presto-server-rpm/pom.xml
# 75
<nameOverride>presto-server-rpm-${project.version}.noarch.rpm</nameOverride>
# 78
<architecture>noarch</architecture>
mvn clean package -DskipTests
presto-server/target/presto-server-0.244.1.tar.gz
presto-server-rpm/target/presto-server-rpm-0.244.1.noarch.rpm
presto-jdbc/target/presto-jdbc-0.244.1.jar
presto-cli/target/presto-cli-0.244.1-executable.jar
错误解决方案
1. .git目录不存在,在pom build plugins 中增加下面插件
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>