技术博文 · 2021-08-31 0

Centos7 源码编译gp6.17.2

1 从源代码编译 Greenplum

Greenplum ⽬前官⽅⽀持 Redhat/Centos/SuSE/Ubuntu 等Linux系统。

⾸先,下载 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
$ sudo yum install gcc libffi-devel python-devel openssl-devel
$ wget https://bootstrap.pypa.io/get-pip.py  #如果python是2.7的下载2.7的版本即可wget  https://bootstrap.pypa.io/pip/2.7/get-pip.py
$ sudo python get-pip.py
$ sudo pip install psutil lockfile paramiko setuptools epydoc

再次,编译 Greenplum Database 源代码,假定安装到 $HOME/gpdb.master ⽬录下(首先添加gpadmin用户)

# useradd gpadmin
$ CFLAGS="-O0 -g3 -ggdb3"  ./configure     --with-perl --with-python --with-libxml --enable-debug --enable-cassert --disable-orca --disable-gpcloud --disable-gpfdist --prefix=/home/gpadmin/gpdb.master
$ make
$ make install

2、配置单机模式

下⾯介绍如何⼿⼯部署⼀个单机集群:在⼀台笔记本上安装⼀个Greenplum的集群,包括⼀个master,一个segments。

  • 系统环境配置

    $ /etc/sysctl.conf
    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.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 = 10000 65535
    net.core.netdev_max_backlog = 10000
    net.core.rmem_max = 2097152
    net.core.wmem_max = 2097152
    vm.overcommit_memory = 2
    $ cat /etc/security/limits.conf
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 131072
    * hard nproc 131072
    $ sysctl -p
  • source⼀些环境变量, 例如PATH

    $ source $HOME/gpdb.master/greenplum_path.sh
  • 配置hosts解析

    vim /etc/hosts
    
    192.168.0.254 pg6.17.2
  • 交换集群中所有机器的ssh密钥, 我们这⾥只有⼀台机器

    $ gpssh-exkeys -h hostname
  • 切换到gpadmin账户下,在家目录下建立master和segment的数据存放目录。你也可以自行设定数据存放目录,如果你不是以gpadmin建立的目录,还需要修改目录的用户和用户组,最好是建在家目录下。

    su - gpadmin
    mkdir -p /home/gpadmin/masterdata
    mkdir -p /home/gpadmin/segmentdata
    mkdir -p /home/gpadmin/segmentmirror
  • ⽣成三个配置⽂件:env.sh, hostfile, gpinitsystem_config

    [gpadmin@swq-cloudm-deploy ~]$ ls
    env.sh  gpAdminLogs  gpdb-6.17.2  gpdb.master  gpinitsystem_config  hostfile  masterdata              segmentdata  segmentmirror
    [gpadmin@swq-cloudm-deploy ~]$ pwd
    /home/gpadmin
    [gpadmin@swq-cloudm-deploy ~]$ cat env.sh 
    source $HOME/gpdb.master/greenplum_path.sh
    export PGPORT=5432
    export MASTER_DATA_DIRECTORY=$HOME/masterdata/gpseg-1
    $ cat hostfile
    gp6.17.2              #
    [gpadmin@swq-cloudm-deploy ~]$ cat gpinitsystem_config 
    ARRAY_NAME="Open Source Greenplum"
    SEG_PREFIX=gpseg
    PORT_BASE=40000
    declare -a DATA_DIRECTORY=(/home/gpadmin/segmentdata)
    MASTER_HOSTNAME=swq-cloudm-deploy
    MASTER_DIRECTORY=/home/gpadmin/masterdata
    MASTER_PORT=5432
    
    TRUSTED_SHELL=ssh
    CHECK_POINT_SEGMENTS=8
    ENCODING=UNICODE
    MACHINE_LIST_FILE=hostfile
    
    MIRROR_PORT_BASE=43000
    REPLICATION_PORT_BASE=34000
    MIRROR_REPLICATION_PORT_BASE=44000
    declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/segmentmirror)

    有⼏个DATA_DIRECTORY, 每个节点上便会启动⼏个segments

  • 初始化Greenplum 集群

    $ source env.sh
    $ gpinitsystem -c gpinitsystem_config -a

    执行完上面这步,会有各种报错,其他的报错你看看日志里的错误提示就能解决,中途需要你给他个“y",成功后应该在显示的信息里看到两个success的提示,然后用gpstop命令试一试,提示如下信息表示安装成功(中途要给个"y"):

    image-20210825173202310

  • 初始化成功后,运⾏下⾯命令验证系统状态

    $ psql -l
    $ gpstate

参考文档:

Greenplum源码编译安装(单机及集群模式)完全攻略
Greenplum 编译、安装、调试