Step.1 为yum添加国内镜像源

下载阿里镜像源

$ cd /etc/yum.repos.d
$ sudo wget -nc http://mirrors.aliyun.com/repo/Centos-7.repo

将阿里镜像源设为默认源

$ sudo mv CentOS-Base.repo CentOS-Base.repo.bak
$ sudo cp Centos-7.repo CentOS-Base.repo

清除yum机制的本地缓存

$ sudo yum clean all
$ sudo yum makecache
$ sudo yum list
$ sudo yum -y update

Step.2 使用yum安装依赖的系统库

$ sudo yum install curl-devel bzip2-devel python-devel openssl-devel

Step.3 使用pip安装以来的Python库

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo pip install psi lockfile paramiko setuptools epydoc conan

Step.4 安装并使用gcc6.3作为编译器

自带的gcc4.8.5编译会报语法错误,所以安装更高版本的编译器

$ sudo yum install centos-release-scl -y
$ sudo yum install devtoolset-6-gcc devtoolset-6-gcc-c++
$ scl enable devtoolset-6 bash
$ gcc --version

Step.5 添加LIB库路径

向/etc/ld.so.conf文件中加入下面的路径
/usr/local/lib
/usr/local/lib64
$ sudo ldconfig


Greenplum缺省使用的是legacy优化器。使用此优化器参考Step6。

GPORCA是postgresql新一代的优化器,在性能上有很大提升。早期legacy是针对单节点PostgreSQL而构建的,主要应用于OLTP场景,现在的greenplum使用MPP,主要应用场景变为OLAP场景,legacy对此虽然进行了修改,但是从架构设计上,使得其维护和添加新的功能越来越困难,所以有了GPORCA优化器。使用此优化器参考Step7 - Step11。


Step.6 使用缺省的legacy优化器编译GPDB

编译GPDB源码,安装到 /home/smart/gpdb_legacy.530 目录下
从github上下载GreenPlum最新版5.3.0的源码:
https://github.com/greenplum-db/gpdb/archive/5.3.0.tar.gz

$ cd ~/gpdb-5.3.0/
$ ./configure --with-openssl --with-python --enable-debug --enable-depend --with-perl  --with-libxml --with-gssapi  --disable-orca --prefix=/home/smart/gpdb_legacy.530
$ make
$ make install

注意:make的过程中可能会报错缺少bison、flex,用yum添加即可,添加完后需要重新configure再make。

Step.7 安装cmake3.3.2

GPORCA需要Cmake3.1以上才能编译

$ wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz
$ tar xzvf cmake-3.3.2.tar.gz
$ cd cmake-3.3.2
$ ./bootstrap
$ make
$ sudo make install

Setp.8 下载并安装gp-xerces

$ cd ~
$ mkdir orca
$ cd orca
$ git clone https://github.com/greenplum-db/gp-xerces.git
$ cd gp-xerces
$ ./configure
$ make
$ sudo make install

Setp.9 下载并安装re2c

进入http://re2c.org/install/install.html下载re2c-1.0.3.tar.gz,拷贝到~/orca

$ tar -xvzf re2c-1.0.3.tar.gz
$ cd re2c-1.0.3
$ ./configure
$ make
$ sudo make install

Setp.10 下载并安装ninja

$ cd ~/orca
$ git clone https://github.com/ninja-build/ninja.git
$ cd ninja
$ ./configure.py --bootstrap

Setp.10 下载并安装GPORCA

下载https://github.com/greenplum-db/gporca/archive/v2.51.4.tar.gz

$ cd ~/orca
$ tar -xvzf v2.51.4.tar.gz
$ cd gporca-2.51.4
$ export PATH=~/orca/ninja:$PATH
$ cmake -GNinja -H. -Bbuild
$ sudo ninja install -C build
$ cd build执行ctest命令进行检查

如果最后输出类似如下结果:
100% tests passed, 0 tests failed out of 119
Total Test time (real) = 165.21 sec
表示成功。注意gpdb5.3.0支持的gporca版本是2.51.XXX,所以不要下载更新版本的GPORCA(例如2.53.XXX)

Setp.11 使用缺省的gporca优化器编译GPDB

编译GPDB源码,安装到 /home/smart/gpdb_gporca.530 目录下
从github上下载GreenPlum最新版5.3.0的源码:
https://github.com/greenplum-db/gpdb/archive/5.3.0.tar.gz

$ cd ~/gpdb-5.3.0/
$ ./configure --with-openssl --with-python --enable-debug --enable-depend --with-perl  --with-libxml --with-gssapi --prefix=/home/smart/gpdb_gporca.530
$ make
$ make install

