国产操作系统麒麟(kylin)V10编译bigtop

    1. 国产操作系统麒麟(kylin)V10编译bigtop

      麒麟V10版本的python版本是2.7.18版本,kylin-server-V10版本是centos-7.x的改版。

特别说明:麒麟V10的yum源中缺少bigtop-select的安装包。
麒麟V10安装后,时区不是标准的Asia/Shanghai,设置标准时区后,需要调整ntp同步服务。
并运行:hwclock -w 将时间写入bios。
特别提醒:时间会慢慢产生很大差异。几天就会导致几个小时差异。需要做ntp同步,不然导致编译过程中的时间校验导致tez编译出错:check time ERROR。
      1. 编译环境准备

     这里使用scala版本是2.12.17。java是1.8. 0_312,R是4.0.0.maven是3.6.3,nodejs师v12.22.1,ant1.9.16,ivy2.4.0,gradle7.5.1等。

        1. 操作系统

vm虚拟机安装centos8系列操作系统

如果操作系统为kylin-server V10版本的python是2.7.18版本,是centos7.X的版本。

        1. 挂载国内yum源
yum install wget -y
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak
 
 
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

        1. 更新和安装基础软件
yum -y groupinstall "Infrastructure Server"  
yum -y groupinstall "Compatibility Libraries"  
yum -y groupinstall "Development Tools"  
yum -y update

        1. 操作系统其他操作

#关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

#关闭SELINUX

setenforce 0
cp /etc/selinux/config /etc/selinux/config.bak
echo SELINUX=disabled > /etc/selinux/config
echo SELINUXTYPE=targeted >> /etc/selinux/config

#修改limits.conf

cp /etc/security/limits.conf /etc/security/limits.conf.bak
echo "*  hard    nproc    65535" > /etc/security/limits.conf
echo "*  soft    nproc    65535" >> /etc/security/limits.conf
echo "*  hard    nofile   65535" >> /etc/security/limits.conf
echo "*  soft    nofile   65535" >> /etc/security/limits.conf

#修改时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo ntpdate -d 100.10.1.20
ntpdate time.nist.gov

#重启

reboot

编译工具准备

        1. 安装Java
yum -y install java-1.8.0-openjdk*

另外一种安装方法:

#cd /opt/
#wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.tar.gz"
#tar xzf jdk-8u45-linux-x64.tar.gz
#配置JAVA_HOME

        1. *修改SSH的域名访问权限
ping raw.githubusercontent.com #得到ip
vi /etc/hosts

下面ip会变化,需要手工ping 域名得到正确的IP

#199.232.28.133 raw.githubusercontent.com
182.92.29.16 maven.aliyun.com
185.199.111.133 raw.githubusercontent.com
108.160.169.186 en.wikipedia.org
104.16.30.34 registry.npmjs.org
104.16.2.35 registry.npmjs.com

说明:使用ping raw.githubusercontent.com 得到ip如果网络换了需要重新ping得到ip

Message: libcurl error code 35:
        OpenSSL SSL_connect: Connection reset by peer in connection to en.wikipedia.org:443

说明:尤其换网络就需要重新修改一下hosts配置。电信和联通的网络导致访问不一致。

特别提醒:编译kafka-rpm的时候,在宾馆或有代理的地方,经常无法连接raw.githubusercontent.com,使用手机热点(用5g或4g)网络可以连接!

        1. 安装Scala
Rpm安装方法(在麒麟操作系统下不建议使用rpm安装方法)
wget https://downloads.lightbend.com/scala/2.12.17/scala-2.12.17.rpm
rpm -ivh scala-2.12.17.rpm

说明:使用rpm安装会出现,所有文件并没有放置在/usr/share/scala路径。建议使用tar解压配置安装。

特别提醒:麒麟操作系统用rpm安装,安装路径乱,而且环境变量设置有问题导致运行scala出差。建议用下载包,tar解压安装方法。

(建议安装方法)tar解压安装方法。
wget http://downloads.typesafe.com/scala/2.12.17/scala-2.12.17.tgz -O /opt/scala-2.12.17.tgz
cd /opt
tar -zxf scala-2.12.17.tgz
设置profile文件中的参数:
#vi profile
export SCALA_HOME=/opt/scala-2.12.17
export PATH=$SCALA_HOME/bin:$PATH
source /etc/profile

        1. 安装Maven

