如何编译开源 Greenplum Database (GPDB) 代码
本帖最后由 大梦 于 2016-03-24 16:20 编辑本文以 RHEL7 为例介绍如何编译、安装和运行开源 GPDB。最新的代码(2015/12) 也可以在 RHEL6 上编译了。
1. 下载 Greenplum Database 源代码
$ git clone https://github.com/greenplum-db/gpdb
2. 安装依赖库
Greenplum Database 编译和运行依赖于各种系统库和Python库。需要先安装这些依赖。
$ sudo yum install curl-devel bzip2-devel python-devel openssl-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-good
一种安装python库的方法是:
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo pip install psi lockfile paramiko setuptools epydoc
另一种安装python库的方法是:
$ yum install -y python-setuptools
$ easy_install pip
$ pip install psi paramiko
3. 编译 Greenplum Database 源代码并安装
3.1 假定安装到 $HOME/gpdb.master 目录下
$ ./configure --prefix=/home/gpadmin/gpdb.master \
--with-gssapi --with-pgport=5432 \
--with-libedit-preferred --with-perl \
--with-python --with-openssl --with-pam \
--with-krb5 --with-ldap --with-libxml \
--enable-cassert --enable-debug \
--enable-testutils \
--enable-debugbreak \
--enable-depend
$ make
$ make install
3.2 编译GPDB扩展组件代码(以gpfdist为例)
缺省一些组件的代码不是自动编译的,下面以gpfdist为例解释一下怎么编译GPDB的组件
$ cd $HOME/gpdb.master/gpAux/extensions/gpfdist
$ sudo yum install apr-devel libyaml-devel libevent-devel
$ ./configure --enable-transformations --prefix=$HOME/gpdb.master
$ make
$ make install
4. 初始化 Greenplum Database 集群
安装了二进制文件后,需要初始化数据库集群。下面在一台笔记本上安装一个GPDB的集群。集群包括一个master,两个segments。
# source一些环境变量, 例如PATH
$ source $HOME/gpdb.master/greenplum_path.sh
# 交换集群中所有机器的ssh密钥, 我们这里只有一台机器
$ gpssh-exkeys -h `hostname`
4.1 生成三个配置文件
$ cat env.sh
source $HOME/gpdb.master/greenplum_path.sh
export PGPORT=5432
export MASTER_DATA_DIRECTORY=$HOME/data/master/gpseg-1
# 集群中所有机器的hostname, 我们这里只有一台
$ cat hostfile
<your_hostname>
$ cat gpinitsystem_config
ARRAY_NAME="Open Source GPDB"
SEG_PREFIX=gpseg
PORT_BASE=40000
# 根据需要,修改下面的路径和主机名
# 有几个DATA_DIRECTORY, 每个节点上便会启动几个segments
declare -a DATA_DIRECTORY=(/path/to/your/data /path/to/your/data)
# master的主机名, 路径和端口
MASTER_HOSTNAME=your_hostname
MASTER_DIRECTORY=/path/to/your/data/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MACHINE_LIST_FILE=hostfile
4.2 初始化 GPDB cluster
$ source env.sh
# 多台机器的话可以指定hostfile, gpinitsystem命令会自动进行安装初始化工作
$ gpinitsystem -c gpinitsystem_config -a
初始化成功后,运行以下命令验证系统状态:
$ psql -l
$ gpstate
5. 简单测试
$ createdb test
$ psql test
test# CREATE TABLE t1 AS SELECT * FROM generate_series(1, 1000);
test# SELECT gp_segment_id, count(1) FROM t1 GROUP BY gp_segment_id
gp_segment_id|count
---------------+---------
0 |501
1 |499
6. 可能问题
如果你的系统上已经安装了 PostgreSQL,有可能会有冲突。还没来得及看问题原因 ** 这个问题已经解决,GPDB 默认安装路径为 /usr/local/gpsql, 或者可以自定义安装路径,不和 pg 安装目录冲突既可。
GPDB github 主页上有怎么样初始化 demo cluster 的步骤,不过这个步骤假定安装 3 个primary,3 个mirror,一般笔记本上吃不消。 如果机器够强大,使用 demo cluster 更简单些。
如果有什么问题,欢迎使用 GPDB 的邮件列表报告bug: greenplum.org
本网站仅是临时GPDB中文网站,请以 greenplum.org 信息为准。
页:
[1]