注意:make的过程中可能会报错缺少bison、flex,用yum添加即可,添加完后需要重新configure再make。

完工!

[参考文献]
《在centos7中手动编译greenplum》
《How to build GPDB on RHEL 7》

在CentOS7上编译GreenPlum5.3.0相关推荐

  1. 在win10和centos7上编译synergy

    在win10和centos7上编译synergy Synergy功能简介 同一局域网中多台机器共享一套键盘鼠标,支持Windows.Linux.MAC设备,鼠标键盘物理连接的机器做服务器端,其他机器做 ...

  2. 如何在CentOS7上编译WELD

    如何在CentOS7上编译WELD 准备工作 安装RUST 安装LLVM 编译WELD 准备工作 在docker上用centos7镜像运行容器: docker pull 获取镜像: docker pu ...

  3. php-7.2.13的安装,Centos7.2编译安装php-7.0.13

    Centos7.2编译安装php-7.0.13 1- 安装依赖 yum install wget autoconf libjpeg libjpeg-devel libpng libpng-devel ...

  4. centos7下编译安装qemu5.0+spice-server最新版

    本人基于centos7环境编译安装qemu5.0+spice-server最新版的过程记录,希望对读者有些帮助: #安装gcc 7 sudo yum install centos-release-sc ...

  5. 在 ubuntu 上编译 qtopia-2.2.0问题

    在ubuntu上编译 x86-qtopia,会出现很多错误. 如果想查看完成log信息,请使用该命令进行编译:./build -all 2>&1 | tee  build.log 1.首 ...

  6. tfs 安装mysql.h_如何在centos5或centos7上编译安装tfs rcserver 模块?

    已在docker centos7上成功编译rcserver模块,具体步骤如下: docker run -ti tfs:latest /bin/bash 1.进入到rcserver模块目录 cd /mn ...

  7. 在CentOS7.x版本上搭建Greenplum5.1.0数据库详细步骤讲解

    Greenplum是一个关系型数据库集群,它是由数个独立的数据库服务组成的逻辑数据库.Greenplum使用的是Shared-Nothing架构,这个就能由很多歌数据节点(segment)和控制管理节 ...

  8. CentOS7上编译多版本PHP并同时运行及systemd设置

    为什么80%的码农都做不了架构师?>>>    CentOS7最大改变是systemd代替过去的systemV服务,于是配置服务的方式改变了,用systemctl替代过去的servi ...

  9. 海思3559A上编译OpenCV4.1.0源码操作步骤

    1. 从https://github.com/opencv/opencv/releases 下载opencv源码opencv-4.1.0.zip并解压缩: 2. 修改最顶层的CMakeLists.tx ...

最新文章

  1. App小样在手机运行了一下
  2. python编程面试题
  3. 设计 色彩 构图 创意_我们可以从时尚的创意方向中学到色彩
  4. PCB设计--PCB画图技巧
  5. 疫情后全国热门博物馆榜单出炉 第一名竟不是故宫
  6. 狗狗手机壁纸|爱宠必备
  7. 武汉工程大学计算机网络真题,2017年武汉工程大学计算机科学与工程学院836计算机网络考研导师圈点必考题汇编...
  8. IOS开发之多线程 -- GCD的方方面面
  9. 音乐在线播放Demo
  10. php按钮打开文件选择框,在Select file(选择)页面单击Select file(选择文件)按钮
  11. 拨码开关控制数码管的数字显示_VHDL编程
  12. UVa1592 数据库(摘)
  13. SQL Server性能常用语句
  14. 纯js实现下载功能【附上js代码】
  15. cl.exe nmake.exe
  16. 【数学建模】数据包络分析法
  17. 生信高性能服务器,【玩转腾讯云】使用云服务器进行生信数据分析
  18. dbind-WARNING **: Error retrieving accessibility bus address
  19. MySQL比较两张表数据相同、不同结果记录
  20. 什么样的投影仪好?哪款家用投影仪又好又便宜

热门文章

  1. Java抓取网页数据(原网页+Javascript返回数据)
  2. TCP负载均衡地址转换(锐捷设备)
  3. Redis数据库 安装
  4. 微信小程序 跳转界面
  5. 四月读书主题整理——用尽费退,打磨身体
  6. 两种高效的事件处理模式
  7. JVM内存GC的骗局——JVM不抛出OOM但内存已经泄露
  8. iOS - Quartz 2D 画板绘制
  9. ajax 载入html后不能执行其中的js解决方法
  10. 《机电传动控制》学习笔记10-1