Greenplum是一款MPP型数据库,对于数据集市而言比较合适。 

个人觉得GP目前比较尴尬。性能比Presto稍差点,唯品会已经把GP改用Presto替换看了。另外数仓/数据集市方面还有性能强悍的HAWQ ,支持更大数据规模Hadoop。


MPP数据库扩展时,一般情况下是计算节点和数据节点一起增加的,在增加节点后,需要对数据做重分布才能保证数据与节点的紧耦合(重新hash数据),进而保证系统的性能;Hadoop在增加存储层节点后,虽然也需要Rebalance数据,但相较MPP而言,不是那么紧迫。


因此,作为一个非大数据的DBA,我这里只是对GP的大致了解下,没有过多深入。



GP的结构

1.png2.png3.png



GP的安装部署

CentOS下建议使用XFS文件系统。


IP地址

主机名

角色

192.168.2.11

dw-greenplum-1     mdw

Master

192.168.2.12

dw-greenplum-2     sdw1

Primary1

Primary2

Mirror5

Mirror6

192.168.2.13

dw-greenplum-3     sdw2

Primary3

Primary4

Mirror1

Mirror2

192.168.2.14

dw-greenplum-4     sdw3

Primary5

Primary6

Mirror3

Mirror4

Standby


1、分别到各个节点上设置主机名

hostnamectl set-hostname dw-greenplum-1

hostnamectl set-hostname dw-greenplum-2

hostnamectl set-hostname dw-greenplum-3

hostnamectl set-hostname dw-greenplum-4


每台机器修改内核参数

echo '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.ip_forward = 0

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 = 1025 65535

net.core.netdev_max_backlog = 10000

net.core.rmem_max = 2097152

net.core.wmem_max = 2097152

vm.overcommit_memory = 2' >> /etc/sysctl.conf

 

sysctl -p     # 让参数生效

 

每台机器修改文件打开数等限制

echo '* soft nofile 65536

* hard nofile 65536

* soft nproc 131072

* hard nproc 131072' >> /etc/security/limits.conf

 

2、需要配置hosts解析

cat /etc/hosts  增加下面4

192.168.2.11  dw-greenplum-1 mdw

192.168.2.12  dw-greenplum-2 sdw1

192.168.2.13  dw-greenplum-3 sdw2

192.168.2.14  dw-greenplum-4 sdw3

 

3、创建用户和用户组

groupdel gpadmin

userdel pgadmin

groupadd -g 530 gpadmin

useradd -g 530 -u 530 -m -d /home/pgadmin -s /bin/bash gpadmin

 

4、为文件夹赋权,为新用户创建密码

chown -R gpadmin.gpadmin /home/gpadmin

echo '123456' | passwd --stdin gpadmin


5、安装gp二进制包 【这个操作只在mdw节点上执行安装gp二进制包,然后其它节点可以通过scp拷贝安装包的方式部署】

先创建相关的目录并授权

mkdir /opt/greenplum

chown -R  gpadmin.gpadmin /opt/greenplum/

 

unzip greenplum-db-5.16.0-rhel7-x86_64.zip

./greenplum-db-5.16.0-rhel7-x86_64.bin

4.png


配置 hostlist seg_hosts文件

su - gpadmin

echo  'source /opt/greenplum/greenplum-db/greenplum_path.sh'  >>  .bash_profile

 

source .bash_profile   # 使环境变量生效

 

 

mkdir conf && cd conf

 

cat hostlist  内容如下:

mdw

sdw1

sdw2

sdw3

 

cat seg_hosts   内容如下:

sdw1

sdw2

sdw3


然后,使用 gpssh-exkeys 打通全部的服务器

5.png

### 这里的密码是 123456


打通机器通道之后,我们就可以使用 gpssh 命令对所有机器进行批量操作了。

6.png


将软件分发到每一台机器上:

cd /opt/greenplum

tar -cf  gp-5.16.0.tar greenplum-db-5.16.0

chown gpadmin.gpadmin gp-5.16.0.tar

su - gpadmin

cd /opt/greenplum

gpscp -f /home/gpadmin/conf/hostlist  gp-5.16.0.tar =:/opt/greenplum

 

然后 ,可以使用pgssh 批量解压文件包

gpssh -f hostlist

cd /opt/greenplum

tar -xf gp-5.16.0.tar

ln -s greenplum-db-5.16.0 greenplum-db


下面,开始创建数据库数据目录:

su - gpadmin

 

MASTERStandby目录:

mkdir /home/gpadmin/gpdata/gpmaster -pv

 

Primary节点目录:

mkdir /home/gpadmin/gpdata/gpdatap1 -pv

mkdir /home/gpadmin/gpdata/gpdatap2 -pv

 

Mirror节点目录:

mkdir /home/gpadmin/gpdata/gpdatam1 -pv

mkdir /home/gpadmin/gpdata/gpdatam2 -pv