修改环境变量:

#vi /etc/profile

export MAVEN_OPTS="-Xms2048m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=1024m -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true"

进入/opt路径下载安装maven,注意需要配置MAVEN_HOME和PATH

cd /opt
wget https://repo.huaweicloud.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
 
 
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/
 
 
ln -s /opt/apache-maven-3.6.3/ /opt/maven
 
 
#替换settings.xml
mv /opt/maven/conf/settings.xml /opt/maven/conf/settings.xml.bak
cat > /opt/maven/conf/settings.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">
 
 
  <pluginGroups></pluginGroups>
  <proxies></proxies>
  <servers></servers>
  <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
 
        <mirror>
            <id>uk</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://uk.maven.org/maven2/</url>
        </mirror>
 
        <mirror>
            <id>CN</id>
            <name>OSChina Central</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
 
        <mirror>
            <id>nexus</id>
            <name>internal nexus repository</name>
            <url>http://repo.maven.apache.org/maven2</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
</mirrors>
 
  <profiles>
    <profile>
      <id>aliyun</id> 
      <repositories>
        <repository>
          <id>aliyun</id> 
          <url>https://maven.aliyun.com/repository/public</url> 
          <releases>
            <enabled>true</enabled>
          </releases> 
          <snapshots>
            <enabled>true</enabled> 
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
           <pluginRepositories>
         <pluginRepository>
             <id>aliyun-plugin-repository</id>
             <name>aliyun-plugin-repository</name>
             <url>https://maven.aliyun.com/repository/public</url>
          </pluginRepository>
      </pluginRepositories>
    </profile>    
         <profile>
      <id>huaweiyun</id> 
      <repositories>
        <repository>
          <id>huaweiyum</id> 
          <url>https://mirrors.huaweicloud.com/repository/maven/</url> 
          <releases>
            <enabled>true</enabled>
          </releases> 
          <snapshots>
            <enabled>true</enabled> 
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
           <pluginRepositories>
         <pluginRepository>
             <id>huawei-plugin-repository</id>
             <name>huawei-plugin-repository</name>
             <url>https://mirrors.huaweicloud.com/repository/maven/</url>
          </pluginRepository>
      </pluginRepositories>
    </profile>
    
    <profile>
      <id>repo1</id>
      <repositories>
        <repository>
          <id>repo1</id>
          <url>https://repo1.maven.org/maven2</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>
    <profile>
      <id>repo2</id>
      <repositories>
        <repository>
          <id>repo2</id>
          <url>https://repo.maven.apache.org/maven2</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
           
    </profile>
  </profiles>
 
  <activeProfiles>
  <activeProfile>aliyun</activeProfile>
  <activeProfile>repo1</activeProfile>
  <activeProfile>repo2</activeProfile>
  <activeProfile>huaweiyun</activeProfile>
 
</activeProfiles>
</settings>
EOF

          1. 提升maven下载jar速度方法:弃用

设置:

curl https://repo1.maven.org/maven2/archetype-catalog.xml >~/.m2/archetype-catalog.xml

这种方法无效,弃用!

        1. 安装Nodejs
wget https://mirrors.aliyun.com/nodejs-release/v12.22.1/node-v12.22.1-linux-x64.tar.gz
 
 
tar -zxvf node-v12.22.1-linux-x64.tar.gz -C /opt/
 
 
ln -s /opt/node-v12.22.1-linux-x64/ /opt/nodejs

        1. 安装Gradle
wget https://services.gradle.org/distributions/gradle-7.5.1-bin.zip
 
 
unzip -d /opt/  gradle-7.5.1-bin.zip
 
 
ln -s /opt/gradle-7.5.1/ /opt/gradle

        1. 安装Ant
wget https://repo.huaweicloud.com/apache/ant/binaries/apache-ant-1.9.16-bin.tar.gz
wget https://repo.huaweicloud.com/apache/ant/ivy/2.4.0/apache-ivy-2.4.0-bin.tar.gz
tar -zxvf apache-ant-1.9.16-bin.tar.gz -C /opt
tar -zxvf apache-ivy-2.4.0-bin.tar.gz
ln -s /opt/apache-ant-1.9.16/ /opt/ant
 
 
cp  apache-ivy-2.4.0/ivy-2.4.0.jar /opt/ant/lib/
 
 
mkdir ~/.ivy2
 
 
cat > ~/.ivy2/ivysettings.xml <<EOF
<ivy-settings>
<!-- path to local maven repo and default maven layout -->
<property name="local-maven2-pattern"
value="~/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision]"
override="false" />
 
