2.1、下载greenplum源码
2.2、解压
2.3、安装必备的工具
2.4、配置ld.so.conf
2.5、创建gpadmin用户和配置ssh
2.6、修改内核参数
2.7、编译GPORCA
2.8 安装greenplum
三、错误处理
四、参考资料
五、其他
一、编译环境 二、编译过程 2.1、下载greenplum源码可从该位置下载需要的版本:https://github.com/greenplum-db/gpdb/releases/(此处使用5.3.0)
2.2、解压下载后再centos中解压到指定目录,如/home/gpdb_src
2.3、安装必备的工具psutil
lockfile (>= 0.9.1)
paramiko
setuptools
conan
注意,以上工具使用pip(>=7.x.x)安装,如果没有pip,可以参考https://pip.pypa.io/en/stable/installing/步骤进行安装。
如果pip版本太低,可使用如下命令升级:
pip install --upgrade
2.4、配置ld.so.conf由于我们使用的是CentOS系统, 所以一定要加上/usr/local/lib和/usr/local/lib64的路径到/etc/ld.so.conf文件中,这一步尤为重要,目的是将常用的动态函数库加载到内存中,可以提高函数库的访问效率。另外,如果不配置这一步,在后面编译的过程中会遇到一些奇奇怪怪的缺少引用的错误
修改后的文件内容类似如下:
include ld.so.conf.d/*.conf /usr/local/lib /usr/local/lib64
修改完成后保存,之后运行ldconfig命令
2.5、创建gpadmin用户和配置ssh这一步可以使用源码中自带的脚本完成,脚本位置如下:/home/gpdb_src/concourse/scripts/setup_gpadmin_user.bash,执行如下命令:
cd /home bash ./gpdb_src/concourse/scripts/setup_gpadmin_user.bash
这里说明下,这一步如果使用脚本操作,一定要把源码文件放到gpdb_src中,执行脚本时需要进入到与gpdb_src同级的目录执行,如果要手动配置也是可以的。具体的操作也不复杂,有兴趣的朋友可以读下setup_gpadmin_user.bash脚本。
执行完成后,进行如下两步操作验证:
su - gpadmin ssh <当前主机名称>
如果切换账户正常并且ssh正常,不需要输入密码,这说明这一步成功
2.6、修改内核参数cat >> /etc/sysctl.conf <<-EOF 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 EOF cat >> /etc/security/limits.conf <<-EOF * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 EOF cat >> /etc/ld.so.conf <<-EOF /usr/local/lib EOF
这一步很重要,否则在后期使用greenplum的时候会遇到问题,详细的问题后面会解析。
2.7、编译GPORCA这里提一下,如果不需要优化器这一步也可以跳过。毕竟greenplum在不安装orca的情况下使用的是legacy优化器。
GPORCA是postgresql新一代的优化器,在性能上有很大提升,至于为什么要有两个优化器,其实是有历史原因的,早期legacy是针对单节点PostgreSQL而构建的,主要应用于OLTP场景,现在的greenplum使用MPP,主要应用场景变为OLAP场景,legacy对此虽然进行了修改,但是从架构设计上,使得其维护和添加新的功能越来越困难,所以有了GPORCA优化器。
虽然greenplum提供了直接安装的方式,但是本人一直没有安装成功。很简单,就是执行如下命令:
cd /home/gpdb_src/depends
./configure
make
make install_local
本人遇到的错误是:
Unable to connect to gpdb-oss=https://api.bintray.com/conan/greenplum-db/gpdb-oss ERROR: All remotes failed
如果有知道怎么解决的朋友还请告诉我。
下面提供手动编译的方法。特别注意,安装前一定要确认当前的版本是否和greenplum版本相匹配,如果不匹配将无法编译greenplum,详情参见问题6
首先,编译gporca前需要安装如下必备工具:
CMake(>=3.1)
gp-xerces
re2c(>= 0.11.3)
2.7.1 下载安装cmake进入https://cmake.org/download/页面下载自己需要的版本
2.7.2 下载安装gp-xerces可以使用git下载:https://github.com/greenplum-db/gp-xerces.git
2.7.3 下载安装re2c进入页面下载自己需要的版本
安装re3c是由于配置ninja时需要
2.7.4 下载安装Ninja可以使用git下载:https://github.com/ninja-build/ninja.git
下载后进入ninja目录执行如下命令:
./configure.py --bootstrap
2.7.5 下载安装gporca可以使用git下载:https://github.com/greenplum-db/gporca.git
解压后进入目录执行如下命令安装:
cmake -GNinja -H. -Bbuild ninja install -C build
待安装完成后,进入/gporca/build目录,执行ctest命令进行检查
如果最后输出类似如下结果:
100% tests passed, 0 tests failed out of 119 Total Test time (real) = 195.48 sec
这说明编译成功了。
2.8 安装greenplum执行如下命令: