目錄
一、安裝環境
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主目錄
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文件,添加以下一行:
gpadmin ALL=(ALL) NOPASSWD:ALL
2. 創建HAWQ的本地數據目錄
mkdir -p /opt/gpadmin/hawq-data-directory/masterdd
mkdir -p /opt/gpadmin/hawq-data-directory/segmentdd
chown -R gpadmin:gpadmin /opt/gpadmin/
3. 安裝依賴包
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. 下載安裝包
wget https://archive.apache.org/dist/hawq/2.4.0.0/apache-hawq-rpm-2.4.0.0.tar.gz
2. 解壓並安裝
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數據目錄
su - hdfs
hdfs dfs -mkdir /hawq_default
hdfs dfs -chown gpadmin:gpadmin /hawq_default
2. 修改配置文件
su - gpadmin
cd /usr/local/apache-hawq/etc/
vi hawq-site.xml
修改以下屬性:
<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:
172.16.1.124
172.16.1.125
172.16.1.126
172.16.1.127
4. 將配置文件複製到其它主機
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,增加以下內容:
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
使配置生效:
sysctl -p
2. 修改限制
編輯/etc/security/limits.conf文件,增加以下內容:
* soft nofile 2900000
* hard nofile 2900000
* soft nproc 131072
* hard nproc 131072
六、創建HAWQ集羣
在172.16.1.124用gpadmin用戶執行以下命令:
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用戶執行:
[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=#