<!-- set resolver chain as default -->
<settings defaultResolver="main" />
 
<!-- configure caches -->
<caches repositoryCacheDir="~/.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>
</ivy-settings>
EOF

        1. 配置并刷新环境变量
echo "
export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0
export SCALA_HOME=/usr/share/scala
export MAVEN_HOME=/opt/maven
export NODEJS_HOME=/opt/nodejs
export GRADLE_HOME=/opt/gradle
export ANT_HOME=/opt/ant
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$MAVEN_HOME/bin:$NODEJS_HOME/bin:$GRADLE_HOME/bin:$ANT_HOME/bin:$PATH
" >> /etc/profile

source /etc/profile

        1. *安装rpm依赖插件

#yum install -y fuse-devel 
#yum install -y lzo-devel 

Kylin:(特别提醒,各个不同操作系统需要修改,centos和redhat都是kylin-rpm-confi)

#yum install -y kylin-rpm-config
 

Hadoop编译需要的插件:

#yum install -y boost
#yum install -y protobuf-compiler 
#yum install -y protobuf-c-compiler
# yum install -y cyrus-sasl-devel
 #yum install -y cyrus-sasl-gs2

Yarn编译的cmake编译需要的库插件:

yum install -y libtirpc.x86_64
yum install -y libtirpc-devel.x86_64

yum安装R语言编译依赖包

yum install -y readline readline-devel readline-static
yum install -y libcurl-devel
yum install -y texinfo
yum install -y sbt #非常重要的依赖(kylin有对应包)

WARNING: you cannot build PDF versions of the R manuals

yum install -y texlive
yum install -y texlive-inconsolata
 

        1. *安装R语言(sparkR编译依赖)

特别提醒一下:kylin等国产操作系统缺少R语言的RPM包,需要下载源代码进行编译:

#wget https://cran.r-project.org/src/base/R-4/R-4.0.0.tar.gz /opt
#tar -zxvf R-4.0.0.tar.gz

编译R语言

#./configure  --enable-R-shlib=yes --with-tcltk --prefix=/opt/R-4.0.0 --with-x=no
#make

说明--with-x=yes是默认参数用于ui界面编译。主要在ubantu的环境下编译用

#cd doc
#touch NEWS NEWS.pdf NEWS.rds
 
 
#make install

# 安装成功后,在/usr/local/R 以及 解压文件下面 /bin文件夹里有RRscript

#vi /etc/profile
配置R_HOME=/opt/R-4.0.0
设置PATH=$R_HOME/bin:$PATH
#source /etc/profile

进入R环境安装R的依赖包:注意选择镜像站点为北京16

#R

运行

install.packages("pkgdown")
install.packages("knitr")
install.packages("urlchecker")
 

        1. *设置github.com访问权限

编译hadoop包的时候需要使用browe进行编译会遇到访问github.com的权限问题。

# ssh-keygen -t rsa

将公钥贴到账号的ssh的ssh and GPG keys中

#ssh -T git@github.com

取消git代理:

git config --global --add remote.origin.proxy ""
git config --global http.sslVerify false
git config --global --unset-all remote.origin.proxy

设置替换协议:

git config --global url."https://".insteadOf git://

解决使用git://无法下载github上的包。Github已经不使用git://协议下载包。

替换~/.gitconfig的内容:user下的name必须是自己在github.com的注册账号。

#vi ~/.gitconfig

[url "git://"]
        insteadOf = https://
[url "git@github.com:"]
        insteadOf = https://github.com/
[user]
        name = siglex #为自己在github上注册的用户名称
        email = git@github.com
        signingkey = 0ff455a2708394633e4bb2f88002e3cd80cbd76f
[credential]
        helper = cache --timeout=3600
[gpg]
        format = x509
[gpg "x509"]
        program = smimesign
[url "https://github.com/google/boringssl.git"]
        insteadOf = https://boringssl.googlesource.com/boringssl
[url "git://github.com/"]
        insteadof = GitHub: Let’s build from here · GitHub

