一、安装规划
1. 选择安装介质
HAWQ的安装介质有两种选择,一是下载源码手工编译,二是使用Pivotal公司提供的HDB安装包。源码的下载地址为http://apache.org/dyn/closer.cgi/incubator/hawq/2.0.0.0-incubating/apache-hawq-src-2.0.0.0-incubating.tar.gz,目前最新版本是2.0.0。源码编译和安装Apache官方文档地址为https://cwiki.apache.org/confluence/display/HAWQ/Build+and+Install。
建议初学者不要使用源码编译方式,这种方法需要的依赖包很多,对操作系统、Hadoop的版本、安装与配置也提出较高的要求。我曾尝试在已有的CDH 5.7集群上源码编译安装HAWQ 2.0.0,过程可谓步履维艰,一步一坎,最终还是放弃了这个失败的安装方案。如果想挑战一下自己的心理承受能力或技术水平的同学,不妨尝试这种方式。网上也有一些详细的资料可供参考,如“Apache HAWQ集群的安装部署”和“HAWQ手动安装”。我推荐的方式是使用HDB介质,主要原因是过程相对简单,安装成功率高。
2. 选择HAWQ版本
目前Pivotal提供的最新版本是HDB 2.1.1,该版本最主要的变化是包含了对ORC文件格式的一些支持(Beta版),包含所有Apache HAWQ孵化项目的功能特性,并修复了一些Apache HAWQ的bug。
在选择HDB版本时,需要考虑它与所支持操作系统、Hadoop平台和安装工具Ambari的版本之间的匹配关系。表1显示了最新的Pivotal HDB 2.1.1版本的产品支持。完整的产品支持矩阵参考http://hdb.docs.pivotal.io/211/hdb/releasenotes/HAWQ211ReleaseNotes.html#topic_g53_tgv_2v。
Pivotal HDB版本 | PXF版本 | HDP (Pivotal HDP and Hortonworks HDP)版本 | Ambari版本 | HAWQ Ambari Plug-inban版本 | MADlib版本 | RHEL/CentOS版本 | SuSE版本 |
---|---|---|---|---|---|---|---|
2.1.1.0 | 3.1.1 | 2.5 | 2.4.1 | 2.1.1 | 1.9, 1.9.1 | 6.4+ (64-bit) | n/a |
表1 HDB 2.1.1产品支持
注意:
本次安装选择最新版Pivotal HDB 2.1.1。
3. 确认Ambari与HDP的版本兼容性
安装HDB之前首先需要安装Ambari和Hortonworks Data Platform(HDP)。从表1看到Ambari的版本是2.4.1,HDP的版本是2.5,再次从hortonworks官方的安装文档中确认版本兼容性,兼容矩阵如图1所示。
图1 Ambari与HDP的版本兼容性
4. 实验环境
主机信息如表2所示,所有主机都能连接互联网。
主机名 | IP地址 |
---|---|
hdp1 | 172.16.1.124 |
hdp2 | 172.16.1.125 |
hdp3 | 172.16.1.126 |
hdp4 | 172.16.1.127 |
表2 主机信息
硬件配置:每台主机CPU4核、内存8G、硬盘100G
软件版本如表3所示。
名称 | 版本 |
---|---|
操作系统 | CentOS release 6.4 (Final) 64位 |
JDK | OpenJDK 64-Bit version "1.7.0_09-icedtea" |
数据库 | MySQL 5.6.14 |
JDBC | MySQL Connector Java 5.1.38 |
HDP | 2.5.0 |
Ambari | 2.4.1 |
表3 系统软件版本
二、安装前准备
整个HAWQ的安装部署过程包括安装Ambari、安装HDP、安装HAWQ三个依次进行的步骤,在实施这些步骤前需要做一些准备工作。如没做特殊说明,所有配置或命令都用root用户执行。
1. 参考官方文档确认最小系统需求
操作系统:CentOS v6.x
浏览器:Google Chrome 26及以上
依赖软件包:yum、rpm、scp、curl、unzip、tar、wget、OpenSSL (v1.01, build 16 or later)、Python 2.6.x、OpenJDK 7/8 64-bit
系统内存与磁盘:Ambari主机至少应该有1G内存和500M剩余磁盘空间。如果要使用Ambari Metrics,所需内存和磁盘依据集群规模,如图2所示。
图2 资源需求与集群规模
最大打开文件描述符:推荐值大于10000。使用下面的命令检查每个主机的当前值:
ulimit -Sn
ulimit -Hn
如果小于10000,使用下面的命令设置成10000
ulimit -n 10000
2. 准备系统安装环境
(1)禁用防火墙
在安装期间Ambari需要与部署集群主机通信,因此特定的端口必须打开。最简单的实现方式是执行下面的命令禁用防火墙:
/etc/init.d/iptables stop
chkconfig iptables off
四台主机都要执行。
(2)禁用SELinux
Ambari安装需要禁用SELinux:
setenforce 0
# 编辑/etc/selinux/config文件,设置
SELINUX=disabled
四台主机都要执行。
(3)配置域名解析
编辑/etc/hosts文件,添加如下四行:
172.16.1.124 hdp1
172.16.1.125 hdp2
172.16.1.126 hdp3
172.16.1.127 hdp4
四台主机都要执行。
注意:不要删除文件中原有的如下两行,否则可能引起网络问题。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
在hdp1上执行:
hostname hdp1
# 编辑/etc/sysconfig/network文件,设置如下两行:
NETWORKING=yes
HOSTNAME=hdp1
在hdp2、hdp3、hdp4上执行类似的配置。
(4)安装配置NTP
yum install -y ntp
chkconfig ntpd on
service ntpd start
四台主机都要执行。
(5)配置SSH免密码
为了使得Ambari Server在集群所有主机上自动安装Ambari Agents,必须配置Ambari Server主机到集群其它主机的SSH免密码连接。以下配置用于在hdp1上运行Ambari Server,在所有四台主机上运行Ambari Agents的情况。
ssh-keygen
... 一路回车 ...
ssh-copy-id hdp1
ssh-copy-id hdp2
ssh-copy-id hdp3
ssh-copy-id hdp4
四hdp1上执行以上命令。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
四台主机都要执行。
(6)安装MySQL JDBC驱动
tar -zxvf mysql-connector-java-5.1.38.tar.gz
cp ./mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /usr/share/java/mysql-connector-java.jar
四台主机都要执行。
(7)安装MySQL数据库
在hdp1、hdp2上安装MySQL,hdp1上的MySQL用于Ambari,hdp1上的MySQL用于Hive、Oozie等Hadoop组件。在hdp1、hdp2上执行以下命令。
rpm -ivh MySQL-5.6.14-1.el6.x86_64.rpm
service mysql start
(8)在hd2上的MySQL中建立数据库用户并授权
# mysql -u root -p
create database hive;
create database oozie;
create user 'hive'@'%' identified by 'hive';
grant all privileges on hive.* to 'hive'@'%';
create user 'oozie'@'%' identified by 'oozie';
grant all privileges on oozie.* to 'oozie'@'%';
flush privileges;
3. 建立本地Repository
联机安装过程中需要从远程的Repository中yum下载所需要的包,为了防止由于网络不稳定或远程Repository不可用等原因导致的安装失败,最好配置本地Repository。在安装HDP时,本地和远程的Repository配合使用,既能加快安装进度,又能补全所需的包。
(1)下载以下两个文件到hdp1
wget http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos6-rpm.tar.gz
wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos6/HDP-UTILS-1.1.0.21-centos6.tar.gz
(2)在hdp1上建立一个HTTP服务器
yum install httpd
mkdir -p /var/www/html/
cd /var/www/html/
tar -zxvf ~/HDP-2.5.0.0-centos6-rpm.tar.gz
tar -zxvf ~/HDP-UTILS-1.1.0.21-centos6.tar.gz
service httpd start
(3)新建/etc/yum.repos.d/hdp.repo文件,添加如下行:
[hdp-2.5.0.0]
name=hdp-2.5.0.0
baseurl=http://172.16.1.124/HDP/centos6/
path=/
enabled=1
gpgcheck=0
priority=10
(4)新建/etc/yum.repos.d/hdp-utils.repo文件,添加如下行:
[HDP-UTILS-1.1.0.21]
name=HDP-UTILS-1.1.0.21
baseurl=http://172.16.1.124/HDP-UTILS-1.1.0.21/repos/centos6
path=/
enabled=1
gpgcheck=0
priority=10
(5)下载CentOS6-Base-163.repo到/etc/yum.repos.d目录
安装过程中发现本地仓库不全,还少RPM包,因此再加一个163的源。
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
(6)新建/etc/yum.repos.d/fedora.repo文件,添加如下行:
[epel]
name=epel
baseurl=http://dl.fedoraproject.org/pub/epel/6/x86_64/
enabled=1
gpgcheck=0
HAWQ的Repository中缺少libgsasl库,需要再加一个包含libgsasl库的源。
(7)将新建的Repository配置文件复制到其它主机
scp /etc/yum.repos.d/* root@hdp2:/etc/yum.repos.d/
scp /etc/yum.repos.d/* root@hdp3:/etc/yum.repos.d/
scp /etc/yum.repos.d/* root@hdp4:/etc/yum.repos.d/
三、安装Ambari
Ambari跟Hadoop等开源软件一样,也是Apache Software Foundation中的一个项目,并且是顶级项目。目前最新的发布版本是 2.4.2。就Ambari的作用来说,就是创建、管理、监视Hadoop的集群。但是这里的Hadoop是广义的,指的是Hadoop整个生态圈(例如 Hive、Hbase、Sqoop、Zookeeper等等),而并不仅是特指Hadoop。用一句话来说,Ambari就是让Hadoop 以及相关的大数据软件更容易使用的一个工具。
Ambari主要具有以下功能特性:
Ambari使用Ganglia收集度量指标,用Nagios支持系统报警,当需要引起管理员的关注时(比如,节点停机或磁盘剩余空间不足等问题),系统将向其发送邮件。此外,Ambari能够安装安全的(基于Kerberos)Hadoop集群,以此实现了对Hadoop 安全的支持,提供了基于角色的用户认证、授权和审计功能,并为用户管理集成了LDAP和Active Directory。
Ambari自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server和Ambari Agent。简单来说,用户通过Ambari Server通知Ambari Agent安装对应的软件,Agent会定时地发送各个机器每个软件模块的状态给Ambari Server,最终这些状态信息会呈现在Ambari的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。下面详细说明Ambari的安装。
1. 下载Ambari repository到hdp1
(1)下载Ambari repository文件
wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
注意:文件名必须是ambari.repo,当Ambari Agent注册到Ambari Server时需要此文件。
(2)确认Repository配置
yum repolist | grep amba
应该看到类似图3所示的信息
图3 查看Ambari repository
(3)安装Ambari Server
yum install ambari-server
这步也会安装Ambari缺省使用的PostgreSQL数据库。出现提示符时输入y,确认事务和依赖检查。
2. 为Ambari配置MySQL数据库
(1)在hdp1上的MySQL中建立Ambari数据库用户并授权
# mysql -u root -p
create user 'ambari'@'%' identified by 'ambari';
grant all privileges on *.* to 'ambari'@'%';
flush privileges;
(2)建立Ambari Server数据库模式
# mysql -u ambari -p
create database ambari;
use ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
3. 配置Ambari Server
启动Ambari Server前必须进行配置,指定Ambari使用的数据库、安装JDK、定制运行Ambari Server守护进程的用户等。在hdp1上执行下面的命令管理配置过程。
ambari-server setup
4. 启动Ambari Server
在hdp上执行下面的命令启动Ambari Server:
ambari-server start
# 查看Ambari Server进程状态
ambari-server status
至此,Ambari安装完成
四、安装、配置、部署HDP集群
Hortonworks Data Platform是Hortonworks公司开发的Hadoop数据平台。Hortonworks由Yahoo的工程师创建,它为Hadoop提供了一种“service only”的分发模型。有别于其它商业化的Hadoop版本,Hortonworks是一个可以自由使用的开放式企业级数据平台。其Hadoop发行版本即HDP,可以被自由下载并整合到各种应用当中。
Hortonworks是第一个提供基于Hadoop 2.0版产品的厂商,也是目前唯一支持Window平台的Hadoop分发版本。用户可以通过HDInsight服务,在Windows Azure上部署Hadoop集群。HDP的特性如下:
下面说明在浏览器中使用Ambari的安装向导交互式安装、配置、部署HDP。
1. 在浏览器中登录Ambari
http://172.16.1.124:8080,初始的用户名/密码为admin/admin。在欢迎页面点击“Launching Install Wizard”,如图4所示。
图4
2. 给集群命名
集群名称中不要有空格和特殊字符,然后点击“Next”。
3. 选择HDP版本
选择2.5.0.0,如图5所示。
图5
4. 选择Repositories
选择Use Public Repositories,然后点击“Next”。
5. 安装选项
hdp1
hdp2
hdp3
hdp4
6. 确认主机
选中四台主机,点击“Next”。
7. 选择服务
根据需要选择服务,点击“Next”。
8. 标识Masters
根据需要选择Masters,点击“Next”。
9. 标识Slaves和Clients
根据需要选择Slaves和Clients,点击“Next”。
10. 定制服务
11. 复查确认
选择“Deploy”。
12. 安装、启动与测试
此时显示安装进度页面。Ambari对HDP的每个组件执行安装、启动和简单的测试。不要刷新浏览器,等待部署过程完全执行成功。当出现“Successfully installed and started the services”时,选择“Next”。
13. 完成
汇总页面显示完成的任务列表。选择“Complete”,显示Ambari Web GUI主页面。
至此,HDP安装完成。
五、安装HAWQ
1. 选择HAWQ主机
在安装HAWQ之前,使用下面的步骤选择和准备所需主机。
(1)选择作为HAWQ segment的主机。记住有以下限制:
在本实验环境中,集群中的四台主机均作为HAWQ segment,其中两台分别作为master和standby,在安装时Ambari会自动部署主机。
(2)选择运行PXF的主机。记住有以下限制:
在本实验环境中,集群中的四台主机均安装PXF,在安装时Ambari会自动部署主机。(在前面部署HDP时,已经在所有四台机器上安装了客户端程序。)
(3)确认所有主机上的所需端口没有被占用
HAWQ master和standby master服务缺省使用5432端口。前面安装Ambari是使用的是MySQL数据库存储元数据,而不是缺省的PostgreSQL,所以本次安装中不存在端口冲突问题。
2. 建立HDB软件的Repositories
在安装HDB前必须建立两个本地yum repositories。在运行Ambari server的主机上(hdp1)以root用户执行下面的步骤。这台主机(称为repo-node)必须能够访问HAWQ集群的所有节点。
(1)重启httpd服务器
service httpd [re]start
(2)从https://network.pivotal.io/products/pivotal-hdb下载名为hdb-2.1.1.0-7.tar的HDB安装文件。
(3)建立一个临时目录存储解压后的的HDB安装包。运行httpd进程的操作系统用户(本此安装中是root)必须对该目录及其所有上级目录具有可读可执行的权限。
mkdir /staging
chmod a+rx /staging
注意:不要使用/tmp目录,/tmp下的文件可能在任意时间被删除。
(4)HDB安装文件中包含一个yum repository。解压HDB安装文件后,运行setup_repo.sh脚本,将HDB软件的发布包添加到本地yum包的repository中。
cd /staging
tar -zxvf hdb-2.1.1.0-7.tar
cd hdb-2.1.1.0
./setup_repo.sh
setup_repo.sh在本地建立一个名为hdb-2.1.1.0.repo的HDB repository,并且在httpd服务器的根目录(缺省为/var/www/html)下建立一个符号链接指向hdb-2.1.1.0-7.tar的解压缩目录。在本次安装中为:/var/www/html/hdb-2.1.1.0 -> /staging/hdb-2.1.1.0
(5)在HAWQ集群的所有节点上安装epel-release包
yum install -y epel-release
3. 使用Ambari安装HAWQ
(1)用root用户登录Ambari server主机(hdp1)。
(2)从HDB repository安装HAWQ Ambari插件。
yum install -y hawq-ambari-plugin
以上命令会建立/var/lib/hawq目录,并将所需的脚本和模板文件安装到该目录中。
(3)重启Ambari服务器。
ambari-server restart
(4)执行add-hawq.py脚本将HDB repository添加到Ambari服务器中。
cd /var/lib/hawq
./add-hawq.py --user admin --password admin --stack HDP-2.5
注意:提供正确的Ambari管理员用户名/密码,缺省为admin/admin。
(5)重启Ambari服务器。
ambari-server restart
(6)登录Ambari web控制台。
http://172.16.1.124:8080,缺省的用户名/密码为admin/admin,确认HAWQ服务已经可用。
(7)选择HDFS -> Configs标签。
(8)配置HDFS。
Property | Setting |
---|---|
dfs.allow.truncate | true |
dfs.block.access.token.enable | false for an unsecured HDFS cluster, or true for a secure cluster |
dfs.block.local-path-access.user | gpadmin |
HDFS Short-circuit read | true |
dfs.client.socket-timeout | 300000000 |
dfs.client.use.legacy.blockreader.local | false |
dfs.datanode.handler.count | 60 |
dfs.datanode.socket.write.timeout | 7200000 |
dfs.namenode.handler.count | 600 |
dfs.support.append | true |
表4 hdfs-site属性
(9)点开Advanced core-site,设置表5所示属性的值,如果属性不存在,则选择Custom core-site,点击Add property… 添加属性并设置表中所示的值。
Property | Setting |
---|---|
ipc.client.connection.maxidletime | 3600000 |
ipc.client.connect.timeout | 300000 |
ipc.server.listen.queue.size | 3300 |
表5 core-site属性
(10)点击Save保存配置。
(11)如果Ambari提示需要重启,在继续后面的步骤前先点击Restart重启服务。
(12)在主页选择Actions > Add Service。
(13)从服务列表选择HAWQ和PXF,点击Next,显示Assign Masters页。
(14)选择HAWQ Master和HAWQ Standby Master的主机,或接受缺省值,点击Next显示Assign Slaves and Clients页。
(15)选择运行HAWQ segments和PXF的主机,或接受缺省值,点击Next。Add Service助手会基于可用的Hadoop服务自动为HAWQ选择主机。
注意:PXF必须安装在NameNode、Standby NameNode和每一个DataNode节点上,而HAWQ segment必须安装在每个DataNode节点上。
(16)在Customize Services页面接受缺省设置。
(17)点击Advanced标签,输入HAWQ系统用户口令,点击Next。
(18)在后面的页面均接受缺省值,连续点击Next。
(19)最后点击Complete。如果Ambari提示集群上的组件需要重启,选择Restart > Restart All Affected重启所有受影响的服务。
(20)验证HAWQ安装。
用gpadmin用户登录HAWQ master所在主机,执行下面的命令:
# 设置HAWQ环境变量
source /usr/local/hawq/greenplum_path.sh
psql -d postgres
create database test;
\c test
create table t (i int);
insert into t select generate_series(1,100);
\timing
select count(*) from t;
结果如图6所示。
图6 验证HAWQ安装
参考:
https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.5.0/index.html