一、安装环境
CDH 6.3.1集群主机: 172.16.1.124:NameNode、SecondaryNameNode 172.16.1.125:DataNode 172.16.1.126:DataNode 172.16.1.127:DataNode
二、选择HAWQ主机
在安装HAWQ之前,使用下面的步骤选择和准备所需主机。 (1)选择作为HAWQ segment的主机。记住有以下限制:
- 每台主机都必须满足安装相应版本HAWQ的系统要求。
- 每个HAWQ segment所在主机必须和其上运行的HDFS DataNode协同工作。
- HAWQ master segment和standby master segment必须部署在不同的主机上。
在本实验环境中,CDH集群中的全部四台主机均作为HAWQ segment,172.16.1.124部署为HAWQ master。由于CDH没有配置NameNode HA,因此不部署HAWQ的standby master。
(2)选择运行PXF的主机。记住有以下限制:
- PXF必须安装在HDFS NameNode和所有HDFS DataNodes主机上。
- 如果配置了Hadoop HA,PXF必须安装在包括所有NameNode和所有HDFS Node的主机上。
- 如果想通过PXF访问HBase和Hive,必须在将要安装PXF的主机上首先安装HBase和Hive的客户端。
由于PXF的性能较差,再有HAWQ 2.4.0本身支持外部表,因此本实验环境中不安装PXF。
(3)确认所有主机上的所需端口没有被占用 HAWQ master和standby master服务缺省使用5432端口。
三、安装前准备
以下步骤需要用root用户在全部主机执行。
1. 建立gpadmin用户和HAWQ主目录
代码语言:javascript复制useradd --home=/opt/gpadmin/ --no-create-home --comment "HAWQ admin" gpadmin
echo YOURPASSWORD | passwd --stdin gpadmin mkdir /opt/gpadmin
chown gpadmin:gpadmin /opt/gpadmin
将gpadmin用户加入sudo,编辑/etc/sudoers文件,添加以下一行:
代码语言:javascript复制gpadmin ALL=(ALL) NOPASSWD:ALL
2. 创建HAWQ的本地数据目录
代码语言:javascript复制mkdir -p /opt/gpadmin/hawq-data-directory/masterdd
mkdir -p /opt/gpadmin/hawq-data-directory/segmentdd
chown -R gpadmin:gpadmin /opt/gpadmin/
3. 安装依赖包
代码语言:javascript复制wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
rpm -Uvh epel-release*rpm
yum -y install libgsasl
yum -y install thrift
yum -y install protobuf
yum -y install boost
三、安装HAWQ
以下步骤需要用root用户在全部主机执行。
1. 下载安装包
代码语言:javascript复制wget https://archive.apache.org/dist/hawq/2.4.0.0/apache-hawq-rpm-2.4.0.0.tar.gz
2. 解压并安装
代码语言:javascript复制tar -zxvf apache-hawq-rpm-2.4.0.0.tar.gz
cd hawq_rpm_packages/
rpm -ivh apache-hawq-2.4.0.0-el7.x86_64.rpm
四、配置HAWQ
以下步骤需要用root用户在172.16.1.124主机执行。
1. 创建HAWQ的HDFS数据目录
代码语言:javascript复制su - hdfs
hdfs dfs -mkdir /hawq_default
hdfs dfs -chown gpadmin:gpadmin /hawq_default
2. 修改配置文件
代码语言:javascript复制su - gpadmin
cd /usr/local/apache-hawq/etc/
vi hawq-site.xml
修改以下属性:
代码语言:javascript复制<property>
<name>hawq_master_address_host</name>
<value>172.16.1.124</value>
<description>The host name of hawq master.</description>
</property>
<property>
<name>hawq_master_address_port</name>
<value>5432</value>
<description>The port of hawq master.</description>
</property>
<property>
<name>hawq_standby_address_host</name>
<value>none</value>
<description>The host name of hawq standby master.</description>
</property>
<property>
<name>hawq_segment_address_port</name>
<value>40000</value>
<description>The port of hawq segment.</description>
</property>
<property>
<name>hawq_dfs_url</name>
<value>172.16.1.124:8020/hawq_default</value>
<description>URL for accessing HDFS.</description>
</property>
<property>
<name>hawq_master_directory</name>
<value>/opt/gpadmin/hawq-data-directory/masterdd</value>
<description>The directory of hawq master.</description>
</property>
<property>
<name>hawq_segment_directory</name>
<value>/opt/gpadmin/hawq-data-directory/segmentdd</value>
<description>The directory of hawq segment.</description>
</property>
3. 添加slaves
编辑/usr/local/apache-hawq/etc/slaves文件,增加所有主机IP:
代码语言:javascript复制172.16.1.124
172.16.1.125
172.16.1.126
172.16.1.127
4. 将配置文件复制到其它主机
代码语言:javascript复制scp hawq-site.xml 172.16.1.125:/usr/local/apache-hawq/etc/
scp hawq-site.xml 172.16.1.126:/usr/local/apache-hawq/etc/
scp hawq-site.xml 172.16.1.127:/usr/local/apache-hawq/etc/
scp slaves 172.16.1.127:/usr/local/apache-hawq/etc/
scp slaves 172.16.1.126:/usr/local/apache-hawq/etc/
scp slaves 172.16.1.125:/usr/local/apache-hawq/etc/
五、配置OS内核参数与限制
参考/usr/local/apache-hawq/etc/gpcheck.cnf文件修改内核参数与限制。以下步骤用root用户在所有主机执行。
1. 修改内核参数
编辑/etc/sysctl.conf,增加以下内容:
代码语言:javascript复制kernel.sem= 250 512000 100 2048
kernel.msgmnb= 65536
kernel.msgmax= 65536
net.ipv4.tcp_syncookies= 0
net.ipv4.tcp_tw_recycle= 1
net.ipv4.tcp_max_syn_backlog= 200000
net.ipv4.conf.all.arp_filter= 1
net.ipv4.ip_local_port_range= 1281 65535
net.core.netdev_max_backlog= 200000
vm.overcommit_memory= 2
fs.nr_open= 3000000
kernel.threads-max= 798720
kernel.pid_max= 798720
kernel.msgmni = 2048
kernel.shmmax = 1000000000
kernel.shmall = 4000000000
kernel.sysrq = 1
使配置生效:
代码语言:javascript复制sysctl -p
2. 修改限制
编辑/etc/security/limits.conf文件,增加以下内容:
代码语言:javascript复制* soft nofile 2900000
* hard nofile 2900000
* soft nproc 131072
* hard nproc 131072
六、创建HAWQ集群
在172.16.1.124用gpadmin用户执行以下命令:
代码语言:javascript复制cd /usr/local/apache-hawq/
source greenplum_path.sh
cd ./bin
# 配置gpadmin用户免密登录
./hawq ssh-exkeys -h 172.16.1.124 -h 172.16.1.125 -h 172.16.1.126 -h 172.16.1.127
# 初始化集群
./hawq init cluster
七、验证HAWQ启动
在172.16.1.124用gpadmin用户执行:
代码语言:javascript复制[gpadmin@manager/opt/gpadmin]$source /usr/local/apache-hawq/greenplum_path.sh
[gpadmin@manager/opt/gpadmin]$hawq state
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- HAWQ instance status summary
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:------------------------------------------------------
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Master instance = Active
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- No Standby master defined
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Total segment instance count from config file = 4
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:------------------------------------------------------
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Current HAWQ acl type = standalone
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:------------------------------------------------------
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Segment Status
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:------------------------------------------------------
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Total segments count from catalog = 4
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Total segment valid (at master) = 4
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Total segment failures (at master) = 0
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Total number of postmaster.pid files missing = 0
20200313:17:28:30:020934 hawq_state:manager:gpadmin-[INFO]:-- Total number of postmaster.pid files found = 4
[gpadmin@manager/opt/gpadmin]$psql -d postgres
psql (8.2.15)
Type "help" for help.
postgres=#
参考:
- HAWQ技术解析(二) —— 安装部署
- 基于Centos7和CDH5.14.2 安装HAWQ2.3.0