Ambari rpm包定制
Hadoop,hive,spark,zookeeper, hbase,phoenix 使用apache版本的安装包进行重新打打包。
一、环境准备
1、配置rpm编译目录
vim ~/.rpmmacros
%_topdir /data/rpmbuild
二、解包和打包
1、首先安装rpmrebuild
yum install rpmrebuild
以zookeeper为例(在安装了zookeeper的机器上执行)
1、先安装HDP版的zookeeper_2_5_3_0_37
2、然后对其rpm进行反编译
rpmrebuild --spec-only=zookeeper-hdp.spec zookeeper_2_5_3_0_37
3、下载apache zookeeper安装包,修改源码包,
通过命令tar -zcvf zookeeper_2_5_3_0_37-3.4.6.2.5.3.0.tar.gz zookeeper_2_5_3_0_37-3.4.6.2.5.3.0/*
重新打包为 zookeeper_2_5_3_0_37-3.4.6.2.5.3.0.tar.gz格式,
放到/data/rpmbuild/SOURCES/目录下
4、参照反编译出来的zookeeper rpm spec文件 ,修改成新的spec文件,放在SPEC/apache/下,通过命令rpmbuild -ba SPECS/apache/zookeeper.spec ,重新生成rpm
5、查看生成的rpm
ls RPMS/noarch/
6、替换软件仓库里面对应的rpm包
软件仓库位置/www/HDP/centos
7、重建软件仓库,在/www/HDP/centos目录下执行createrepo -d .重建软件仓库包索引
8、在ambari-agent所在机器上,执行yum clean metadata 清除软件仓库旧索引,执行
yum update 重建索引,
9、界面安装
Ambari service自定义
1、在ambari-server的/var/lib/ambari-server/resources/stacks/{stack_name}/{stack_version}/目录下添加一个serverbase目录目录结构如下:
Metainfo.xml定义了服务的结构
Configuration定一个了在ambari安装服务界面的配置项
Pacakge是安装服务的脚本
1、Metainfo.xml的一般结构是:
定义了一个component模块和一个configuration-depencies模块
Component模块定义了服务下各个模块的控制脚本
Configuration-dependencies定义了服务依赖的配置
2、configuration目录下的service-env.xml定义如下
这里配置项都会在界面上显示
3、控制脚本编写
以package/scripts/tomcat.py为例
定义相关指令的执行脚本 ,对应界面上的相关操作
最终会调用到pacakge/script/tomcat_utils.py下的
操作的命令行调试法:
执行如下指令调用界面上对应操作的函数
Start函数是这样调用的,
python /var/lib/ambari-agent/cache/stacks/HDP/2.5/services/SERVERBASE/package/scripts/tomcat.py START /var/lib/ambari-agent/data/command-1403.json /var/lib/ambari-agent/cache/stacks/HDP/2.5/services/SERVERBASE/package/ /tmp/out.txt DEBUG /tmp
命令中的
command-1403.json编号是通过在界面上执行过相应指令后获取
4、自定义配置文件如何生成
以catalina.sh如何生成为例
编写package/templates/catalina.j2模板,参考catalina.sh编写
CATALINA_PID和JAVA_HOME通过模板变量赋值
模板变量
Catalina_pid_file和java_home模板变量通过
package/scripts/params_linux.py定义
Parm_linux.py里面的变量可以通过config模块获取界面上的相关配置
这里通过service-env.xml获取
最终的文件通过tomcat_utils.py里的File函数生成
参考连接
https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/pr01s02.html
https://galvinyang.github.io/2016/06/30/rebuildrpm/
https://cwiki.apache.org/confluence/display/AMBARI/Defining+a+Custom+Stack+and+Services