Ambari2.7.4源码编译以及遇到的问题总结

自己摸索过程中主要依靠的两个教程和网站:
1.# ambari2.4.2在CentOS7上的二次开发
2.Ambari官方文档https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.7.4

编译环境的搭建

软件版本(要严格参照这个要求)

image.png

1.安装samba

因为需要用到nodejs、python等编译环境,并且nodejs有些库文件是需要C++ 、ruby、python等一些语言进行编译,在windows上处理会比较复杂,所以选择在Linux上搭建编译环境,并使用samba协议共享Linux中的文件,在linux上运行测试,在windows下进行代码修改。

  1. 安装samba

先检查是否已经安装

rpm -qa | grep samba
#未安装的话  执行安装命令 
yum install samba
  1. 重启 SMB服务
service smb restart
  1. 在 Linux 上建立samba用户
useradd samba
  1. 创建 Smb 用户,此用户必须是 Linux 上已经建立的,输入密码,完成即可。
useradd samba
smbpasswd -a samba
  1. 关闭防火墙
  2. 确保setlinux关闭
setenforce 0
  1. 修改/etc/samba/smb.conf,在最后加入想要共享的文件夹:
[samba home]
        path = /home/samba
        writeable = yes
        guest ok = yes
        read only = no

    [MyShare]
            path=/home/samba/ambari
            browsable=yes
            writable=yes
            guest ok=yes
            read only=no

注意这里的Myshare文件配置即图片中的MyShare文件夹
可以cd到根目录然后查看/home/samba文件夹

现在就可以在windows上访问共享的目录了 在文件资源管理器上输入 \<samba_ip> 即可 。注意ip前面有两个反斜线

image.png

2.安装编译环境

下面安装的软件,无论是yum,还是tar包,都要选择指定版本。

  1. 安装JDK 版本1.7.0
yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
    #默认安装路径: /usr/lib/jvm/java-1.7.0-openjdk

    #在 ~/.bash_profile 中修改JVM内存参数
    export _JAVA_OPTIONS="-Xmx2048m -XX:MaxPermSize=512m -Djava.awt.headless=true"
  1. 安装maven 版本 (这里版本需要是3.1以上 不然编译时会报错)
yum -y install maven  #注意版本
    mvn -v #验证安装情况
vim $MAVEN_HOME/conf/settings.xml

为了提升速度,最好修改maven源为国内源,如阿里的。执行命令

<mirrors> ...... <mirror>  
            <id>nexus-aliyun</id>  
            <mirrorOf>central</mirrorOf>    
            <name>Nexus aliyun</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
        </mirror>
    </mirrors></pre>

  1. 安装g++
#检测
    rpm -qa | grep gcc-c++ #安装 yum -y install gcc-c++</pre>
  1. 安装Python 版本2.6
    yum -y install python-devel.x86_64  #编译 Ambari Metrics Monitor 项目会用到

    cd /opt/software wget https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz  #下载源码
    tar zxvf Python-2.6.9.tgz  #解压
    cd Python-2.6.9 #进入解压目录
    ./configure --prefix=/安装路径/python2.6     #开始编译  注:编译依赖g++,所以要先安装上g++
    make
    make install
    ln -s /安装路径/python2.6/bin/python /bin/python2.6  #创建快捷方式(也可以将bin/python放入环境变量)
    python2.6 -V #验证安装情况

    #编译安装Setuptools
    cd /opt/software wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
    tar zxvf setuptools-0.6c11.tar.gz  #解压
    cd setuptools-0.6c11  
    python2.6 setup.py build  #编译
    python2.6 setup.py install #安装 ln -s /opt/software/python2.6/bin/easy_install /bin/easy_install  #给easy_install创建快捷方式

此处有错误 setuptool不是tar.gz可以解压的文件

https://pypi.org/project/setuptools/#history
直接这个网站上面wget一个下来就行

  1. 安装rpm-build

检验是否存在

rpm -qa | grep rpm-build #检验是否存在 yum install rpm-build
  1. 安装Nodejs 版本:v0.10.44
    1. 下载安装包 版本地址
wget http://nodejs.org/dist/v0.10.44/node-v0.10.44-linux-x64.tar.gz

上面的wget地址需要修改 从上面nodejs官网选取一个稳定的版本,我选择的是10.x. ,
v0.10.44这个在我机子上编译出问题了。

3.  解压
tar zxvf node-v0.10.44-linux-x64.tar.gz

可以在网上自行百度在Linux/Centos上安装nodejs

4.  设置 /etc/profile 中的环境变量 
        export NODE_HOME="/opt/node-v0.10.44-linux-x64" 
        export PATH=$PATH:$NODE_HOME/bin

     使之生效
source /etc/profile

这种修改环境变量的方法 每次重启电脑都需要

source /etc/profile

建议环境变量这样修改


image.png

区别:

image.png
5.  查看安装情况
node -v
        npm -v
  1. 安装Brunch
npm install -g brunch@1.7.20
    brunch  #检测

  1. 安装Git(如果代码是在本地的话,可略过这一步。)
yum install git
   
git --version #检测

 使用git下载ambari代码。之前从官网下载的代码,出现各种问题,改从这个git下载的代码后就完全没问题了。 下载命令:
