首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【赵渝强老师】基于PostgreSQL的MPP集群:Greenplum

【赵渝强老师】基于PostgreSQL的MPP集群:Greenplum

原创
作者头像
赵渝强老师
发布2025-09-18 18:40:42
发布2025-09-18 18:40:42
2060
举报

Greenplum本质上是一个基于PostgreSQL的关系型数据库集群,实际上是由多个独立的数据库服务组合而成的一个逻辑数据库。与Oracle的RAC不同,这种数据库集群采取的是MPP(Massively Parallel Processing,大规模并行处理)架构。Greenplum最大的特点就是基于低成本的开放平台基础上提供强大的并行数据计算性能和海量数据管理能力。下图展示了Greenplum的体系架构。

视频讲解如下:

Greenplum的体系架构由三部分组成:Master Host、Segment Host、Interconnect,其中每个Segment Host相当于一个独立的PostgreSQL数据库实例。下表列举了每个组成部分的功能和作用。

在了解到了Greenplum的基本知识后,本小节将通过具体的操作步骤来演示如何安装和配置Greenplum集群。

一、以下步骤使用root用户在每台主机上执行

(1)禁用SELinux和防火墙

(2)编辑文件/etc/sysctl.conf修改内核配置参数,使用下面内容覆盖原有内容。

代码语言:powershell
复制
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)生效内核配置参数。

代码语言:powershell
复制
sysctl -p

(4)编辑文件/etc/security/limits.conf配置资源限制参数。

代码语言:powershell
复制
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

(5)编辑文件/etc/hosts配置主机名和IP地址的映射关系。

代码语言:powershell
复制
192.168.79.11 node11
192.168.79.12 node12
192.168.79.13 node13
192.168.79.14 node14

(6)创建用户和用户组

代码语言:powershell
复制
groupadd gpadmin
useradd -g gpadmin gpadmin
passwd gpadmin

(7)创建需要的目录,并授权给gpadmin。

代码语言:powershell
复制
mkdir -p /home/gpadmin/data       (可以只在Segment上创建)
mkdir -p /home/gpadmin/master     (可以只在Master上创建)
chown -R gpadmin:gpadmin /home/gpadmin

(8)编辑文件/etc/sudoers给gpadmin用户加上sudo权限。

代码语言:powershell
复制
gpadmin ALL=(ALL)       ALL

(9)重启服务器。

(10)安装Greenplum。

代码语言:powershell
复制
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。

代码语言:powershell
复制
chown -R gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*

(12)切换到gpadmin用户配置免密码登录

代码语言:powershell
复制
su - gpadmin
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub gpadmin@node11
....

二、以下步骤使用gpadmin用户在master主机上执行。

(13)在gpadmin用户主目录创建名为all_host的文件,内容为所有Greenplum主机名

代码语言:powershell
复制
node11
node12
node13
node14

(14)在gpadmin用户主目录创建名为seg_host的文件,内容为所有segment主机名

代码语言:powershell
复制
node11
node12
node13

(15)设置Greenplum环境。

代码语言:powershell
复制
source /usr/local/greenplum-db-6.24.3/greenplum_path.sh

(16)确认软件安装

代码语言:powershell
复制
gpssh -f all_host -e 'ls -l /usr/local/greenplum-db-6.24.3/'

# 如果Greenplum安装成功,应该能够在没有密码提示的情况下登录到所有主机。

(17)验证主机环境(这里需要等待一段时间)

代码语言:powershell
复制
检查点对点网络传输速度
	
# 双向同时发包,适合偶数个网口的情况
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,输入下面的内容:

代码语言:powershell
复制
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)初始化数据库。

代码语言:powershell
复制
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 4

Continue with Greenplum creation Yy|Nn (default=N):
> y  这里输入y

(20)数据库初始化完成后会自动启动数据库集群,并输出下面的信息:

代码语言:powershell
复制
gpinitsystem:node14:gpadmin-[WARN]:-*******************************************************
gpinitsystem:node14:gpadmin-[INFO]:-Greenplum Database instance successfully created
gpinitsystem:node14:gpadmin-[INFO]:-------------------------------------------------------

三、验证集群环境

(1)登录Greenplum集群

代码语言:powershell
复制
psql -d gpdb

(2)查询版本信息

代码语言:powershell
复制
gpdb=# select version();

#输出的信息如下
          version                   
-----------------------------------------------------------------------
 PostgreSQL 9.4.26 (Greenplum Database 6.24.3) on x86_64-unknown-linux-gnu
 compiled by gcc (GCC) 6.4.0, 64-bit compiled on May  3 2023 20:34:57
(1 row)

(3)查询节点信息

代码语言:powershell
复制
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)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、以下步骤使用root用户在每台主机上执行
  • 二、以下步骤使用gpadmin用户在master主机上执行。
  • 三、验证集群环境
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档