了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站
本⽂先介绍如何从源代码编译安装Greenplum、初始化Greenplum集群。然后介绍SQL在Greenplum中的典型执⾏路径,最后介绍⼀些调试技巧。
源 代 码 使 ⽤ Greenplum 开 源 社 区 最 新 源 代 码 6X_STABLE 分 ⽀ :https://github.com/greenplum-db/gpdb, 内核代码基于 PostgreSQL9.4。⽬前(2019/04/23) 主⼲分⽀的代码基于 PostgreSQL 9.4 。合并到 PostgreSQL 9.5 的⼯作也已经开始, 有关最新⼯作进展请参⻅:https://github.com/greenplum-db/gpdb-postgres-merge。
1 从源代码编译 Greenplum
Greenplum ⽬前官⽅⽀持 Redhat/Centos/SuSE/Ubuntu 等Linux系统。⼤量开发⼈员包括我⾃⼰使⽤Mac系统,但是不在官⽅⽀持列表中。
1.1 在 Mac系统上编译
⾸先需要关闭苹果操作系统的 SIP 特性,否则⽆法初始化集群。
-
重启操作系统
-
重启过程中按下 command+R进⼊恢复模式
-
从 Utilities菜单选择 Terminal
-
执 ⾏ csrutildisable
-
重启操作系统
其次,安装Greenplum管理脚本依赖的 Python 包
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo pip install psutil lockfile paramiko setuptools epydoc
然后,需要安装 openssl,否则⽆法编译
$ brew install zstd openssl && brew link openssl --force
$ CPPFLAGS="-I/usr/local/include/ -I/usr/local/opt/openssl/include" \
LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" \
CFLAGS="-O0 -g3 -ggdb3" \
./configure --with-perl --with-python --with-libxml \
--enable-debug --enable-cassert --disable-orca --disable-gpcloud \
--disable-gpfdist --prefix=$HOME/gpdb.master
$ make [-j4]
$ make install
最后,在苹果系统上初始化Greenplum单节点集群时,需要做些准备⼯作:
-
添加export PGHOST=localhost⾄~/.bash_profile
-
将本机的hostname与127.0.0.1的map写到/etc/hosts中。例如
127.0.0.1 yydzero yydzero.local
- 修改/etc/sysctl.conf⽂件,并重启:
kern.sysv.shmmax=2147483648
kern.sysv.shmmin=1
kern.sysv.shmmni=64
kern.sysv.shmseg=16
kern.sysv.shmall=524288
kern.maxfiles=65535
kern.maxfilesperproc=65535
net.inet.tcp.msl=60
$ cd gpAux/gpdemo
$ source $HOME/gpdb.master/greenplum_path.sh
$ export PGHOST=`hostname`
$ make
$ source gpdemo-env.sh
$ psql postgres
postgres# SELECT version()
有关更详细的信息请参考 README.macOS.md。
1.2 在 Redhat/Centos系统上编译
本⼩节以 RHEL7 为例介绍如何编译Greenplum。
⾸先,下载 Greenplum 源代码
$ git clone https://github.com/greenplum-db/gpdb
其次,Greenplum Database 编译和运⾏依赖于各种系统库和Python库。需要先安装这些依赖:
$ sudo yum groupinstall 'Development Tools' # GCC, libtools etc
$ sudo yum install curl-devel bzip2-devel python-devel openssl-devel readline-devel libzstd-devel
$ sudo yum install perl-ExtUtils-Embed # If enable perl
$ sudo yum install libxml2-devel # If enable XML support
$ sudo yum install openldap-devel # If enable LDAP
$ sudo yum install pam pam-devel # If enable PAM
$ sudo yum install perl-devel # If need installcheck-world
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo pip install psutil lockfile paramiko setuptools epydoc
再次,编译 Greenplum Database 源代码,假定安装到 $HOME/gpdb.master ⽬录下
$ CFLAGS="-O0 -g3 -ggdb3" \
./configure --with-perl --with-python --with-libxml --enable-debug --enable-cassert \
--disable-