【赵渝强老师】基于PostgreSQL的MPP集群:Greenplum
Greenplum本质上是一个基于PostgreSQL的关系型数据库集群,实际上是由多个独立的数据库服务组合而成的一个逻辑数据库。与Oracle的RAC不同,这种数据库集群采取的是MPP(Massively Parallel Processing,大规模并行处理)架构。Greenplum最大的特点就是基于低成本的开放平台基础上提供强大的并行数据计算性能和海量数据管理能力。下图展示了Greenplum的体系架构。
视频讲解如下 |
---|
【赵渝强老师】基于PostgreSQL的MPP集群:Greenplum |
Greenplum的体系架构由三部分组成:Master Host、Segment Host、Interconnect,其中每个Segment Host相当于一个独立的PostgreSQL数据库实例。下表列举了每个组成部分的功能和作用。
在了解到了Greenplum的基本知识后,本小节将通过具体的操作步骤来演示如何安装和配置Greenplum集群。
一、以下步骤使用root用户在每台主机上执行
(1)禁用SELinux和防火墙
(2)编辑文件/etc/sysctl.conf修改内核配置参数,使用下面内容覆盖原有内容。
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 10000 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
(3)生效内核配置参数。
sysctl -p
(4)编辑文件/etc/security/limits.conf配置资源限制参数。
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
(5)编辑文件/etc/hosts配置主机名和IP地址的映射关系。
192.168.79.11 node11
192.168.79.12 node12
192.168.79.13 node13
192.168.79.14 node14
(6)创建用户和用户组
groupadd gpadmin
useradd -g gpadmin gpadmin
passwd gpadmin
(7)创建需要的目录,并授权给gpadmin。
mkdir -p /home/gpadmin/data (可以只在Segment上创建)
mkdir -p /home/gpadmin/master (可以只在Master上创建)
chown -R gpadmin:gpadmin /home/gpadmin
(8)编辑文件/etc/sudoers给gpadmin用户加上sudo权限。
gpadmin ALL=(ALL) ALL
(9)重启服务器。
(10)安装Greenplum。
yum -y install greenplum-db-6.24.3-rhel7-x86_64.rpm# 这一步将会把Greenplum默认安装到/usr/local/目录下。
# 这里需要配置阿里云YUM源和DNS
cd /etc/yum.repos.d/
rm -rf *
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 配置DNS
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
(11)授权给gpadmin。
chown -R gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*
(12)切换到gpadmin用户配置免密码登录
su - gpadmin
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub gpadmin@node11
....
二、以下步骤使用gpadmin用户在master主机上执行。
(13)在gpadmin用户主目录创建名为all_host的文件,内容为所有Greenplum主机名
node11
node12
node13
node14
(14)在gpadmin用户主目录创建名为seg_host的文件,内容为所有segment主机名
node11
node12
node13
(15)设置Greenplum环境。
source /usr/local/greenplum-db-6.24.3/greenplum_path.sh
(16)确认软件安装
gpssh -f all_host -e 'ls -l /usr/local/greenplum-db-6.24.3/'# 如果Greenplum安装成功,应该能够在没有密码提示的情况下登录到所有主机。
(17)验证主机环境(这里需要等待一段时间)
检查点对点网络传输速度# 双向同时发包,适合偶数个网口的情况
gpcheckperf -f all_host -r N -d /tmp > subnet1.out
# 单向顺序发包,适合奇数或偶数个网口的情况
gpcheckperf -f all_host -r n -d /tmp > subnet2.out检查全矩阵多对多网络传输速度
gpcheckperf -f all_host -r M -d /tmp > subnet3.out验证磁盘I/O和内存带宽性能
gpcheckperf -f seg_host -r ds -D -d /home/gpadmin/data > io.out
(18)编辑Greenplum初始化配置文件initgp_config,输入下面的内容:
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/data)
MASTER_HOSTNAME=node14
MASTER_PORT=5432
MASTER_DIRECTORY=/home/gpadmin/master
DATABASE_NAME=gpdb
(19)初始化数据库。
gpinitsystem -c initgp_config -h seg_host# 输出的信息如下:
......
gpinitsystem:node14:gpadmin-[INFO]:-Greenplum Primary Segment Configuration
gpinitsystem:node14:gpadmin-[INFO]:----------------------------------------
gpinitsystem:node14:gpadmin-[INFO]:-node11 33000 node11 /home/gpadmin/data/gpseg0 2
gpinitsystem:node14:gpadmin-[INFO]:-node12 33000 node12 /home/gpadmin/data/gpseg1 3
gpinitsystem:node14:gpadmin-[INFO]:-node13 33000 node13 /home/gpadmin/data/gpseg2 4Continue with Greenplum creation Yy|Nn (default=N):
> y 这里输入y
(20)数据库初始化完成后会自动启动数据库集群,并输出下面的信息:
gpinitsystem:node14:gpadmin-[WARN]:-*******************************************************
gpinitsystem:node14:gpadmin-[INFO]:-Greenplum Database instance successfully created
gpinitsystem:node14:gpadmin-[INFO]:-------------------------------------------------------
三、验证集群环境
(1)登录Greenplum集群
psql -d gpdb
(2)查询版本信息
gpdb=# select version();#输出的信息如下version
-----------------------------------------------------------------------PostgreSQL 9.4.26 (Greenplum Database 6.24.3) on x86_64-unknown-linux-gnucompiled by gcc (GCC) 6.4.0, 64-bit compiled on May 3 2023 20:34:57
(1 row)
(3)查询节点信息
gpdb=# select * from gp_segment_configuration;# 输出的信息如下:
......| port | hostname | address | datadir
------+-------+----------+---------+------------------------------
......| 5432 | node14 | node14 | /home/gpadmin/master/gpseg-1
......| 33000 | node11 | node11 | /home/gpadmin/data/gpseg0
......| 33000 | node12 | node12 | /home/gpadmin/data/gpseg1
......| 33000 | node13 | node13 | /home/gpadmin/data/gpseg2
(4 rows)