按照官方文档的来有点迷糊,麻烦到爆炸不说,还有个报错解决不了,干脆直接通过apt安装,依赖库使用网络库。
环境:Ubuntu.1604.server
参考文章
切换到root用户,进入目录,获取ambari的公共库文件并更新:
su root;
cd /etc/apt/sources.list.d;
wget http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.2.0/ambari.list;
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD;
apt-get update;
安装ambari:
apt-get install ambari-server
ambari-server setup
自定义账户,输入y:
用户名默认root,直接回车:
选JDK,因为主机上已经安装了JDK,选择3并输入JDK路径:
后一步为配置数据库,回车默认。
ambari-server start
其web管理页面url为:http://master:8080/
(注意与spark的web地址冲突了)
注意:ambari的安装、启动与配置均需在root权限下操作,并且要能保证主机与各从机之间能无密登录,这部分工作在配置hadoop集群时就已完成了。但是注意,当时配置的是账户”daya”之间能够无密登录,并没有配置root用户的无密登录,所以远程登录前需要切换回”daya”或者再配置root用户。
在root用户下执行:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa;
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;
将密钥对文件夹分发给各从机(这里应该是只分发公钥文件id_rsa.pub,但是由于各从机上没有相关目录,分发文件的话还得创建文件夹,所以直接将整个文件夹发送过去更方便):
scp -r ~/.ssh root@slave1:~/;
scp -r ~/.ssh root@slave2:~/;
scp -r ~/.ssh root@slave3:~/;
还记得之前配置hadoop集群分发配置文件时出现了权限问题,Ubuntu默认不允许远程root账户登录。所以修改配置使得其允许远程root账户登录,修改各从机的/etc/ssh/sshd_config文件:
sudo nano /etc/ssh/sshd_config;
修改一行:
PermitRootLogin yes
重启ssh:
sudo service ssh restart
这样再次分发文件夹就不会有权限问题了。
进入web页面http://master:8080/配置集群:
sudo firefox
之后web管理会自动在三台slave从机上安装ambari-agent并向主机注册,但是我这里报了错,原因不明(从机均已安装Python2.7):
STDOUT: /usr/bin/env: ‘python’: No such file or directory
三台从机都是报一样的错误,暂未解决。
无法自动安装那就只好手动安装了,三台从机均需执行:
su root;
cd /etc/apt/sources.list.d;
wget http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.2.0/ambari.list;
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD;
apt-get update;
sudo apt-get install ambari-agent;
配置,修改/etc/ambari-agent/conf/ambari-agent.ini,修改:
hostname=master
启动ambari-agent:
sudo ambari-agent start
又报错,日志中记载如下:
Cannot register host with not supported os type, hostname=slave2, serverOsType=ubuntu16, agentOsType=ubuntu16
关于此问题的参考网站
既然系统不兼容,那么就修改Python程序使其返回支持的系统版本,通过欺骗检查系统通过注册的目的。修改各slave从机的/usr/lib/python2.6/site-packages/ambari_agent/Facter.py文件(虽然ambari2.5.1要求的Python版本为2.7,但从本例来看使用的是2.6):
# Returns the OS name
def getKernel(self):
return "ubuntu14"
# return platform.system()
...
# Returns the OS version
def getOperatingSystemRelease(self):
return "14.04"
# return OSCheck.get_os_version()
删除/usr/lib/python2.6/site-packages/ambari_agent/Facter.pyc。