特别提醒:在自己的windows,非虚拟机,用浏览器登录:GitHub: Let’s build from here · GitHub。输入用户名和密码。不然输入:ssh -T git@github.com无法看到:

Hi siglex! You've successfully authenticated, but GitHub does not provide shell access.

          1. npm 编译错误

npm ERR! fatal: 无法访问 'https://github.com/wix/angular-viewport-watch.git/':Failed to connect to github.com port 443: 拒绝连接

执行下面章节的git配置。

          1. 有代理的bigtop编译错误

[INFO] Zeppelin: web Application .......................... FAILURE [11:28 min]

git config --global url.https://github.com/.insteadOf git://github.com/
git config --global http.proxy 192.168.101.104:7890
git config --global https.proxy 192.168.101.104:7890

其中:192.168.101.104是本地windows主机。使用vmware环境的麒麟操作虚拟机进行编译。而且windows主机使用了Clash代理。端口号是7890,在虚拟机中用telnet进行测试端口是否打开。

看到下面提示表示编译成功!

        1. 编译安装protoc(kylin操作系统需要?)
cd /tmp
wget https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.9.2.tar.gz
tar -zxvf v3.9.2.tar.gz
cd /protobuf-3.9.2
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install

        1. 安装jdk.tools的jar包

Tools.jar这个jar包在maven默认无法下载导致警告,并导致编译hadoop-rpm的时候卡住。

cp /etc/alternatives/java_sdk_1.8.0/lib/tools.jar /root/.m2/repository/jdk/tools/jdk.tools/1.8/
 
 
 
 
 
        1. 修改环境变量

#vi /etc/profile

export MAVEN_OPTS="-Xms2048m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=1024m -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true"
 
 
export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0
export SCALA_HOME=/opt/scala-2.12.17
export MAVEN_HOME=/opt/maven
export NODEJS_HOME=/opt/nodejs
export GRADLE_HOME=/opt/gradle
export ANT_HOME=/opt/ant
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64/python2.7
export R_HOME=/opt/R-4.0.0
export R_LIBS_USER=$R_HOME/library
export RSTUDIO_PANDOC=/opt/R-4.0.0/library/pandoc
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
 
 
export PATH=$SCALA_HOME/bin:$R_HOME/bin:$JAVA_HOME/bin:$SCALA_HOME/bin:$MAVEN_HOME/bin:$NODEJS_HOME/bin:$GRADLE_HOME/bin:$ANT_HOME/bin:$PATH
TZ=Asia/Shanghai; export TZ
umask 0022
      1. bigtop编译准备

特别提醒,编译安装下面步骤进行执行。第1次编译将运行1天以上。后面再次编译需要几个小时。(需要下载大量maven包,browe包,R插件包等等)

        1. 修改代码

#git克隆bigtop源代码

git clone https://github.com/apache/bigtop.git

#进入bigtop根目录

cd bigtop

#切换到3.2分支

git checkout -b branch-3.2 origin/branch-3.2

          1. 修改python支持yum仓库

麒麟操作系统的yum默认是python 3的版本,而ambari使用的是2.6 和2.7两个版本,因此需要修改LD_LIBRARY_PATH环境变量

Python的环境变量,问题修复:

find / -type f -executable -name 'python*'

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

版本号:pip 20.3.4

pip list --outdated

python -m pip install –upgrade pip=

python -m pip –version

pip install requests==2.8.1

pip install opencv-python==3.4.18.65

python -m pip install "requests>=1,<2.28"

由于python2.7没有yum模块,如果要装yum模块需要安装2.6.6以前的版本

pip3 install dnf==0.0.1:安装这个module模块会导致yum没法使用,特此提醒!

pip3 uninstall dnf==0.0.1

yum由于安装dnf导致损坏:修复方法:

rpm -ql python3-3.7.9-18.se.05.p06.ky10.x86_64>py.log
while read -r line;do dirname $line |xargs -I {} ssh root@$remoteip "mkdir -p {}" ;scp $line root@$remoteip:$line  ;done<py.log
 
yum update
下载python2.6.6 进行编译:
https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2

导致原因:麒麟操作系统的/usr/bin/yum这个python程序第一行使用的#!/usr/bin/python3

导致python2.7无法使用import yum上面这个错误。

          1. 修改bigtop.bom代码

