自己摸索过程中主要依靠的两个教程和网站:
1.# ambari2.4.2在CentOS7上的二次开发
2.Ambari官方文档https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.7.4
编译环境的搭建
软件版本(要严格参照这个要求)
1.安装samba
因为需要用到nodejs、python等编译环境,并且nodejs有些库文件是需要C++ 、ruby、python等一些语言进行编译,在windows上处理会比较复杂,所以选择在Linux上搭建编译环境,并使用samba协议共享Linux中的文件,在linux上运行测试,在windows下进行代码修改。
- 安装samba
先检查是否已经安装
rpm -qa | grep samba
#未安装的话 执行安装命令
yum install samba
- 重启 SMB服务
service smb restart
- 在 Linux 上建立samba用户
useradd samba
- 创建 Smb 用户,此用户必须是 Linux 上已经建立的,输入密码,完成即可。
useradd samba
smbpasswd -a samba
- 关闭防火墙
- 确保setlinux关闭
setenforce 0
- 修改/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前面有两个反斜线
2.安装编译环境
下面安装的软件,无论是yum,还是tar包,都要选择指定版本。
- 安装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"
- 安装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>
- 安装g++
#检测
rpm -qa | grep gcc-c++ #安装 yum -y install gcc-c++</pre>
- 安装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一个下来就行
- 安装rpm-build
检验是否存在
rpm -qa | grep rpm-build #检验是否存在 yum install rpm-build
- 安装Nodejs 版本:v0.10.44
- 下载安装包 版本地址
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
建议环境变量这样修改
区别:
5. 查看安装情况
node -v
npm -v
- 安装Brunch
npm install -g brunch@1.7.20
brunch #检测
- 安装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命令
- cd 到ambari的主目录
- 给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分支后再查看会发现该文件夹。
- 因为编译过程中会下载很多很多文件,并且有些文件下载特别慢,所以我们需要在编译前把这些文件先提前下载好,并且放到指定位置,这样编译起来就快多了
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
这些文件也可以整体编译时自己下载,但需注意必须保证源码编译需要时间很长,必须一直联着网。
- 编译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"
编译过程中如果看到停在了下载文件的位置,可以中断编译,直接去下载文件并放到指定位置
- cd 到ambari-web目录下 执行命令
brunch watch --server
下面这个也可以
ambari-server restart
顺利的话 打开网址 http://<ambari-webserver ip>:3333 就能看到成果了
第一个可能是3333端口,第二次ambari-server restart之后就是8080端口了
编译成功后如图,这里的邮件提醒可以忽略。
ambari-server setup
ps:如果restart时出现问题,如超时等错误
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">vi /var/log/ambari-server/ambari-server.log</pre>
查看其日志文件
查看日志文件的时候,键盘输入/ERROR显示界面会如下:
我这里是MYSQL配置的问题。
下面是一些可能会遇到的问题
mvn清洁包是翻译错误 应该是 mvn clean
如果出现rat.txt报错 在原来的整体编译代码中加入
-DskipTests -Drat.skip
至于单独编译的方法可以参考本文第一个链接。
参考:https://cwiki.apache.org/confluence/display/AMBARI/Ambari+Development