如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用

环境部署

1.本文发表时所用的最新版本:

Ubuntu Server 16.10
APACHE AMBARI 2.5.2.0

  1. 设置主机、每个从机的内网静态IP
    安装的时候默认只会对一个网卡配置自动获取IP,一般情况我们会有2个网卡,现在要对另一个网卡手动设置内网IP。首先知道网卡在Linux里的编号,用dmesg | grep ens查看ens开头的编号有哪些,我这有一个ens160,一个ens192
    如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第1张图片

    然后再去sudo vi /etc/network/interfaces
    如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第2张图片

    发现ens160已经配置自动获取IP了,所以另一个ens192我们配置成静态IP,添加四行内容设置静态IP和子网掩码:
auto ens192
iface ens192 inet static
address 10.96.1.70
netmask 255.255.255.0

输入sudo reboot/etc/init.d/networking restart使其生效

  1. 修改主机、每个从机的hosts文件,主机名使用FQDN命名,使其能够互相ping通
    这里我的主机名配置如下,大家不必完全按照这个名字配置,但要符合FQDN:
master.hd
slave1.hd
slave2.hd
slave3.hd
slave4.hd

以上三步基本不会有什么坑,也是最基础最简单的,没有什么更优雅的方式了。

一般来说Ubuntu安装时勾上OpenSSH,安装完系统后SSH直接可以使用了,不需要再做任何配置,起码我是不用的。

  1. 配置SSH直接允许Root登录
    因为集群环境是在内网集群,做好路由隔离后,直接允Root登录并不会造成很严重的安全问题,在后面的自动安装需要使用root权限,否则会卡住不动,严谨点也可以自己新建一个账号。
    sudo vi /etc/ssh/sshd_config
    将PermitRootLogin改为yes即可,其他配置项一般不需要动。然后进行验证 ssh [email protected] 看能不能登录到从机。

  2. 生成SSH证书使得主机到各个从机能免密登录
    这里就有优雅的方式了。在主机上sudo ssh-keygen 一路回车生成本机公私钥,不要输入私钥密码。然后执行下列命令

ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

依次会提示输入每个从机的root密码,然后自动将刚才生成的公钥分发到各个从机上并马上生效。
所以现在就可以使用 ssh [email protected]直接登录,不需要再输入密码了。
然后复制一份刚才生成的私钥内容,等一下用Ambari创建集群时的需要用到这个私钥。私钥位于/root/.ssh/id_rsa

比较优雅的前奏已经准备完了,接下来马上就要更优雅地部署环境了。

下载HDP离线安装包

官方文档是用源码安装,我们要优雅,所以直接使用已经编译好的。
首先到 https://docs.hortonworks.com/ 找到Ambari,截止本文发布的时候,最新版为2.5.2.0,找到它的Apache Ambari Installation,找到HDP离线下载,最新版为​HDP 2.6 Repositories

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.2.0/bk_ambari-installation/content/hdp_stack_repositories.html

随后下载Ubuntu16 Tarball 版的HDP以及HDP-UTILS 。 前者6G多,包含HDFS、HBase、Spark等等各种东西,请做好心理准备。如果这里不采用离线安装包的话,等一下几台从机都要从网上获取就毫无乐趣了。

安装Apache Ambari

Ambari只需要在主机上安装即可,随后会自动部署。
继续在刚才的网站上,找到Download the Ambari Repository
按照官方手册指引,以root登录主机后执行三句命令即可完成安装源的配置。注意这里的版本是2.5.2.0,请注意是否符合你的版本,如果不是请以网站的代码为准。

wget -O /etc/apt/sources.list.d/ambari.list http://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.5.2.0/ambari.list
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
apt-get update

apt-get install ambari-server

最后一句安装,这个安装包大概有七百多MB。

配置Apache Ambari

继续按照这个手册的指引,执行命令ambari-server setup配置Ambari,一路回车采用默认配置也可以。途中会自动下载甲骨文的1.8Jdk。用户名密码如果不配置,将会是admin和admin。

启动Apache Ambari

主机上运行一次ambari-server start稍等片刻即可。在这里引用一下手册内容:

Run the following command on the Ambari Server host:
ambari-server start
To check the Ambari Server processes:
ambari-server status
To stop the Ambari Server:
ambari-server stop

现在使用网页浏览器尝试访问主机的8080端口
http://<主机IP>:8080
如果出现Ambari的登录界面,即可完成。账号密码如果刚才没有配置,均为admin。

安装Nginx