Scala版本号 2.12.17,本机安装的是这个版本。采用搜索scala就能定位各个地方的scala版本号位置。

#修改bigtop/bigtop.bom配置 有两处要修改

#1.修改镜像源为国内镜像源 103、104行

    APACHE_MIRROR = "https://repo.huaweicloud.com/apache"
    APACHE_ARCHIVE = "https://mirrors.aliyun.com/apache"

#2.解开bigtop-select组件的注释 删除273、281行

#修改部分组件源代码

          1. 下载组件源代码包
./gradlew tez-download zeppelin-download flink-download alluxio-download gpdb-download

说明:自动下载到dl目录下。

#2.进入下载目录

cd dl

#3.解压这3个tar

tar -zxvf flink-1.15.3.tar.gz
tar -zxvf apache-tez-0.10.2-src.tar.gz
tar -zxvf zeppelin-0.10.1.tar.gz
          1. 修改flink
vi flink-1.15.3/flink-runtime-web/pom.xml 

在275行 nodeVersion改为v12.22.1

在276行 npmVersion改为6.14.12

          1. 修改hive编译脚本

vi /root/src/bigtop/bigtop-packages/src/common/hive/ do-component-build

添加忽略测试-DskipTests

if [ $HOSTTYPE = "powerpc64le" ] ; then
  mvn install:install-file -DskipTests -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 \
    -Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/local/protobuf-2.5.0/bin/protoc
elif [ $HOSTTYPE = "aarch64" ] ; then
  mvn install:install-file -DskipTests -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 \
-Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/local/protobuf-2.5.0/bin/protoc
Fi
mvn ${HIVE_MAVEN_OPTS} clean install -DskipTests ${EXTRA_GOALS} -Pdist "$@"
          1. 修改tez
vi apache-tez-0.10.2-src/tez-ui/pom.xml 

37 allow-root-build改为--allow-root=true

Tez的模块tez-ui编译问题:解决https无法访问问题:

https://bower.herokuapp.com/packages/font-awesome failed:

换掉browe的地址:

/root/src/bigtop/dl/apache-tez-0.10.2-src/tez-ui/src/main/webapp/ .bowerrc

.bowerrc文件中增加这么两句:(手工单独编译tez才加下面这两行,整体编译bigtop建议修改补丁文件。)

#vi /root/src/bigtop/dl/apache-tez-0.10.2-src/tez-ui/src/main/webapp/.bowerrc
"registry": "https://registry.bower.io",
  "strict-ssl": false,

Copy /root/src/bigtop/dl/apache-tez-0.10.2-src.tar.gz to /root/src/bigtop/build/tez/tar/apache-tez-0.10.2-src.tar.gz 这行代码后面将进行源代码校验,如果文件大小和时间不一致,会导致代码检查不过,需要重新编译,尤其在麒麟操作系统下存在时区问题导致时间不一致问题,影响tez编译,特此提醒!

修改补丁文件就不需要添加上面两行:

"registry": "https://registry.bower.io",
  "strict-ssl": false,

编译通过后,建议删除这两行。重新打包。

注意:编译bigtop需要做patch的处理,请参考修改tez的patch文件的方法。

          1. *修改补丁文件
vi /root/src/bigtop/bigtop-packages/src/common/tez/patch6-TEZ-4492.diff

第4行:

+  "registry": "https://registry.bower.io",

+  "strict-ssl": false,

补丁文件在编译时候会在编译的时候通过patch命令进行检查,如果文件不一致会导致编译错误。

需要修改:@@ -1,5 +1,7 @@

不然会导致检查状态错误

Tez编译如果动了源代码就需要重新进行完全编译。这个修改文件与补丁检查导致一致编译错误退出,tez编译在麒麟操作系统下纠结最久。

          1. 修改zeppelin
vi zeppelin-0.10.1/pom.xml 

在209行plugin.gitcommitid.useNativeGit改为true

vi zeppelin-0.10.1/spark/pom.xml

在50行spark.src.download.url改为https://repo.huaweicloud.com/apache/spark/${spark.archive}/${spark.archive}.tgz

在53行spark.bin.download.url改为https://repo.huaweicloud.com/apache/spark/${spark.archive}/${spark.archive}-bin-without-hadoop.tgz

vi zeppelin-0.10.1/rlang/pom.xml