GPMaster 目录保存Master的数据,每个机器上的 gpdatap1gpdatap2 分别对应每个机器上的两个主数据节点目录, 同样的,gpdatam1gpdatam2 对应备数据节点目录。


配置 .bash_profile, 在mdw节点执行:

su - gpadmin

 

echo 'export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1

export PGPORT=5432

export PGDATABASE=testDB' >>  /home/gpadmin/.bash_profile

 

source  /home/gpadmin/.bash_profile


初始化GP的配置文件

su - gpadmin

 

cd $GPHOME/docs/cli_help/gpconfigs

cp gpinitsystem_config  /home/gpadmin/conf/   # gpinitsystem_config这是个模板文件,用来做参照用

 

 

vim initgp_config  编写一个初始化用的配置文件,如下:

ARRAY_NAME="Greenplum"

SEG_PREFIX=gpseg

PORT_BASE=33000

declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1 /home/gpadmin/gpdata/gpdatap2)

MASTER_HOSTNAME=mdw

MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster

MASTER_PORT=5432

TRUSTED_SHELL=/usr/bin/ssh

CHECK_POINT_SEGMENTS=8

ENCODING=UNICODE

MIRROR_PORT_BASE=43000

REPLICATION_PORT_BASE=34000

MIRROR_REPLICATION_PORT_BASE=44000

declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)

MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts


使用pginitsystem命令来初始化数据库

gpinitsystem -c initgp_config -h seg_hosts -s sdw3

参数说明:

gpinitsystem -c <gpinitsystem_config>

            [-h <hostfile_gpinitsystem>]

            [-B <parallel_processes>]

            [-p <postgresql_conf_param_file>]

            [-s <standby_master_host>

                [-P <standby_master_port>] [-F <standby_master_filespaces>]]

            [--max_connections=<number>] [--shared_buffers=<size>]

            [--locale=<locale>] [--lc-collate=<locale>]

            [--lc-ctype=<locale>] [--lc-messages=<locale>]

            [--lc-monetary=<locale>] [--lc-numeric=<locale>]

            [--lc-time=<locale>] [--su_password=<password>]

            [-S] [-a] [-q] [-l <logfile_directory>] [-D]


上面的命令执行成功后,类似如下图:

7.png

可以在 mdw上登录到gp查看下情况:

8.png

可以看出,PG5.16.0 是基于 PG8.3构建的。



安装GPCC web界面

官方文档:http://gpcc.docs.pivotal.io/450/topics/setup-install-top.html

 

dw-greenplum-1 节点上执行如下操作:

1 先安装监控库和创建账号

su - gpadmin

gpperfmon_install --enable --password gpmon --port 5432    # 安装gpperfmon数据库,以及为gpmon用户创建密码,端口是greenplum配置的端口

gpstop -M fast -a

gpstart -a

ps -ef | grep gpmmon

psql -d 'gpperfmon' -c 'select * from system_now'  检查是否安装了gperfmon

 

拷贝 dw-greenplum-1 master节点的pg_hba.conf 文件的如下内容到standby节点的pg_hba.conf 中,确保二者一致的。

local    gpperfmon   gpmon         md5

host     all         gpmon         127.0.0.1/28    md5

host     all         gpmon         ::1/128         md5

 

拷贝 dw-greenplum-1 master节点的.pgpass standby节点:

scp /home/gpadmin/.pgpass  gpadmin@sdw3:~/.pgpass

sdw3这个standby上设置下pgpass的权限:chmod /home/gpadmin/.pgpass

 

 

dw-greenplum-1 上执行下 gpstop -u   # 重载下配置文件

 


2安装greenplum-cc-web程序

su - gpadmin

cd conf/

gpssh -f hostlist

=> cd /opt/greenplum/

=> mkdir /opt/greenplum/greenplum-cc-web-4.5.1

=> chown gpadmin:gpadmin /opt/greenplum/greenplum-cc-web-4.5.1

=> exit   退出gpssh控制台

 

 

su - gpadmin

unzip greenplum-cc-web-4.5.1-LINUX-x86_64.zip

cd  greenplum-cc-web-4.5.1-LINUX-x86_64

./gpccinstall-4.5.1

9.png


然后,添加下环境变量

echo 'source  /opt/greenplum/greenplum-cc-web-4.5.1/greenplum-cc-web-4.5.1/gpcc_path.sh' >> /home/gpadmin/.bash_profile

 

上面的安装执行完成后,还需要配置下pg_hba文件:

vim /home/gpadmin/gpdata/gpmaster/gpseg-1/pg_hba.conf

#在最后一行添加这句

host     all         gpmon         192.168.2.0/24     md5

 

gpstop -u  然后重载配置文件(实际上这里只需要重载下master节点的配置文件)

 

gpcc start

 

访问 http://192.168.2.11:28080   账号密码 都是 gpmon  效果如下图:

10.png

其它几个常用的命令:

gpcc stop

gpcc status

gpcc --settings