- 一、介绍
- 二、环境要求
- 三、配置编译环境
- 四、执行移植分析
- 五、编译依赖库
- 六、编译Ambari
- 七、故障排除
- 问题1:cannot access org.json.simple.JSONAware
- 问题2:cannot find symbol HBaseTestingUtility
- 问题3:Could not find artifact org.apache.zookeeper:zookeeper:jar: 3.4.6.2.3.0.0-2557
- 问题4:java.net.UnknownHostException: central.maven.org
- 问题5:yarn下载大概541个tgz包,通过代理无法下载
- 问题6:单独编译ambari-infra模块出现无法下载压缩包
- 问题7:无法下载commons-fileupload-1.3.3.jar
- 问题8:仓库中找不到ring-cors-0.1.5.jar
- 问题9:org.apache.storm:storm-core:jar:0.10.0.2.3.0.0-2557找不到
- 问题10:缺少一大堆jar包
- 问题11:无法下载hbase、hadoop、phoenix三个压缩包
- 问题12:多类找不到的错误
- 问题13:ambari-release-2.7.3/ambari-web/node_modules/mocha-phantomjs/node_modules/phantomjs: Command failed
- 问题14:PhantomJS not found on PATH
- 问题15:Error:Invalid operands (UND and UND sections) for ‘*’错误
- 问题16:aarch64生成的目标文件和X86的差别大
- 问题17:PhantomJS detected, but wrong version 2.1.1 @ /home/tools/phantomjs/phantomjs-2.1.1/bin/phantomjs
- https://registry.bower.io/packages/angular-animate failed: unable to verify the first certificate">问题18:UNABLE_TO_VERIFY_LEAF_SIGNATURE Request to https://registry.bower.io/packages/angular-animate failed: unable to verify the first certificate
- https://github.com/twbs/bootstrap.git”, exit code of">问题19:ECMDERR Failed to execute “git ls-remote —tags —heads https://github.com/twbs/bootstrap.git”, exit code of
- 问题20:打ambari-metrics中的rpm包出错
- 问题21:Could not download Node.js
- 问题22:Could not download Yarn
- 问题23:error An unexpected error occurred
- 问题24:提示未设置phantomjs的bin的环境变量
- 问题25:Grafana 2.6.0 打包错误(1)
- 问题26:Grafana 2.6.0 打包错误(2)
- 问题27:rpm包名字是x86_64后缀
- 问题28:RPM build errors: Arch dependent binaries in noarch package
一、介绍
简要介绍
Ambari是 Apache Software Foundation 中的一个顶级项目,它可以创建、管理、监视 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等)的集群,使得Hadoop 以及相关的大数据软件更容易使用。
Ambari本身是一个分布式架构的软件,由Ambari Server 和 Ambari Agent两部分组成,用户可通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Ambari Agent会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。
建议的版本
二、环境要求
硬件环境
硬件要求如表1所示。
表1 硬件参考
项目 | 说明 |
---|---|
CPU | 鲲鹏920 5250处理器 |
网络 | Ethernet-10GE |
存储 | SATA 1T |
内存 | 512G 2400MHz |
操作系统要求
操作系统要求如表2所示。
表2 操作系统要求
项目 | 版本 |
---|---|
CentOS | 7.6 |
Kernel | 4.14.0 |
软件要求
软件要求如表3所示。
表3 软件要求
项目 | 版本 | 下载地址 |
---|---|---|
OpenJDK | 1.8.0_191 | link |
Maven | 3.5.4 | link |
Phantomjs | 2.1.0 | link |
Golang | 1.9 | link |
Nodejs | 8.6.0 | link |
Grafana | 2.6.0 | link |
三、配置编译环境
安装OpenJDK
下载OpenJDK安装包。
下载地址:
https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_aarch64_linux_hotspot_8u222b10.tar.gz
也可以去如下地址自行选择对应版本:
https://adoptopenjdk.net/releases.html
官方下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
须知:
如果环境无法直接连接网络,需要配置可用代理步骤如下。
在/etc/profile文件末尾处增加下面的代码:
export http_proxy={代理ip}:{代理端口}
export https_proxy={代理ip}:{代理端口}
修改完之后执行
source /etc/profile
使配置的代理生效。
安装到指定目录(如“/opt/tools/installed”)。
tar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u222b10.tar.gz
mv jdk8u222-b10 /opt/tools/installed/
配置java环境变量,在“/etc/profile”文件末尾处增加下面的代码:
export JAVA_HOME=/opt/tools/installed/jdk8u222-b10
export PATH=$JAVA_HOME/bin:$PATH
使修改的环境变量生效。
source /etc/profile
安装Maven
下载Maven安装包。
wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
须知:
如果wget下载时报无法验证github.com颁发的证书错误,可在wget命令后面跟参数—no-check-certificate。
安装到指定目录(如“/opt/tools/installed”)。
tar -zxf apache-maven-3.5.4-bin.tar.gz
mv apache-maven-3.5.4 /opt/tools/installed/
修改Maven环境变量,在/etc/profile文件末尾增加以下代码:
export MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4
export PATH=$MAVEN_HOME/bin:$PATH
使修改的环境变量生效。
source /etc/profile
添加代理(可选)。
在Maven配置文件./conf/setting.xml中
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<host>{代理ip}</host>
<port>{代理端口}</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
修改Maven配置文件中的本地仓路径、远程仓等。
<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录-->
<localRepository>/path/to/local/repo</localRepository>
<!--修改成自己搭建的maven仓库-->
<mirror>
</mirror>
如果没有,可以在mirror标签中,添加以下三个镜像源。
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>repo1 maven</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<url>http://repo2.maven.org/maven2</url>
<name>Human Readable Name for this Mirror.</name>
</mirror>
<mirror>
<id>uk</id>
<mirrorOf>central</mirrorOf>
<url>http://uk.maven.org/maven2</url>
<name>Human Readable Name for this Mirror.</name>
</mirror>
profiles标签中,推荐添加以下的标签
<profile>
<id>clojars</id>
<repositories>
<repository>
<id>clojars-release</id>
<name>clojars release</name>
<url>http://clojars.org/repo</url>
<releases><enabled>true</enabled></releases>
<snapshot><enabled>false</enabled></snapshot>
</repository>
</repositories>
</profile>
<profile>
<id>hdp</id>
<repositories>
<repository>
<id>hdp-release</id>
<name>hdp release</name>
<url>http://repo.hortonworks.com/content/repositories/releases/</url>
<releases><enabled>true</enabled></releases>
<snapshot><enabled>false</enabled></snapshot>
</repository>
</repositories>
</profile>
<profile>
<id>cdh</id>
<repositories>
<repository>
<id>cdh-release</id>
<name>cdh release</name>
<url>http://repository.cloudera.com/artifactory/cloudera-repos</url>
<releases><enabled>true</enabled></releases>
<snapshot><enabled>false</enabled></snapshot>
</repository>
</repositories>
</profile>
<profile>
<id>dynamodb-local-oregon</id>
<repositories>
<repository>
<id>dynamodb-local-oregon</id>
<name>dynamodb-local-oregon release</name>
<url>http://s3-ap-southeast-1.amazonaws.com/dynamodb-local-singapore/release</url>
<releases><enabled>true</enabled></releases>
<snapshot><enabled>false</enabled></snapshot>
</repository>
</repositories>
</profile>
<profile>
<id>ibiblio</id>
<repositories>
<repository>
<id>ibiblio</id>
<name>ibiblio release</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshot><enabled>false</enabled></snapshot>
</repository>
</repositories>
</profile>
<profile>
<id>jboss</id>
<repositories>
<repository>
<id>jboss</id>
<name>jboss release</name>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshot><enabled>false</enabled></snapshot>
</repository>
</repositories>
</profile>
安装Phantomjs
挂载镜像源。
在有OS镜像文件文件的目录下执行:
mount YOUR_OS.iso /media/ -o loop
说明:
YOUR_OS.iso用实际的iso包名代替。
配置本地更新源
备份repo。
cd /etc/yum.repos.d
mkdir -p /etc/yum.repos.d/bak
mv *.repo bak
创建并编辑local.repo文件。
vi local.repo
在local.repo文件中添加如下内容:
[local]
name=local repo
baseurl=file:///media
enabled=1
gpgcheck=0
生效本地源。
yum clean all
yum makecache
说明:
如果已挂载并配置好本地yum源,可跳过步骤1、2、3。
yum安装Phantomjs编译依赖的相关软件。
yum install gcc gcc-c++ make flex bison gperf ruby openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel libpng-devel libjpeg-devel git
若配置代理,需要执行此步骤(可选)。
git config —global https.proxy http://{代理ip}:{代理端口}
git config —global http.proxy http://{代理ip}:{代理端口}
取消git的ssl验证。
git config —global http.sslVerify false
fontconfig-devel下载代码、切换到对应分支,并更新子模块代码。
git clone https://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 2.1.1
git submodule init
git submodule update
执行编译。
python build.py
须知:
第一次编译可能报错:
Error:Invalid operands (UND and UND sections) for ‘*’
打开src/qt/qtbase/src/gui目录中的Makefile,将-O3修改为-O2,重新启动编译即可。
CFLAGS = -pipe -O2 -fPIC -fvisibility=hidden -fno-exceptions -Wall -W -Wno-unused-parameter -Wno-main -D_REENTRANT $(DEFINES)
CXXFLAGS = -pipe -O2 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -std=c++0x -fno-exceptions -Wall -W -D_REENTRANT $(DEFINES)
将编译出来的phantomjs二进制文件拷贝到对应目录。
cp phantomjs /opt/tools/installed/phantomjs/bin/
修改“/etc/profile”文件,配置环境变量。
JAVA_HOME=/opt/tools/installed/jdk8u222-b10
MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4
PHANTOMJS_HOME=/opt/tools/installed/phantomjs
PATH=$PHANTOMJS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export PHANTOMJS_HOME MAVEN_HOME JAVA_HOME PATH
使修改的环境变量生效。
source /etc/profile
Phantomjs编译参考网址:https://phantomjs.org/build.html。
安装nodejs
下载nodejs。
wget http://nodejs.org/dist/v8.6.0/node-v8.6.0-linux-arm64.tar.gz
须知:
如果wget下载时报无法验证github.com颁发的证书错误,可在wget命令后面跟参数—no-check-certificate。
tar -zxf node-v8.6.0-linux-arm64.tar.gz
mv node-v8.6.0-linux-arm64 /opt/tools/installed
修改/etc/profile文件,配置环境变量。
JAVA_HOME=/opt/tools/installed/jdk8u222-b10
MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4
PHANTOMJS_HOME=/opt/tools/installed/phantomjs
NODE_HOME=/opt/tools/installed/node-v8.6.0-linux-arm64
PATH=$NODE_HOME/bin:$PHANTOMJS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export NODE_HOME PHANTOMJS_HOME MAVEN_HOME JAVA_HOME PATH
使修改的环境变量生效。
source /etc/profile
搭建golang环境
下载golang。
wget https://dl.google.com/go/go1.9.linux-arm64.tar.gz
须知:
如果wget下载时报无法验证github.com颁发的证书错误,可在wget命令后面跟参数—no-check-certificate。
tar -zxf go1.9.linux-arm64.tar.gz
mv go /opt/tools/installed
搭建开发环境,修改/etc/profile环境变量。
JAVA_HOME=/opt/tools/installed/jdk8u222-b10
MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4
PHANTOMJS_HOME=/opt/tools/installed/phantomjs
GOROOT=/opt/tools/installed/go/
GOPATH=/opt/tools/installed/go/path
PATH=$GOROOT/bin:$PHANTOMJS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export GOROOT GOPATH PHANTOMJS_HOME MAVEN_HOME JAVA_HOME PATH
使修改的环境变量生效。
source /etc/profile
手动在“${GOPATH}”下创建三个目录。
cd ${GOPATH}
mkdir src bin pkg
说明:
src目录中将存放要编译的源码工程和一些依赖工程。
搭建文件服务器
安装httpd。
yum install httpd
开启httpd服务。
systemctl start httpd.service
systemctl enable httpd.service
验证httpd服务。
systemctl status httpd.service
若状态为running,则安装并启动成功:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2019-10-14 16:22:09 CST; 18h ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 22995 (httpd)
Status: "Total requests: 34; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─22995 /usr/sbin/httpd -DFOREGROUND
├─22996 /usr/sbin/httpd -DFOREGROUND
├─22997 /usr/sbin/httpd -DFOREGROUND
├─22998 /usr/sbin/httpd -DFOREGROUND
├─22999 /usr/sbin/httpd -DFOREGROUND
├─23000 /usr/sbin/httpd -DFOREGROUND
├─23015 /usr/sbin/httpd -DFOREGROUND
├─25332 /usr/sbin/httpd -DFOREGROUND
└─46379 /usr/sbin/httpd -DFOREGROUND
Oct 14 16:22:09 DataNode-1 systemd[1]: Starting The Apache HTTP Server...
Oct 14 16:22:09 DataNode-1 httpd[22995]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.1.91. Set the 'ServerName' d...this message
Oct 14 16:22:09 DataNode-1 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
启动httpd服务后,浏览器可访问服务器上的文件,其中文件服务器/var/www/html目录下的文件可通过http://{文件服务器IP}进行访问。
说明:
假设文件服务器IP为192.168.1.91,example.txt文件存放于文件服务器的/var/www/html/one/two/example.txt,则可在浏览器中通过http://192.168.1.91/one/two/example.txt访问example.txt文件。
四、执行移植分析
请依据《CheckSo 用户指南》扫描Ambari安装包,分析得出需要移植的第三方依赖包。
需要重新编译的jar包 | jar包包含的so |
---|---|
jline-2.11.jar | libjansi.so |
leveldbjni-all-1.8.jar | libleveldbjni.so |
netty-all-4.0.23.Final.jar | libnetty-transport-native-epoll.so |
netty-all-4.0.37.Final.jar | libnetty-transport-native-epoll.so |
jruby-complete-1.6.8.jar | libjruby-cext.so |
lz4-1.2.0.jar | liblz4-java.so |
lz4-1.3.0.jar | liblz4-java.so |
snappy-java-1.0.4.1.jar | libsnappyjava.so |
snappy-java-1.1.1.7.jar | libsnappyjava.so |
sqlite-jdbc-3.8.11.2.jar | libsqlitejdbc.so |
需要重新编译的组件 |
---|
phoenix-5.0.0 |
hadoop-3.1.1 |
grafana-2.6.0 |
hbase2.0.2 |
phantomjs2.1.1 |
需要重新编译的so |
---|
libsnappy.so.1 |
_speedups.so |
_posixsubprocess32.so |
五、编译依赖库
编译依赖库
- 请参考表 依赖包编译参考编译部分第三方依赖包,表1 部分依赖包编译参考 | 依赖包名称 | 编译方法 | | —- | —- | | jline-2.11.jar | 请参考《jline-2.11,2.12,2.12.1,2.14.3.jar 移植指南(CentOS 7.6)》 | | leveldbjni-all-1.8.jar | 请参考《leveldbjni-all-1.8.jar 移植指南(CentOS 7.6)》 | | netty-all-4.0.23.Final.jar | 请参考《netty-all-4.0.23.Final,4.0.29.Final.jar 移植指南(CentOS 7.6)》 | | lz4-1.2.0.jar/lz4-1.3.0.jar | 请参考《lz4-java-x.x.x.jar 移植指南(CentOS 7.6)》 | | snappy-java-1.0.4.1.jar | 请参考《snappy-java-1.0.4.1,1.0.5 移植指南(CentOS 7.6)》 | | snappy-java-1.1.1.7.jar | 请参考《snappy-java-1.1.0.1,1.1.1.3,1.1.1.6,1.1.1.7,1.1.2.6.jar 移植指南(CentOS 7.6)》。 |
2.编译完成的jar包替换到自己搭建的maven仓库和本地仓库中。
编译_posixsubprocess32.so
通过命令安装python2-subprocess32。
yum install -y python2-subprocess32.aarch64
在/usr/lib64/python2.7/site-packages/_posixsubprocess.so处获得_posixsubprocess.so。
重命名_posixsubprocess.so为_posixsubprocess32.so。
mv _posixsubprocess.so _posixsubprocess32.so
在ambari的源码中“ambari-common/src/main/python/ambari_commons/libs”目录下执行命令。
cp -r x86_64 aarch64
使用3中的_posixsubprocess32.so替换掉aarch64目录下_posixsubprocess32.so
_posixsubprocess32.so源码地址:https://github.com/google/python-subprocess32/archive/3.5.3.tar.gz
编译_speedups.so
从ambari源码中“ambari-common/src/main/python/ambari_simplejson/init.py”文件中100行可知simplejson的版本为2.0.9。
version = ‘2.0.9’
下载simplejson源码并解压。
pip download simplejson==2.0.9
tar -zxf simplejson-2.0.9.tar.gz
cd simplejson-2.0.9
说明:
此步骤需保证有外网访问权限。
编译simplejson
python setup.py build
说明:
编译好的so文件在build/lib.linux-aarch64-2.7/simplejson/_speedups.so
使用编译完成的_speedups.so替换掉ambari-common/src/main/python/ambari_simplejson/目录下的_speedups.so
_speedups.so源码地址:https://github.com/pallets/markupsafe/archive/1.1.1.tar.gz
编译Phoenix-5.0.0
请参考《Phoenix 移植指南(CentOS 7.6)》,下载链接:https://github.com/hortonworks/phoenix-release/archive/HDP-3.0.0.0-1634-tag.tar.gz。
编译Hadoop-3.1.1
请参考《Hadoop 3.1.1 移植指南(CentOS 7.6)》,下载链接:https://github.com/hortonworks/hadoop-release/archive/HDP-3.0.0.0-1634-tag.tar.gz。
编译Hbase
请参考《Hbase 2.1.0 移植指南(CentOS 7.6)》,下载链接:https://github.com/hortonworks/hbase-release/archive/HDP-3.0.0.0-1634-tag.tar.gz。Phoenix、Hadoop、Hbase编译好后的tar.gz包放到文件服务器上,在编译ambari的时候,修改ambari-metrics/pom.xml中这三个tar.gz下载地址为我们的文件服务器地址。
编译container-executor/test-container-executor
请参考《Hadoop 3.1.1 移植指南(CentOS 7.6)》。
编译安装Grafana
下载grafana-2.6.0安装包。
wget https://github.com/grafana/grafana/archive/v2.6.0.tar.gz
解压安装包。
tar -zxf v2.6.0.tar.gz
mv v2.6.0 grafana-2.6.0
搭建好golang环境,并将源码移动到“GOPATH”目录下的“src”目录。
mv grafana-2.6.0 ${GOPATH}/src/
拷贝grafana-2.6.0项目编译过程中本身的依赖到src对应目录。
cd ${GOPATH}/src/grafana-2.6.0
$mkdir -p ../github.com/grafana/grafana/pkg
$cp pkg/* ../github.com/grafana/grafana/pkg/ -rf
执行后端编译。
go run build.go setup
go run build.go build
跳过phantomjs报错(因为系统中已安装),执行前端编译。
npm config set proxy http://{代理ip}:{代理端口}
npm config set https-proxy http://{代理ip}:{代理端口}
npm config set registry “http://registry.npmjs.org/“
npm config set strict-ssl false
npm install(可以去掉,只安装与grunt-cli相关的)
npm install -g grunt-cli
grunt —force
拷贝phantomjs可执行文件到相应目录,打包时将自动将phantomjs打包到grafana的rpm包中。
cp /opt/tools/phantomjs/phantomjs/bin/phantomjs vendor/phantomjs/
打包。
go run build.go package
说明:
如果打包出现错误,请参考问题26,采用如下命令打包:
./node_modules/grunt-cli/bin/grunt release —force
最终结果将会生成到tmp目录,直接对tmp目录进行压缩。
mv tmp grafana-2.6.0
tar -zcf grafana-2.6.0.tar.gz grafana-2.6.0
六、编译Ambari
编译前配置
下载源码。
wget https://github.com/hortonworks/ambari-release/archive/AMBARI-2.7.3.0-139-tag.tar.gz
须知:
如果wget下载时报无法验证github.com颁发的证书错误,可在wget命令后面跟参数—no-check-certificate。
解压源码。
tar -zxf AMBARI-2.7.3.0-139-tag.tar.gz
mv ambari-release-AMBARI-2.7.3.0-139-tag /opt/tools/installed
设置环境变量。
export PHANTOMJS_ARCH=”arm64”
git config —global http.sslverify false
修改CPU架构。
参考问题27,将所有pom.xml文件中的“needarch”值,从“x86_64”和“noarch”改为“aarch64”。
说明:
若X86的rpm包中含有noarch类型,还需在X86服务器上重新编译源码,将所有“needarch”值改为“x86_64”,再重新生成rpm包,从而更好地支持Ambari的X86和泰山服务器混合部署。
将安装nodejs中下载的node-v8.6.0-linux-arm64.tar.gz和v4.5版nodejs移动到maven本地仓。
mkdir -p /root/.m2/repository/com/github/eirslett/node/8.6.0/
mkdir -p /root/.m2/repository/com/github/eirslett/node/4.5.0/
cp node-v8.6.0-linux-arm64.tar.gz /root/.m2/repository/com/github/eirslett/node/8.6.0/
wget http://nodejs.org/dist/v4.5.0/node-v4.5.0-linux-arm64.tar.gz —no-check-certificate
cp node-v4.5.0-linux-arm64.tar.gz /root/.m2/repository/com/github/eirslett/node/4.5.0/
下载yarn到maven本地仓。
wget https://github.com/yarnpkg/yarn/releases/download/v1.1.0/yarn-v1.1.0.tar.gz —no-check-certificate
wget https://github.com/yarnpkg/yarn/releases/download/v0.23.2/yarn-v0.23.2.tar.gz —no-check-certificate
mkdir /root/.m2/repository/com/github/eirslett/yarn/1.1.0/
mkdir /root/.m2/repository/com/github/eirslett/yarn/0.23.2/yarn-0.23.2./
cp yarn-v1.1.0.tar.gz /root/.m2/repository/com/github/eirslett/yarn/1.1.0/yarn-1.1.0.tar.gz
cp yarn-v0.23.2.tar.gz /root/.m2/repository/com/github/eirslett/yarn/0.23.2/yarn-0.23.2./yarn-v0.23.2.tar.gz
设置yarn取消ssl验证。
在非编译目录执行。
tar -zxf yarn-v0.23.2.tar.gz
cd yarn-v0.23.2
./yarn config set strict-ssl false
回到上一层目录
cd -
配置npm代理。
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
须知:
##若配置网络代理需执行
npm config set proxy http://{代理ip}:{代理端口}
npm config set https-proxy http://{代理ip}:{代理端口}
修改ambari-web/package.json,将phantomjs版本修改为 2.1.1。
vim /opt/tools/installed/ambari-release-AMBARI-2.7.3.0-139-tag/ambari-web/package.json
vim /opt/tools/installed/ambari-release-AMBARI-2.7.3.0-139-tag/ambari-web/node_modules/mocha-phantomjs/package.json
修改ambari-metrics/pom.xml 中仓库地址。
vim /opt/tools/installed/ambari-release-AMBARI-2.7.3.0-139-tag/ambari-metrics/pom.xml
将hbase,hadoop,grafana,Phoenix地址和文件名修改成提供的地址和相应版本。
说明:
这里用本地搭建的源作为示例。
<hbase.tar>http://192.168.1.91/packages/tar/hbase-2.0.0.3.0.0.0-1634-bin.tar.gz</hbase.tar>
<hbase.folder>hbase-2.0.0.3.0.0.0-1634</hbase.folder>
<hadoop.tar>http://192.168.1.91/packages/tar/hadoop-3.1.0.3.0.0.0-1634.tar.gz</hadoop.tar>
<hadoop.folder>hadoop-3.1.0.3.0.0.0-1634</hadoop.folder>
<grafana.folder>grafana-2.6.0</grafana.folder>
<grafana.tar>http://192.168.1.91/packages/tar/grafana-2.6.0.tar.gz</grafana.tar>
<phoenix.tar>http://192.168.1.91/packages/tar/phoenix-5.0.0.3.0.0.0-1634.tar.gz</phoenix.tar>
修改ambari-metrics/pom.xml中hdp的url为http://repo.hortonworks.com/content/repositories/releases
将以下标签中url改为http://repo.hortonworks.com/content/repositories/releases
<repository>
<id>apache-hadoop</id>
<name>hdp</name>
<url>http://repo.hortonworks.com/content/repositories/releases</url>
</repository>
修改ambari-metrics/pom.xml中https开头的域名改为http(可选,配置代理时需要)。
<grafana.tar>https://grafanarel.s3.amazonaws.com/builds/grafana-2.6.0.linux-x64.tar.gz</grafana.tar>
<phoenix.tar>http://dev.hortonworks.com.s3.amazonaws.com/HDP/centos7/3.x/BUILDS/3.0.0.0-1634/tars/phoenix/phoenix-5.0.0.3.0.0.0-1634.tar.gz</phoenix.tar>
<phoenix.folder>phoenix-5.0.0.3.0.0.0-1634</phoenix.folder>
<resmonitor.install.dir>/usr/lib/python2.6/site-packages/resource_monitoring</resmonitor.install.dir>
<powermock.version>1.6.2</powermock.version>
<distMgmtSnapshotsId>apache.snapshots.https</distMgmtSnapshotsId>
<distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>
<distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>
<distMgmtStagingId>apache.staging.https</distMgmtStagingId>
<distMgmtStagingName>Apache Release Distribution Repository</distMgmtStagingName>
<distMgmtStagingUrl>https://repository.apache.org/service/local/staging/deploy/maven2</distMgmtStagingUrl>
<fasterxml.jackson.version>2.9.5</fasterxml.jackson.version>
</properties>
<distributionManagement>
<repository>
<id>${distMgmtStagingId}</id>
<name>${distMgmtStagingName}</name>
<url>${distMgmtStagingUrl}</url>
</repository>
<snapshotRepository>
<id>${distMgmtSnapshotsId}</id>
<name>${distMgmtSnapshotsName}</name>
<url>${distMgmtSnapshotsUrl}</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>apache-hadoop</id>
<name>hdp</name>
<url>http://nexus-private.hortonworks.com/nexus/content/groups/public</url>
</repository>
<repository>
<id>apache-snapshots</id>
<name>snapshots</name>
<url>https://repository.apache.org/content/repositories/snapshots</url>
“ambari-infra/ambari-infra-solr-client/build.xml”中添加代理(可选,若设置代理)。
vim /opt/tools/installed/ambari-release-AMBARI-2.7.3.0-139-tag/ambari-infra/ambari-infra-solr-client/build.xml
project标签中添加
<setproxy proxyhost="{代理ip}" proxyport="{代理端口}" />
修改“ambari-admin/src/main/resources/ui/admin-web/package.json ”中karma-phantomjs-launcher为1.0。
vim /opt/tools/installed/ambari-release-AMBARI-2.7.3.0-139-tag/ambari-admin/src/main/resources/ui/admin-web/package.json
{
"name": "adminconsole",
"version": "0.0.0",
"dependencies": {},
"devDependencies": {
"bower": "1.3.8",
"gulp": "^3.8.8",
"gulp-add-src": "^0.2.0",
"gulp-autoprefixer": "0.0.7",
"gulp-cache": "0.1.1",
"gulp-clean": "0.2.4",
"gulp-concat": "2.6.0",
"gulp-filter": "0.4.1",
"gulp-flatten": "0.0.2",
"gulp-load-plugins": "0.5.0",
"gulp-order": "1.1.1",
"gulp-plumber": "1.1.0",
"gulp-size": "0.3.0",
"gulp-uglify": "0.2.1",
"gulp-useref": "0.4.2",
"http-server": "0.6.1",
"karma": "0.12.16",
"karma-chrome-launcher": "0.1.4",
"karma-jasmine": "0.1.5",
"karma-ng-html2js-preprocessor": "^0.1.0",
"karma-phantomjs-launcher": "1.0",
"phantomjs": "^2.1.7",
"protractor": "1.0.0"
},
须知:
- json格式注意用逗号分开。
- 如果需要通过代理访问网络,则修改./ambari-admin/src/main/resources/ui/admin-web/.bowerrc。
vim /opt/tools/installed/ambari-release-AMBARI-2.7.3.0-139-tag/ambari-admin/src/main/resources/ui/admin-web/.bowerrc
添加”strict-ssl”: false,和”https-proxy”:
{
"directory": "app/bower_components",
"strict-ssl": false,
"https-proxy":"http://{代理ip}:{代理端口}",
}
修改 “ambari-infra/pom.xml”中https开头的域名改为http(可选,配置代理时需要)。
vim /opt/tools/installed/ambari-release-AMBARI-2.7.3.0-139-tag/ambari-infra/pom.xml
<issueManagement>
<system>jira</system>
<url>https://issues.apache.org/jira/browse/AMBARI</url>
</issueManagement>
<repositories>
<repository>
<id>apache-hadoop</id>
<name>hdp</name>
<url>http://repo.hortonworks.com/content/groups/public/</url>
</repository>
<repository>
<id>oss.sonatype.org</id>
<name>OSS Sonatype Staging</name>
<url>https://oss.sonatype.org/content/groups/staging</url>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>http://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>ASF Staging</id>
<url>https://repository.apache.org/content/groups/staging/</url>
</repository>
<repository>
<id>ASF Snapshots</id>
<url>https://repository.apache.org/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
执行grep -rn “oss.sonatype” 将查找出的所有pom中的该maven仓库注释掉。
[root@Namenode2 ambari-release-AMBARI-2.7.3.0-139-tag]# grep -rn "oss\.sonatype"
ambari-infra/pom.xml:63: <id>oss.sonatype.org</id>
ambari-infra/pom.xml:65: <url>https://oss.sonatype.org/content/groups/staging</url>
ambari-logsearch/pom.xml:81: <id>oss.sonatype.org</id>
ambari-logsearch/pom.xml:83: <url>https://oss.sonatype.org/content/groups/staging</url>
ambari-server/pom.xml:1851: <id>oss.sonatype.org</id>
ambari-server/pom.xml:1853: <url>https://oss.sonatype.org/content/groups/staging</url>
ambari-serviceadvisor/pom.xml:62: <id>oss.sonatype.org</id>
ambari-serviceadvisor/pom.xml:64: <url>https://oss.sonatype.org/content/groups/staging</url>
pom.xml:107: <id>oss.sonatype.org</id>
pom.xml:109: <url>https://oss.sonatype.org/content/groups/staging</url>
示例:
[root@Namenode2 ambari-release-2.7.3]# vim ambari-infra/pom.xml、
注释整个标签
<!--
<repository>
<id>oss.sonatype.org</id>
<name>OSS Sonatype Staging</name>
<url>https://oss.sonatype.org/content/groups/staging</url>
</repository>
-->
将所有https://repository.apache.org/content/repositories/snapshots/改为http://repository.apache.org/content/repositories/snapshots/
执行
grep -rn “repository.apache.org”
[root@Namenode2 ambari-release-2.7.3]# grep -rn "repository.apache.org"
ambari-infra/pom.xml:77: <url>https://repository.apache.org/content/groups/staging/</url>
ambari-infra/pom.xml:81: <url>https://repository.apache.org/content/repositories/snapshots/</url>
ambari-logsearch/pom.xml:95: <url>https://repository.apache.org/content/groups/staging/</url>
ambari-logsearch/pom.xml:99: <url>https://repository.apache.org/content/repositories/snapshots/</url>
ambari-metrics/pom.xml:55: <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>
ambari-metrics/pom.xml:58: <distMgmtStagingUrl>https://repository.apache.org/service/local/staging/deploy/maven2</distMgmtStagingUrl>
ambari-metrics/pom.xml:82: <url>https://repository.apache.org/content/repositories/snapshots</url>
pom.xml:59: <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>
pom.xml:62: <distMgmtStagingUrl>https://repository.apache.org/service/local/staging/deploy/maven2</distMgmtStagingUrl>
pom.xml:121: <url>https://repository.apache.org/content/groups/staging/</url>
pom.xml:125: <url>https://repository.apache.org/content/repositories/snapshots/</url>
示例:
vim ambari-infra/pom.xml
修改url标签中地址
<repository>
<id>ASF Snapshots</id>
<url>http://repository.apache.org/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
编译执行
整体编译。
mvn -B install package rpm:rpm -DnewVersion=2.7.3.0.0 -DskipTests -Dmaven.test.skip=true -Drat.numUnapprovedLicenses=1000 -Dpython.ver=”python>=2.6” -Drat.skip -Dcheckstyle.skip
编译各个模块。
mvn clean package -Dbuild-rpm -Dmaven.test.skip=true -DskipTests -Drat.numUnapprovedLicenses=1000 -Dpython.ver=”python>=2.6”
整体编译各个模块并没有生成有效大小的rpm包,需要进入子目录,单独编译各个模块,最终将生成如下大小正常的rpm包。
说明:
编译过程中遇到的任何问题可参考故障排除。
七、故障排除
问题1:cannot access org.json.simple.JSONAware
现象描述:
编译过程中提示“cannot access org.json.simple.JSONAware”。
处理步骤:
修改“ambari-metrics/ambari-metrics-storm-sink-legacy/pom.xml”文件,将JSONAware对应的jar包加入到dependency中去。
问题2:cannot find symbol HBaseTestingUtility
现象描述:
编译过程中提示“cannot find symbol HBaseTestingUtility”。
处理步骤:
目前采用直接跳过tests的编译和运行方法,编译命令中加上如下参数:
-Dmaven.test.skip=true -DskipTests
问题3:Could not find artifact org.apache.zookeeper:zookeeper:jar: 3.4.6.2.3.0.0-2557
现象描述:
编译过程中提示“Could not find artifact org.apache.zookeeper:zookeeper:jar: 3.4.6.2.3.0.0-2557”。
可能原因:
仓库里面不存在该jar包,需要放到cmss.arm仓。
处理步骤:
从honorworks官网下载该jar包,暂时放到本地仓。
mkdir -p repo/org/apache/zookeeper/zookeeper/3.4.6.2.3.0.0-2557/
cp zookeeper-3.4.6.2.3.0.0-2557.jar repo/org/apache/zookeeper/zookeeper/3.4.6.2.3.0.0-2557/
问题4:java.net.UnknownHostException: central.maven.org
现象描述:
编译过程中提示“java.net.UnknownHostException: central.maven.org”。
处理步骤:
需要下载两个jar包:lucene-core-6.6.2.jar和lucene-backward-codecs-6.6.2.jar。
- 手动下载两个jar包。wget http://central.maven.org/maven2/org/apache/lucene/lucene-core/6.6.2/lucene-core-6.6.2.jar
wget http://central.maven.org/maven2/org/apache/lucene/lucene-backward-codecs/6.6.2/lucene-backward-codecs-6.6.2.jar - 放到本地和搭建的maven仓中。mkdir -p /data01/repo/org/apache/lucene/lucene-core/6.6.2/
mkdir -p /data01/repo/org/apache/lucene/lucene-backward-codecs/6.6.2/
cp lucene-core-6.6.2.jar /data01/repo/org/apache/lucene/lucene-core/6.6.2/
cp lucene-backward-codecs-6.6.2.jar /data01/repo/org/apache/lucene/lucene-backward-codecs/6.6.2/ 修改ambari-infra/ambari-infra-solr-client/pom.xml文件,改为本地路径或者文件服务器路径。下图中修改成了本地路径:
问题5:yarn下载大概541个tgz包,通过代理无法下载
现象描述:
ambari-web提示yarn下载大概541个tgz包,通过代理无法下载。
处理步骤:整理出ambari-web模块中的yarn.lock文件中的tgz包下载地址。grep -r “resolved” ambari-web/yarn.lock | awk -F “ “ ‘{print $2}’ | awk -F “#” ‘{print $1}’ | awk -F “\”” ‘{print $2}’ > /home/tools/yarn/yarn.download
- 利用wget下载。cd /home/tools/yarn
wgetcat yarn.download
—no-check-certificate - 设置yarn的本地镜像路径。yarn config set yarn-offline-mirror /home/tools/yarn/
将下载的tgz放到“/home/tools/yarn”目录。
问题6:单独编译ambari-infra模块出现无法下载压缩包
现象描述:
单独编译ambari-infra模块时提示“java.net.UnknownHostException: public-repo-1.hortonworks.com”,无法下载solr-7.4.0.tgz。
处理步骤:
手动下载,然后放到内网文件服务器上。手动下载solr-7.4.0.tgz并放到本地目录。wget http://public-repo-1.hortonworks.com/ARTIFACTS/dist/lucene/solr/7.4.0/solr-7.4.0.tgz
修改“ambari-infra-assembly/pom.xml”文件:
问题7:无法下载commons-fileupload-1.3.3.jar
现象描述:
编译过程中无法下载commons-fileupload-1.3.3.jar。
处理步骤:下载commons-fileupload-1.3.3.jar。wget http://central.maven.org/maven2/commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3.jar
- 放到创建的maven仓,目前暂时放到本地仓。cp commons-fileupload-1.3.3.jar repo/commons-fileupload/commons-fileupload/1.3.3/
修改ambari-infra-assembly/pom.xml文件;
问题8:仓库中找不到ring-cors-0.1.5.jar
现象描述:
仓库中找不到ring-cors-0.1.5.jar。
处理步骤:
从maven仓库中手动下载下来,放到本地仓库和搭建的maven仓库中。问题9:org.apache.storm:storm-core:jar:0.10.0.2.3.0.0-2557找不到
现象描述:
编译过程中提示“org.apache.storm:storm-core:jar:0.10.0.2.3.0.0-2557”找不到。
处理步骤:
从maven或hornworks官网将该jar包下载下来,并替换到本地仓库和搭建的maven仓库中。问题10:缺少一大堆jar包
现象描述:
编译过程中提示缺少一大堆jar包。
处理步骤:
从maven或hornworks官网将这些jar包下载下来,并替换到本地仓库和搭建的maven仓库中。
wget https://repo.spring.io/plugins-release/org/apache/zookeeper/zookeeper/3.4.5.1.3.0.0-107/zookeeper-3.4.5.1.3.0.0-107.jar
wget https://repo.spring.io/plugins-release/org/apache/phoenix/phoenix-core/5.0.0.3.0.0.0-1634/phoenix-core-5.0.0.3.0.0.0-1634.jar
wget https://repo.spring.io/plugins-release/org/apache/hadoop/hadoop-common/3.1.0.3.0.0.0-1634/hadoop-common-3.1.0.3.0.0.0-1634.jar
wget https://repo.spring.io/plugins-release/org/apache/hadoop/hadoop-common/3.1.0.3.0.0.0-1634/hadoop-common-3.1.0.3.0.0.0-1634-tests.jar
wget https://repo.spring.io/plugins-release/org/apache/hadoop/hadoop-annotations/3.1.0.3.0.0.0-1634/hadoop-annotations-3.1.0.3.0.0.0-1634.jar
wget https://repo.spring.io/plugins-release/org/apache/hadoop/hadoop-yarn-common/3.1.0.3.0.0.0-1634/hadoop-yarn-common-3.1.0.3.0.0.0-1634.jar
wget https://repo.spring.io/plugins-release/org/apache/hadoop/hadoop-yarn-common/3.1.0.3.0.0.0-1634/hadoop-yarn-common-3.1.0.3.0.0.0-1634-tests.jar
wget https://repo.spring.io/plugins-release/org/apache/hadoop/hadoop-yarn-api/3.1.0.3.0.0.0-1634/hadoop-yarn-api-3.1.0.3.0.0.0-1634.jar
wget https://repo.spring.io/plugins-release/org/apache/hadoop/hadoop-yarn-server-common/3.1.0.3.0.0.0-1634/hadoop-yarn-server-common-3.1.0.3.0.0.0-1634.jar
wget https://repo.spring.io/plugins-release/org/apache/phoenix/phoenix-core/5.0.0.3.0.0.0-1634/phoenix-core-5.0.0.3.0.0.0-1634-tests.jar
wget https://repo.spring.io/plugins-release/org/apache/hbase/hbase-it/2.0.0.3.0.0.0-1634/hbase-it-2.0.0.3.0.0.0-1634-tests.jar
wget https://repo.spring.io/plugins-release/org/apache/hbase/hbase-testing-util/2.0.0.3.0.0.0-1634/hbase-testing-util-2.0.0.3.0.0.0-1634.jar
wget https://repo.spring.io/plugins-release/org/apache/ignite/ignite-core/2.1.0/ignite-core-2.1.0.jar
wget https://repo.spring.io/plugins-release/org/apache/ignite/ignite-log4j/2.1.0/ignite-log4j-2.1.0.jar问题11:无法下载hbase、hadoop、phoenix三个压缩包
现象描述:
无法下载hbase、hadoop、phoenix三个压缩包。
处理步骤:然后修改ambari-metrics/pom.xml文件中如下的压缩包路径为本地路径,并修改版本号。修改前:
修改后:修改ambari-metrics-timelineservice/pom.xml中的hadoop、hbase、phoenix版本号。修改前:
修改后:
问题12:多类找不到的错误
现象描述:
编译过程中提示“package org.apache.hadoop.hbase does not exist”、“package org.apache.commons.lang3 does not exist”、“javax.cache.expiry.Duration does not exist”等多类找不到的错误。
处理步骤:将hbase-client-2.0.0.3.0.0.0-1634.jar的引用放到ambari-metrics-timelineservice/pom.xml文件的dependency中去。下载:wget https://repo.spring.io/plugins-release/org/apache/hbase/hbase-client/2.0.0.3.0.0.0-1634/hbase-client-2.0.0.3.0.0.0-1634.jar
并放到本地仓库和搭建的Maven仓库中
pom.xml修改后:- 修改ambari-metrics-timelineservice/pom.xml文件。修改前:
修改后: ambari-metrics-timelineservice/pom.xml文件中增加cache-api.jar的dependency。下载并更新到本地和搭建的maven仓库中:
*wget https://repo.spring.io/plugins-release/javax/cache/cache-api/1.1.1/cache-api-1.1.1.jar
pom.xml修改后:
问题13:ambari-release-2.7.3/ambari-web/node_modules/mocha-phantomjs/node_modules/phantomjs: Command failed
现象描述:
ambari-release-2.7.3/ambari-web/node_modules/mocha-phantomjs/node_modules/phantomjs: Command failed
Downloading https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-i686.tar.bz2
可能原因:
查看ambari-web目录下的yarn.lock文件,发现mocha-phantomjs使用的phantomjs版本是1.9.7-15:
而此版本里面的phantomjs.js文件里面的export.version=1.9.7:
版本不一致导致重新下载。
处理步骤:修改本地文件mocha-phantomjs-4.1.0.tgz包中的package.json文件的39行,修改为:“2.1.1”,并重新压缩,获取sha1sum的值。
- 修改ambari-web/yarn.lock文件,将phantomjs版本改为“~2.1.0”,并修改后面的sha1sum的值,否则会报“error Bad hash. Expected “c6910f67935c37285b6114329fc2f27d5f3e3134” but got “82d511fe30d6025de4f4fa70e58c96a74f93fe3a””之类的错误:
说明:
该文件中必须有phantomjs对应的版本(如下图)才可修改版本,否则会重新下载对应版本的下载包。
无法访问对应网址的话,会try 4次,并且报错: 替换掉本地的yarn目录下的tgz包,重新编译。说明:
可让服务器不联网,即可使用本地的tgz和phantomjs包。
问题14:PhantomJS not found on PATH
现象描述:
error /home/ambari/ambari-release-2.7.3/ambari-web/node_modules/phantomjs-prebuilt: Command failed
处理步骤:
需要参考安装Phantomjs编译好pantomjs,并配置好环境变量。yarn config set yarn-offline-mirror /home/tools/yarn export PATH=/home/tools/phantomjs/bin/:/home/ambari/ambari-release-2.7.3/ambari-web/node/:/home/ambari/ambari-release-2.7.3/ambari-web/node/yarn/dist/bin/:/home/tools/node-v4.5.0-linux-arm64/bin:$PATH export PHANTOMJS_ARCH="arm64"
问题15:Error:Invalid operands (UND and UND sections) for ‘*’错误
现象描述:
编译phantomjs报错:Error:Invalid operands (UND and UND sections) for ‘‘错误。
*处理步骤:
打开src/qt/qtbase/src/gui目录中的Makefile,将-O3修改为-O2,重新启动编译即可。问题16:aarch64生成的目标文件和X86的差别大
现象描述:
aarch64生成的目标文件和X86的差别大,只有三个文件有效,下面是X86的六个包和大小。
可能原因:
整体编译通过后,需要单独打包各个模块才能生成正常的rpm包。
处理步骤:
参考编译执行进行整体编译和各个子模块单独编译出包。问题17:PhantomJS detected, but wrong version 2.1.1 @ /home/tools/phantomjs/phantomjs-2.1.1/bin/phantomjs
现象描述:
npm ERR! argv "/home/ambari/ambari-release-2.7.3/ambari-admin/src/main/resources/ui/admin-web/node/node" "/home/ambari/ambari-release-2.7.3/ambari-admin/src/main/resources/ui/admin-web/node/node_modules/npm/bin/npm-cli.js" "install" "--unsafe-perm" Failed at the phantomjs@1.9.20 install script 'node install.js'.
处理步骤:执行以下命令。npm config rm proxy
npm config rm http-proxy
npm config rm https-proxy
npm config set no-proxy .huawei.com
npm config set registry http://registry.npmjs.org/
npm install karma-phantomjs-launcher- 修改ambari-admin/src/main/resources/ui/admin-web/package.json文件,将26行改为1.0,此版本依赖phantomjs2.1.1。
问题18:UNABLE_TO_VERIFY_LEAF_SIGNATURE Request to https://registry.bower.io/packages/angular-animate failed: unable to verify the first certificate
现象描述:
UNABLE_TO_VERIFY_LEAF_SIGNATURE Request to https://registry.bower.io/packages/angular-animate failed: unable to verify the first certificate
处理步骤:
- “ambari-admin/src/main/resources/ui/admin-web/.bowerrc”文件中增加如下内容(增加一个禁止使用ssl的选项),注意多行用逗号分隔:
修改“ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/node_modules/bower-config/lib/util/defaults.js”文件的24行,将https改为http:
问题19:ECMDERR Failed to execute “git ls-remote —tags —heads https://github.com/twbs/bootstrap.git”, exit code of
现象描述:
fatal: unable to access 'https://github.com/twbs/bootstrap.git/': Peer's Certificate issuer is not recognized.
处理步骤:运行下面的命令:$git config —global http.sslverify false
单独运行该命令“git ls-remote —tags —heads https://github.com/twbs/bootstrap.git”通过,再次执行编译命令通过。
问题20:打ambari-metrics中的rpm包出错
现象描述:
error: line 7: Dependency tokens must begin with alpha-numeric, '_' or '/': Requires: python >=2.6
问题21:Could not download Node.js
现象描述:
Could not download Node.js: Could not download https://nodejs.org/dist/v8.6.0/node-v8.6.0-linux-arm64.tar.gz: Unknown host nodejs.org: Name or service not known
处理步骤:手动下载。wget https://nodejs.org/dist/v8.6.0/node-v8.6.0-linux-arm64.tar.gz
放到提示的本地仓库和搭建的maven仓库中。cp localfiles/node-v8.6.0-linux-arm64.tar.gz repo/com/github/eirslett/node/8.6.0/node-8.6.0-linux-arm64.tar.gz
问题22:Could not download Yarn
现象描述:
Could not download Yarn: Could not download https://github.com/yarnpkg/yarn/releases/download/v1.1.0/yarn-v1.1.0.tar.gz: Unknown host github.com: Name or service not known
处理步骤:手动下载。wget https://github.com/yarnpkg/yarn/releases/download/v1.1.0/yarn-v1.1.0.tar.gz
放到提示的本地仓库和搭建的maven仓库中。cp localfiles/yarn-v1.1.0.tar.gz repo/com/github/eirslett/yarn/1.1.0/yarn-1.1.0.tar.gz
问题23:error An unexpected error occurred
现象描述:
error An unexpected error occurred: "https://registry.yarnpkg.com/@angular/http/-/http-4.4.3.tgz: unable to verify the first certificate"
可能原因:
“/home/ambari/ambari-release-2.7.3/ambari-web/node/yarn/dist/bin/yarn”使用的yarn是0.23.2版本,而logsearch-web使用的是1.1.0的版本。
处理步骤:重新设置PATH环境变量。
export PATH=/home/ambari/ambari-release-2.7.3/ambari-logsearch/ambari-logsearch-web/target/webapp-build/node/:/home/ambari/ambari-release-2.7.3/ambari-logsearch/ambari-logsearch-web/target/webapp-build/node/yarn/dist/bin/:$PATH
整理需要下载的压缩包文件。grep -r “resolved” ambari-logsearch/ambari-logsearch-web/yarn.lock | awk -F “ “ ‘{print $2}’ | awk -F “#” ‘{print $1}’ | awk -F “\”” ‘{print $2}’> /home/tools/yarn-logsearch/yarn-logsearch-download.log
- 下载压缩包文件。cd /home/tools/yarn-logsearch/
wgetcat yarn-logsearch-download.txt
—no-check-certificate - 拷贝到yarn目录(和ambari-web中下载的tgz包一个目录)。\cp *.tgz ../yarn/
- 设置yarn的本地镜像路径。yarn config set yarn-offline-mirror /home/tools/yarn/
yarn config set registry /home/tools/yarn
yarn config set strict-ssl true 共下载了1082个tgz包,拷贝到设置的yarn本地镜像路径后,再次启动编译。
问题24:提示未设置phantomjs的bin的环境变量
现象描述:
Grafana2.6.0打包报错,提示未设置phantomjs的bin的环境变量:No binary for PhantomJS browser on your platform, Please, set "PHANTOMJS_BIN" env variable.
处理步骤:
export PHANTOMJS_BIN=/home/tools/phantomjs/phantomjs-2.1.1/bin/问题25:Grafana 2.6.0 打包错误(1)
现象描述:
TypeError: Cannot read property 'prototype' of undefined Loading "grunt-karma.js" tasks...ERROR
处理步骤:
npm install karma
npm install grunt-karma
问题26:Grafana 2.6.0 打包错误(2)
现象描述:
/node_modules/grunt-cli/bin/grunt release Running "jshint:source" (jshint) task
可能原因:
打包命令出错。
处理步骤:
直接根据提示,用grunt命令加—force来进行打包。
./node_modules/grunt-cli/bin/grunt release —force
问题27:rpm包名字是x86_64后缀
现象描述:
ambari-agent-2.7.3.0-0.x86_64.rpm该模块生成的rpm包名字为X86_64,实际是aarch64版本。
处理步骤:修改“ambari-agent/pom.xml”中304行为“aarch64”。
- 再次启动编译,生成正常名字的rpm包。
须知:ambari-server-2.7.3.0-0.x86_64.rpm同理修改,在aarch64机器上编译rpm包,所有涉及是noarch的地方,也改成aarch64,原因有二:
- rpm包里面有so或者二进制文件不是跨平台的;
- 混部需要3中类型的包:aarch64、x86_64、noarch,并且noarch的rpm包里面没有so或二进制文件。
问题28:RPM build errors: Arch dependent binaries in noarch package
现象描述:
生成noarch类型的rpm包可能会报此问题,默认需要在specs文件中增加下面的语句,但此时会用rpmbuild命令去生成rpm包了,而针对ambari来说,不需要生成noarch类型的rpm包。
%define _binaries_in_noarch_packages_terminate_build 0
处理步骤:
请参考问题27。
- 修改needarch内容从“noarch”到“aarch64”。
- 重新编译。