在41行spark.src.download.url改为https://repo.huaweicloud.com/apache/spark/${spark.archive}/${spark.archive}.tgz

在44行spark.bin.download.url改为https://repo.huaweicloud.com/apache/spark/${spark.archive}/${spark.archive}-bin-without-hadoop.tgz

vi zeppelin-0.10.1/flink/flink-scala-parent/pom.xml

在45行flink.bin.download.url改为https://repo.huaweicloud.com/apache/flink/flink-${flink.version}/flink-${flink.version}-bin-scala_${flink.scala.binary.version}.tgz

修改/root/src/bigtop/dl/zeppelin-0.10.1/zeppelin-web/.bowerrc添加下面两行:

  vi /root/src/bigtop/dl/zeppelin-0.10.1/zeppelin-web/.bowerrc
添加下面两行:
"registry": "https://registry.bower.io",
  "strict-ssl": false,
          1. 重新打包
tar -zcvf flink-1.15.3.tar.gz flink-1.15.3
tar -zcvf apache-tez-0.10.2-src.tar.gz apache-tez-0.10.2-src
tar -zcvf zeppelin-0.10.1.tar.gz zeppelin-0.10.1

        1. 安装组件编译依赖

#1.hadoop依赖

yum -y install fuse-devel cmake cmake3 lzo-devel openssl-devel protobuf* cyrus-* 
cp /usr/bin/cmake3 /usr/bin/cmake

#2.zookeeper依赖

yum -y install cppunit-devel

#3.spark依赖 注意R的安装路径不在/usr/share/R

yum -y install R* harfbuzz-devel fribidi-devel libcurl-devel libxml2-devel freetype-devel libpng-devel libtiff-devel libjpeg-turbo-devel pandoc* libgit2-devel
yum install -y libfonts freetype-devel libpng-devel libtiff-devel libjpeg-devel
yum install -y elfutils-libelf-devel # 如果没有会导致Rscript -e 安装knitr错误。
yum install -y dpkg dpkg-devel dpkg-perl
yum install -y librsvg2 librsvg2-devel librsvg2-tools

非常重要提醒:如果Scala和R安装有问题会导致下面脚本不能执行:必须安装这些包会导致SparkR编译不了。

Rscript -e "install.packages(c('vignette','textshaping','knitr', 'rmarkdown', 'devtools', 'testthat', 'e1071', 'survival'), repos='http://mirrors.tuna.tsinghua.edu.cn/CRAN/')"

安装pandoc:非常重要!(纠结了很久:以为在R中安装插件就行了,需要在操作系统中安装,通过tar解压和ln设置执行文件pandoc路径,特别提醒:没有rpm安装方法)

wget https://github.com/jgm/pandoc/releases/download/3.1.9/pandoc-3.1.9-linux-amd64.tar.gz -O /opt/pandoc-3.1.9-linux-amd64.tar.gz
cd /opt/pandoc-3.1.9-linux-amd64.tar.gz
tar -zxf /opt/pandoc-3.1.9-linux-amd64.tar.gz
ln -s /opt/pandoc-3.1.9/bin/pandoc /usr/bin/pandoc

注意:github上只保留最新版本,需要调整下载路径。

进入R环境:运行安装插件包命令:安装后还是会报下面错误:

Pandoc is required to build R Markdown vignettes but not available. Please make sure it is installed.

install.packages("pandoc")#这个代码在R环境中执行无效!需要上一步安装方法。

看到下面提示表示R的插件安装成功:

** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (devtools)
 
 
下载的程序包在
        ‘/tmp/Rtmp7x0WYF/downloaded_packages’
更新'.Library'里的HTML程序包列表
Making 'packages.html' ... 做完了。

#回到bigtop根目录

cd ../

#编译-预计需要一个半小时以上

gradle projects

      1. 单独编译spark关键点

重点检查scala,R的安装是否正常。R需要安装很多插件。请参考上面章节的“*安装R语言”章节的处理。

Failed to connect to en.wikipedia.org port 443: Connection refused

      1. 单独编译gpdb关键点