其实也不一定要是Nginx,只是需要其提供的HTTP服务,来作为HDP离线包的下载服务器。
在主机上使用sudo apt-get install nginx安装。
执行完后,默认会自动启动。访问http://<主机IP>:80看能否看到Nginx的欢迎页面。

安装yum

每个从机、主机都需要安装yum,否则后面Ambari部署不会通过。详情见下文的 踩坑记录1
sudo apt-get install yum

确保Python版本>2.6

Ubuntu16安装默认是符合这个条件的。所以直接略过。

部署HDP离线安装包

将之前下载到的HDP以及HDP-UTILS 解压到一个能容得下它们的大空间,然后做软链接,链接到/var/www/html下,如果你空间足够,也可以直接移动到这里。其子路径随意。
然后将默认的欢迎页面重命名mv /var/www/html/index.nginx-debian.html /var/www/html/index.nginx-debian.html.bak
进入Nginx的配置文件sudo vi /etc/nginx/sites-enabled/default ,在server{...}里添加一句autoindex on;即打开目录浏览功能。
随后再次访问http://<主机IP>时,能看到目录结构,同时能找到HDP以及HDP-UTILS,能够从页面上下载,就行了。

如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第3张图片

创建第一个集群

访问http://<主机IP>:8080,登录后,点击Launch Install Wizard开始创建第一个集群

如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第4张图片
Ambari首页

到了第二步选择版本后

选择使用本地库,


如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第5张图片
如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第6张图片

HDP和HDP-UTILS的路径配置应为刚才在主机上用Nginx搭建的Http路径

如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第7张图片
HDP路径下的内容
如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第8张图片
HDP-UTILS路径下的内容

设置从机列表以及主机的root账号能登录每个从机的私钥,即刚才使用ssh-keygen生成的。


如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第9张图片

如果私钥和端口设置正常,hosts文件设置没问题,这里的installing将很快完成


如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第10张图片

踩坑记录:

  1. 当从机没有安装yum,此处无法通过,使用sudo apt-get install yum安装。

==========================
Running OS type check...
==========================
Command start time 2017-09-09 23:34:16
env: ‘/var/lib/ambari-agent/tmp/os_check_type1504971236.py’: No such file or directory
Connection to slave2.hd closed.
SSH command execution finished
host=slave2.hd, exitcode=127
Command end time 2017-09-09 23:34:16
ERROR: Bootstrap of host slave2.hd fails because previous action finished with non-zero exit code (127)
ERROR MESSAGE: Connection to slave2.hd closed.
STDOUT: env: ‘/var/lib/ambari-agent/tmp/os_check_type1504971236.py’: No such file or directory
Connection to slave2.hd closed.

如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第11张图片
从机没有安装yum的情况
  1. 全部Success后,会有一个附加条件的检查。我踩到两个坑,一个是没安装NTP服务,这个很简单,使用apt-get install ntp即可

  2. 还有一个常见的Transparent Huge Pages Issues
    这里要求关闭Transparent Huge Pages,所有涉及到的主机从机都要做这个。网上通常是做法是在rc.local文件做文章,但是Ubuntu16版本已经不存在这个文件了。Google了一番,比较优雅的做法是:
    参考这位老外David Foerster的解决方案 How do I modify “/sys/kernel/mm/transparent_hugepage/enabled”

install the sysfsutils package:
sudo apt install sysfsutils
and append a line with that setting to/etc/sysfs.conf:
kernel/mm/transparent_hugepage/enabled = never

但是他最初提供的并不全面,还不能解决问题,我后来稍微看一下,自己补充了一句就可以完全关闭了。在/etc/sysfs.conf里应该写如下两行。随后重启即可。

kernel/mm/transparent_hugepage/enabled = never
kernel/mm/transparent_hugepage/defrag = never                                         

希望大家都有这种美好的结果


如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用_第12张图片

从机不需要手动去安装Java。只要ssh连上了,Ambari的代理会全都帮你搞定,如果之前的HDP以及HDP-UTILS安装源路径设置没问题,安装了Yum,接下来基本没有什么坑了。
如果有,就是我还没遇到,靠大家自己去解决了

尾声

祝大家部署顺利 O(∩_∩)O~

参考文献

Ambari——大数据平台的搭建利器

How do I modify “/sys/kernel/mm/transparent_hugepage/enabled”

使用Ambari快速部署Hadoop大数据环境

Ambari安装之部署本地库(镜像服务器)(二)

Apache Ambari Installation

你可能感兴趣的:(如何优雅地使用Apache Ambari安装HDFS、HBase等分布式应用)