Greenplum是一款MPP型数据库,对于数据集市而言比较合适。
个人觉得GP目前比较尴尬。性能比Presto稍差点,唯品会已经把GP改用Presto替换看了。另外数仓/数据集市方面还有性能强悍的HAWQ ,支持更大数据规模Hadoop。
MPP数据库扩展时,一般情况下是计算节点和数据节点一起增加的,在增加节点后,需要对数据做重分布才能保证数据与节点的紧耦合(重新hash数据),进而保证系统的性能;Hadoop在增加存储层节点后,虽然也需要Rebalance数据,但相较MPP而言,不是那么紧迫。
因此,作为一个非大数据的DBA,我这里只是对GP的大致了解下,没有过多深入。
GP的结构
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
配置 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 打通全部的服务器
### 这里的密码是 123456
打通机器通道之后,我们就可以使用 gpssh 命令对所有机器进行批量操作了。
将软件分发到每一台机器上:
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
MASTER、Standby目录:
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的数据,每个机器上的 gpdatap1、gpdatap2 分别对应每个机器上的两个主数据节点目录, 同样的,gpdatam1、gpdatam2 对应备数据节点目录。
配置 .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
[-h
[-B
[-p
[-s
[-P
[--max_connections=
[--locale=
[--lc-ctype=
[--lc-monetary=
[--lc-time=
[-S] [-a] [-q] [-l
上面的命令执行成功后,类似如下图:
可以在 mdw上登录到gp查看下情况:
可以看出,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
然后,添加下环境变量
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 效果如下图:
其它几个常用的命令:
gpcc stop
gpcc status
gpcc --settings