Ambari安装笔记


通过Ambari安装hadoop是很多人的选择,但是由于各种环境问题,通常安装不顺利,而且hadoop系统最好是手动安装部署,这样维护起来也比较清晰明了,我想使用的Ambari对服务器硬件资源的监控,hadoop服务组件的监控,可以通过后期修改配置文件的方式,集成进Ambari中。

精简安装

只安装必要的组件即可,先把服务器资源监控起来。

前戏

在所在集群中设定一台安装ambari-server,非hadoop的master概念,其他被监控机器安装ambari-agent,非hadoop的slave概念;集群所有机器为centos7,所需软件从看这里下载(不同ambar版本可以自己修改链接中的版本号),请不要在线安装,很慢;找到你的OS版本,找到Tarball对应的链接地址,下载所需的全部安装文件。

以下操作没有特别说明,都在所有机器上执行。

下载文件中包含对应版本的centos的软件源地址文件,文件名为ambari.repo,拷贝到/etc/yum.repos.d/下即可,这样yum有时候需要在线安装源就不会有问题。将所有文件拷贝到集群服务器上面。另外,安装hadoop的服务器设置默认都已经做了,比如从ambari-server机器免密ssh登录到ambari-agent机器上,hosts配置等等,这里不再说了。

修改认证相关的系统配置,文件位于/etc/python/cert-verification.cfg,设置为disable。

安装

先安装ambari-server,使用如下命令直接安装server程序

yum localinstall -y ambari-server-2.5.0.3-7.x86_64.rpm

这里会将默认的依赖库postgresql安装,因为ambari默认使用postgresql存储。安装完毕后,执行如下命令进行数据库设置等初始化,默认即可

ambari-server setup

如果此过程中,发生反复,数据库需要还原,请执行如下命令

ambari-server reset

然后启动ambari server,如下命令。启动成功后,可通过http://ip:8080访问

ambari-server start

下面开始安装agent,请不要通过web页面提供的ssh安装,我们手动在各个被监控服务器上安装agent,以及其他所需的包,执行命令

yum localinstall -y ambari-agent-2.5.0.3-7.x86_64.rpm
yum localinstall -y ambari-metrics-hadoop-sink-2.5.0.3-7.x86_64.rpm
yum localinstall -y ambari-metrics-monitor-2.5.0.3-7.x86_64.rpm
yum localinstall -y smartsense-hst-1.4.0.2.5.0.3-7.x86_64.rpm

以上几个是每个被监控服务器上必须有的,手动安装好后,设置agent连接的服务器,我们这里是server所在的机器ip地址,设置文件为/etc/ambari-agent/conf/ambari-agent.ini,修改hostname为server端ip。然后启动agent服务。

ambari-agent start

然后我们访问web端正式开始安装,选择amdin下的manager ambari开始,具体根据web提示进行安装即可,因为server端会安装其他组件,如果安装过程中失败,根据log日志,直接安装下载包中的软件即可。另外,在组件选择上只选择zookeeper和ambari-metrics即可,最小化安装,其他组件暂时不需要。会要求输入一些服务的密码,请记录保存,在后期使用zeppelin等服务时会用到。

这里zookeeper也是搭建一个集群,选择3台服务器,系统也是要求最小3台机器。如图安装过程:

安装成功后,所有服务启动时,ambari-metrics服务有问题,根本问题是Metrics Collector服务启动失败,它用于收集所有被监控机器的数据,有2个原因导致:

  1. ambari-metrics服务需要使用hbase,hbase启动时默认使用自带的zookeeper,请使用前面我们安装的zookeeper集群,既然有了我们就不在使用其他zk服务了,后面hadoop组件同样也使用这一个zk集群,找到zk服务的client端口设置,在页面中找到Ambari Metrics服务的config选项卡,设置hbase.zookeeper.property.clientPort属性和hbase.zookeeper.quorum属性。

  2. hbase启动过程中,提示找不到ClassNotFoundException: org.apache.commons.httpclient.methods.RequestEntity,问题在于缺少依赖包commons-httpclient-3.1.jar,下载一个放在hbase所在目录lib包下,位于/usr/lib/ams-hbase/lib

所有服务启动成功后,如下图:

某一台服务器监控如下图所示,可以在Hosts菜单中增加新的服务器,过程同安装agent一样,新安装的机器,监控数据要等会儿才能看见,页面会自动刷新。

服务自定义

很难实现

服务的清除

安装这种分布式系统,难免来来回回几次,那么我们需要清除组件,ambari给我们提供了清除脚本很方便。

停止所有服务

停止server和agent的服务

ambari-server stop
ambar-agent stop

执行清除脚本

sudo python /usr/lib/python2.6/site-packages/ambari_agent/HostCleanup.py --silent --skip=users -o cleanup.log

手动删除相关

yum erase -y ambari-*
rm -rf /usr/lib/ambari-server
rm -rf /usr/lib/python2.6/site-packages/ambari_agent
rm -rf /usr/lib/python2.6/site-packages/指向ambari目录的软连接
rm -rf /usr/lib/python2.6/site-packages/ambari* /usr/lib/python2.6/site-packages/resource-management
yum erase -y postgresql-*
rm -rf /var/lib/pgsql*
yum clean all
rm -f /etc/yum.repos.d/ambari.repo
rm -rf /usr/iop/  
rm -rf /hadoop 
rm -rf /etc/hadoop/ /etc/hive /etc/hbase/ /etc/oozie/ /etc/zookeeper/ /tmp/spark