git clone https://git-wip-us.apache.org/repos/asf/ambari.git

我用的另一个方法:

wget http://www.apache.org/dist/ambari/ambari-2.7.4/apache-ambari-2.7.4-src.tar.gz

这里是官网的方法
如果嫌弃这个wget时间过长,那么可以自己在官网下载后通过samba讲文件传到centos系统里。
具体移动文件的方法可以百度。

3.整体编译

整体编译需要下载很多的maven依赖包,ambari-web和ambari-admin也需要通过npm和bower下载大量依赖包

所以推荐先进行ambari-web和ambari-admin单独编译;而maven的依赖包,可以选择安装的时候不执行clean命令

  1. cd 到ambari的主目录
  2. 给ambari打上版本号
mvn versions:set -DnewVersion=2.7.4.0.0  #虽然官网说是4位,但实际上这里如果不是5位后面会有不少麻烦
    pushd ambari-metrics
    mvn versions:set -DnewVersion=2.7.4.0.0
    popd

 ambari的版本号坑也是不少的,可参考上面第一个链接,本文也是参考第一个链接并在其基础上改进的。

做这一步之前可以先ls看一下ambari主目录下是否存在该文件夹,如果不存在建议git branch -a查看所有分支并通过checkout到2.7.0分支后再查看会发现该文件夹。

  1. 因为编译过程中会下载很多很多文件,并且有些文件下载特别慢,所以我们需要在编译前把这些文件先提前下载好,并且放到指定位置,这样编译起来就快多了

  mkdir -P ambari-admin/src/main/resources/ui/admin-web/node_tmp wget -O ambari-admin/src/main/resources/ui/admin-web/node_tmp/node.tar.gz http://nodejs.org/dist/v4.5.0/node-v4.5.0-linux-x64.tar.gz
    wget -O ambari-admin/src/main/resources/ui/admin-web/npm.tar.gz http://registry.npmjs.org/npm/-/npm-2.15.0.tgz

    mkdir -P ambari-metrics/ambari-metrics-timelineservice/target/embedded wget -O ambari-metrics/ambari-metrics-timelineservice/target/embedded/hbase.tar.gz http://private-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0-3347/tars/hbase-1.1.2.2.3.4.0-3347.tar.gz
    wget -O ambari-metrics/ambari-metrics-timelineservice/target/embedded/phoenix.tar.gz http://private-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0-3347/tars/phoenix-4.4.0.2.3.4.0-3347.tar.gz

    mkdir -P ambari-metrics/ambari-metrics-grafana/target/grafana/
    wget -O ambari-metrics/ambari-metrics-grafana/target/grafana/grafana.tgz https://grafanarel.s3.amazonaws.com/builds/grafana-2.6.0.linux-x64.tar.gz

    mkdir -P ambari-metrics/ambari-metrics-assembly/target/embedded wget -O ambari-metrics/ambari-metrics-assembly/target/embedded/hadoop.tar.gz http://private-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0-3347/tars/hadoop-2.7.1.2.3.4.0-3347.tar.gz


这些文件也可以整体编译时自己下载,但需注意必须保证源码编译需要时间很长,必须一直联着网。

  1. 编译ambari
mvn -B -e clean install package rpm:rpm -DnewVersion=2.7.4.0.0 -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl  #版本号 与上一步一致

Ambari官网方法

wget http://www.apache.org/dist/ambari/ambari-2.7.4/apache-ambari-2.7.4-src.tar.gz (use the suggested mirror from above)
tar xfvz apache-ambari-2.7.4-src.tar.gz
cd apache-ambari-2.7.4-src
mvn versions:set -DnewVersion=2.7.4.0.0
 
pushd ambari-metrics
mvn versions:set -DnewVersion=2.7.4.0.0
popd

mvn -B clean install rpm:rpm -DnewVersion=2.7.4.0.0 -DbuildNumber=b730f30585dd67c10d3b841317100f17d4b2c5f1 -DskipTests -Dpython.ver="python >= 2.6"

编译过程中如果看到停在了下载文件的位置,可以中断编译,直接去下载文件并放到指定位置
  1. cd 到ambari-web目录下 执行命令
brunch watch --server

下面这个也可以

ambari-server restart
 顺利的话 打开网址 http://<ambari-webserver ip>:3333 就能看到成果了

第一个可能是3333端口,第二次ambari-server restart之后就是8080端口了

编译成功后如图,这里的邮件提醒可以忽略。


编译成功
ambari-server setup

ps:如果restart时出现问题,如超时等错误


image.png
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;">vi /var/log/ambari-server/ambari-server.log</pre>

查看其日志文件
查看日志文件的时候,键盘输入/ERROR显示界面会如下:


image.png

我这里是MYSQL配置的问题。
下面是一些可能会遇到的问题


image.png

mvn清洁包是翻译错误 应该是 mvn clean
如果出现rat.txt报错 在原来的整体编译代码中加入
 -DskipTests -Drat.skip

至于单独编译的方法可以参考本文第一个链接。

参考:https://cwiki.apache.org/confluence/display/AMBARI/Ambari+Development

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352