HDP是完全开源的,基于Apache Hadoop生态系统的,源代码完全贡献回Apache社区,其开发的Ambari提供了一个管理和监控HDP的解决方案。
- 兼容性
Ambari2.2.2,兼容HDP2.4、2.3。(我没用过老版本,不关心其它版本的兼容性)
- 操作系统
CentOS6、7等其他主流的Linux操作系统(官方没提Windows、OS X、其他Unix等,应该是需要使用那些Linux一些库下载组件,所以现在没有支持其他OS),最好连接互联网,如果不能需要搭建本地库。(生产上,大部分机器都是不可连接互联网的,这也是我看这个文档的主要原因,学习搭建本地库)
- 浏览器
推荐主流OS上的最新稳定版浏览器
- 软件支持
yum 和 rpm (我只关心CentOS)
scp, curl, unzip, tar 和 wget
OpenSSL(v1.01, bulid 16 or later)
Python 2.6及以上版本
- JDK
Oracle JDK 1.8 64-bit、1.7
OpenJDK 8 64-bit、7
JDK取决于HDP Stack的版本
- 数据库
Ambari需要一个关系型数据库存储集群的配置和拓扑信息。如果安装的HDP Stack包含Hive或者Oozie,这两个组件也需要一个关系型数据库。
Ambari Server主机默认使用PostgreSQL(官方文档列了很多,主要是PostgreSQL、MySQL和Oracle的主流版本)
Ambari会在Hive Metastore主机上安装MySQL
(其它的我不关心,Hive其实我也不是很关心)
不支持Microsoft SQL Server 和SQL Anywhere
- 内存
Ambari主机需要至少1G内存,500M的空余。
要是安装Ambari Metrics,有个官方的表格可以参考。(我觉得Ambari Metrics必须装吧,我没有不装它的理由)
- 包大小和Inode数
- 最大文件描述符
10000或者更多,使用如下命令检查
ulimit -Sn
ulimit -Hn
如果不大于10000,则使用
ulimit -n 10000
进行设置
- 搜集信息
- 每个主机设置好FQDN,Ambari安装向导支持使用IP地址(不知道这句话的目的,还是最好设置FQDN,按规范来吧)。hostname -f 检查主机的FQDB,虽然可以把HDP的所有组件部署在一个机器上,这样处于验证是可以的,但是为了发挥大数据分布式计算和存储的优势,最低是一台master、两台slave的三主机集群。
- 确定好每台机器上安装的组件
- 确定挂载和存储的基础目录(base directory,瞎翻译了):
-
- NameNode data
- DataNodes data
- Secondary NameNode data
- Oozie data
- YARN data
- ZooKeeper data
- log,pid,db文件等
不能使用会被清空的临时路径,否则集群启动会失败
- 准备环境
- SSH无密码登录
保证Ambari Server主机到其它机器的无密码SSH登录,便于安装Ambari Agent。(可以手动安装,那真是自虐啊)
1) 在Ambari Server主机上生成SSH的公钥和私钥
ssh-keygen
2) 拷贝SSH的公钥(id_rsa.pub)到目标主机的root账户下
3) 添加SSH公钥到目标主机的authorized_keys文件
cat id_rsa.pub >> authorized_keys
4) 修改目标主机相应目录和文件的权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
5) 确认Ambari Server到目标主机的SSH无密码登录
ssh root@<remote.target.host>
6) 第一次会有个警告Are you sure you want to continue connecting (yes/no) yes
7) 私钥保存在运行Ambari 基于Web的安装向导机器上
最要使用一个能无密码sudo的账户,相对安全一点儿
-
- 创建Service User账户
Ambari 安装向导会创建所需的账户
-
- 启用NTP服务
确认NTP服务自动启动
chkconfig --list ntp
如果没有自动启动,则设置
chkconfig ntpd on
启动NTP服务
service ntpd start
-
- 检查DNS和NSCD
要么设置DNS,要么写/etc/hosts文件,解析IP和FQDN。因为Hadoop重度依赖DNS,为了减轻DNS的压力,推荐启用NSCD。
1) 编辑host文件
a) vim /etc/hosts
b) 添加IP和FQDN
2) 设置hostname
a) 查看hostname
hostname -f
b) 设置hostname
hostname <fully.qualified.domain.name>
3) 网络设置
a) vim /etc/sysconfig/network
b) NETWORKING=yes
HOSTNAME=<fully.qualified.domain.name>
-
- 配置iptables
chkconfig iptables off
/etc/init.d/iptables stop
(其实只要ambari需要的端口开着,并且可以access就行,但是只要iptables跑着,就会有警告)
-
- 关闭SELinux 和 PackageKit,并检查umask的值
1) setenforce 0
要永久关闭SELinux,编辑/etc/selinux/config,SELINUX=disabled
2) 如果安装了PackageKit,关闭之。/etc/yum/pluginconf.d/refresh-packagekit.conf,enabled=0
3) ambari需要设置umask的值为022或027
临时设置
umask 0022
检查
umask
永久性设置
echo umask 0022 >> /etc/profile
- 使用本地库
1) 获取库
a) Ambari 库
如果没有Internet连接,直接下载tarball文件;要是有临时的Internet连接,下载对应OS的库文件,通过包管理软件下载。(我重点关注没有Internet连接的情况)
b) HDP Stack 库
和Ambari库一样,也是这两种情况。(就是有Internet连接,也推荐下载tarball文件,因为众所周知的原因,我们访问国外网站会有抽风,还是用下载软件直接下载tarball,我关注HDP 2.4版本 CentOS 6的库,其它版本类似)
2) 建立本地库
也分有无Internet连接两种情况。(本文集中精力与无Internet连接的情况)
3) 开始建立本地库
a) 安装HTTP server(比如Apache httpd)
b) 启动web server
c) 保证防火墙允许集群节点机器到镜像服务器的HTTP访问
d) 在镜像服务器上,建立目录(CentOS为例,不做特殊说明,全文都是CentOS上的操作)
mkdir -p /var/www/html/
e) cd /var/www/html/
f) 在web server目录下解压下载的tarball文件,库和对应的加压路径如下
g) 确认可以用浏览器访问新的本地库
i) 可选操作:如果有多个源,安装下列组件
yum install yum-plugin-priorities
更改配置
/etc/yum/pluginconf.d/priorities.conf
[main]
enabled=1
gpgcheck=0
4) 准备Ambari库配置文件
a) 从公共库下载ambari.repo 文件
http://public-repo-1.hortonworks.com/ambari/<OS>/2.x/updates/2.2.2.0/ambari.repo
b) 编辑ambari.repo文件,替换Ambari的baseurl为本地库的URL。要么关闭GPG校验gpgcheck =0 ,要么替换GPG-KEY的本地库校验
c) 将ambari.repo文件放置到Ambari Server机器上
/etc/yum.repos.d/ambari.repo
d) 编辑配置文件
/etc/yum/pluginconf.d/priorities.conf
[main]
enabled=1
gpgcheck=0
/*
*本地库就搭建完了,下一步就是安装Ambari了
*/