cd /opt
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
sudo python get-pip.py
sudo pip install psutil lockfile paramiko setuptools epydoc
 
 
sudo yum -y groupinstall 'Development Tools'
yum install -y apr-devel
yum install -y libevent-devel
sudo yum  -y install curl-devel bzip2-devel python-devel openssl-devel readline-devel libzstd-devel 
sudo yum  -y install perl-ExtUtils-Embed # If enable perl 
sudo yum  -y install libxml2-devel # If enable XML support 
sudo yum  -y install openldap-devel # If enable LDAP
sudo yum  -y install pam pam-devel # If enable PAM 
sudo yum  -y install perl-devel # If need installcheck-world
 
 
 
 
export CFLAGS="-O0 -g3 -ggdb3" 
./configure --with-perl --with-python --with-libxml --enable-debug --enable-cassert --disable-orca --disable-gpcloud --disable-gpfdist --prefix=/root/src/gpdb-5.28.5
 
 
$ make 
$ make install
 
 
./gradlew clean gpdb-rpm -PparentDir=/root/src/bigtop-3.2.0 -Dbuildwithdeps=true -PpkgSuffix
      1. 单独编译tez关键点
cd /root/src/apache-tez-0.10.2-src
mvn clean compile install  -DskipTests

手工测试tez编译是否有问题,主要是browe的.bowerrc需要处理!注意:需要手工调整:

/root/src/bigtop/dl/apache-tez-0.10.2-src/tez-ui/src/main/webapp/.bowerrc

里面添加两行:

#vi /root/src/bigtop/dl/apache-tez-0.10.2-src/tez-ui/src/main/webapp/.bowerrc
"registry": "https://registry.bower.io",
  "strict-ssl": false,

编译通过后,建议删除这两行。编译bigtop会用patch补丁处理修复这两行代码。

      1. 单独编译bigtop-select关键点

在bigtop的源代码bigtop.bom(注意版本号是:3.2.1)需要修改取消注释:

如果不编译bigtop-select的rpm包,将导致下面这个stack软件包检查的错误!

手工编译bigtop-select模块,并上传到yum仓库的BIGTOP的软件目录里面。

./gradlew clean bigtop-select-rpm -PparentDir=/root/src/bigtop-rel-3.2.1 -Dbuildwithdeps=true

      1. 单独编译zeppelin关键点

说明:由于无法找到https://conjars.org/repo的maven的替代仓库地址。这个scalding interpreter模块无法编译。尝试了阿里、华为、maven官网、twitter、腾讯的maven仓库都不行,主要是pom的大量依赖,所有包在maven和阿里的仓库里能找到。但pom的多层依赖导致没法指向正确的maven仓库。强行编译需要手工一个一个的下载jar和修改pom文件。

        1. zeppelin支持SAP的插件

直接将sap的jdbc的jar包和插件包放置到zeppelin的插件目录,重启zeppelin,前端就能选择sap,同理,只要使用jdbc连接的数据库都可以才有这个方法。

        1. 无法编译Scalding interpreter模块:弃用

由于无法找到https://conjars.org/repo的maven的替代仓库地址。这个模块无法编译。主要原因是,各种依赖的pom文件的repo地址都指向错误。因此建议不编译这个模块。

        1. git describe错误

command: `git describe --always --dirty=-dirty --match=* --abbrev=7`, stdout: ``, stderr: `fatal: bad revision 'HEAD'`

        1. 解决无法下载cascading-core-2.6.1jar问题:弃用

阿里的maven库里面没有4版本以下的jar包。因此建议从官网做好的bin的tar中去找cascading的jar包。

Transfer failed for https://conjars.org/repo/cascading/cascading-core/2.6.1/cascading-core-2.6.1.jar: Connect to conjars.org:443

https://conjars.org已经找不到2.6.1版本的jar。

可以进入apache社区下载bin的tar包

wget https://dlcdn.apache.org/zeppelin/zeppelin-0.10.1/zeppelin-0.10.1-bin-all.tgz

这个下载太慢,建议用腾讯下载地址:

wget https://mirrors.cloud.tencent.com/apache/zeppelin/zeppelin-0.10.1/zeppelin-0.10.1-bin-all.tgz

解压后找到对应的cascading相关包,放置到.m2的jar对应路径里面。

        1. 解决官网下载慢的问题

使用腾讯下载地址:

Index of /apache/zeppelin/

选择zeppelin-0.10.1版本。

        1. 编译成功

      1. 正式bigtop编译
        1. bigtop编译脚本

清理maven下载不全包:

find ~/.m2/repository/ -name "*.lastUpdated" -exec rm -rf {} \;

没有:bigtop-select-rpm

下面脚本去掉bigtop-select-rpm

./gradlew allclean bigtop-ambari-mpack-rpm bigtop-groovy-rpm  bigtop-jsvc-rpm bigtop-utils-rpm bigtop-select-rpm flink-rpm hadoop-rpm hbase-rpm hive-rpm kafka-rpm ranger-rpm solr-rpm spark-rpm tez-rpm zeppelin-rpm zookeeper-rpm -Dbuildwithdeps=true -PparentDir=/root/src/bigtop -PpkgSuffix
        1. 单独组件编译
./gradlew bigtop-ambari-mpack-rpm -PparentDir=/root/src/bigtop
./gradlew bigtop-groovy-rpm -PparentDir=/root/src/bigtop
./gradlew bigtop-jsvc-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew bigtop-utils-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew bigtop-select-rpm -PparentDir=/root/src/bigtop-3.2.0#无效
./gradlew gpdb-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew livy-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew oozie-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew phoenix-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew flink-rpm hadoop-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew hadoop-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew hbase-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew hive-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew kafka-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew ranger-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew solr-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew spark-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew tez-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew ycsb-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew zeppelin-rpm -PparentDir=/root/src/bigtop-3.2.0
./gradlew zookeeper-rpm -PparentDir=/root/src/bigtop-3.2.0
#基于云的数据分析和人工智能的开源的数据编排技术 
./gradlew alluxio-rpm -PparentDir=/root/src/bigtop-3.2.0
 
 
 

尝试其它包编译:

./gradlew bigtop-select-rpm gpdb-rpm ranger-rpm ycsb-rpm -Dbuildwithdeps=true -PparentDir=/root/src/bigtop-3.2.0 -PpkgSuffix

编译过程中出现进程僵死,需要清理干净正在运行的进程:

ps -ef|grep bigtop

使用kill进行杀掉,然后重新运行上面的脚本。

输出编译日志:

./gradlew tez-rpm zeppelin-rpm zookeeper-rpm -Dbuildwithdeps=true -PparentDir=/root/src/bigtop-3.2.0 -PpkgSuffix >../bigtop-build.log
 

编译调整:

./gradlew allclean zeppelin-rpm zookeeper-rpm  -PparentDir=/root/src/bigtop-3.2.0
        1. bigtop编译成功提示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MongoDB是一种高性能、可伸缩的非关系型数据库,在各个行业中都有广泛的应用,而麒麟Kylin v10则是一种高效稳定的操作系统。为了能在这个操作系统上运行MongoDB,需要进行移植。本文将介绍MongoDB-4.0.1在麒麟Kylin v10上的移植指南。 1.环境准备 在进行移植之前,需要确认环境是否准备好。确保Kylin v10的操作系统版本为最新版本,拥有足够的空间以及安装了gcc,g++, make, automake和libtool等编译工具和库文件。同时,还需要安装scons作为MongoDB的编译工具。 2.源代码下载 从MongoDB的官方网站上下载最新版本的源代码并解压缩到指定目录下。 3.修改并编译 在解压缩后的MongoDB源码目录下,执行以下命令: ``` $ git checkout r4.0.1 $ scons --disable-warnings-as-errors -j<core number> ``` 这将会自动对源代码进行编译,并在bin目录下生成mongod、mongo等可执行程序。 4.修改配置文件 在Kylin v10的操作系统环境下,可能需要对MongoDB的配置文件进行一定的修改,以保证MongoDB服务器的正常运行。例如,需要修改MongoDB所使用的数据存储位置和可用端口号等。 5.启动MongoDB服务器 执行以下命令来启动MongoDB服务器: ``` $ mongod --fork --dbpath=<path to data files> --port=<port number> ``` 其中,--fork参数表示在后台启动MongoDB服务器,--dbpath参数用于指定MongoDB的数据存储路径,--port参数指定MongoDB服务器监听的端口号。 6.连接管理 使用mongo命令连接MongoDB服务器,并进行相关管理操作。在连接后,可以进行数据添加、查询、删除等操作。 以上就是MongoDB-4.0.1在麒麟Kylin v10上的移植指南。在上述步骤完成后,就可以在Kylin v10操作系统上运行MongoDB,并进行相应的数据管理操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值