Greenplum on Linux

         网传的Greenplum安装教程多生搬硬套,很多不必要的东西也会列出来,导致环境的配置极其麻烦;官方的安装部署又显得太凌乱,100多页,让人难以消化。本文介绍了Greenplum分布式下的安装(Linux系统下:CentOS),教程精炼,是博主自己亲手搭建经历多次失败之后的总结,其中标注了多处细节,可大大提升安装者的安装成功率。

. Greenplum 支持的操作系统

SuSE Linux SLES 10 update

CentOS 5.0 or higher

RedHat Enterprise Linux 5.0 or higher

Solars X86 v10 update 7 or higher

Mac OS 10.5 or higher

本教程的系统是CentOS 6.6,除了Mac OS 的配置有所区别,其他的系统可以参照本文进行部属。

.调整参数

1编辑/etc/sysctl.conf,以下是最小配置(把没有的输进去,不一样的修改之)

            vim /etc/sysctl.conf

kernel.shmmax = 500000000kernel.shmmni = 4096kernel.shmall = 4000000000kernel.sem = 250 512000 100 2048kernel.sysrq = 1kernel.core_uses_pid = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.msgmni = 2048net.ipv4.tcp_syncookies = 1net.ipv4.ip_forward = 0net.ipv4.conf.default.accept_source_route = 0net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_max_syn_backlog = 4096net.ipv4.conf.all.arp_filter = 1net.ipv4.ip_local_port_range = 1025 65535net.core.netdev_max_backlog = 10000net.core.rmem_max = 2097152net.core.wmem_max = 2097152vm.overcommit_memory = 2

(2)修改文件打开数等限制

编辑/etc/security/limits.conf,添加一下几行(注意*也需要添加)* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072

(3)在正式安装之前关闭防火墙(包括从节点)

检测防火墙

    # /sbin/chkconfig --list iptables

关闭状态:iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

使用以下命令关闭

    /sbin/chkconfig iptables off

修改/etc/selinux/config文件

    SELINUX=disabled

出现以下情形则关闭成功(每太机器都要关闭)

4.编辑/boot/grub/grub.conf
新增elevator=deadline
[root@bigdata03 ~]# more /boot/grub/grub.conf
...elevator=deadlinecrashkernel=auto ...

三、Linux环境下的安装

在此,我用的是VMware虚拟机,一共三台,一个主节点(mdw)两个从节点(sdw1sdw2

1. 在主节点上安装greenplum

1)下载greenplum (没有特定centOS版本的,选择第一条即可)

2)新建greenplum用户

    在root用户下:

        useradd gpadmin

        passwd  yourpassword

3)将下载的gp解压并进行安装:

        unzip greenplum-db-*.*.*.*-build-1-RHEL5-x86_64.zip

    得到greenplum-db-*.*.*.*-build-1-RHEL5-x86_64.bin文件,将其拷贝到/usr/local文件夹下进行安装(因为官网默认在此目录安装,为了不至于后面配置参数之类的太麻烦,我们也在这个目录下安装)。

/bin/bash greenplum-db-*.*.*.*-build-1-RHEL5-x86_64.bin

执行以上命令进行安装,过程中可能要按照提示输入几次yes

4)修改Greenplum所有者

    # chown -R gpadmin /usr/local/greenplum-db

    # chgrp       -R gpadmin /usr/local/greenplum-db

    # chown -R gpadmin /usr/local/greenplum-db-*.*.*.*

    # chgrp -R gpadmin /usr/local/greenplum-db-*.*.*.*

5)配置环境变量:

    其环境变量在/usr/local/greenplum-db/greenplum_path.sh文件中也有,可以参考

    打开/etc/profile对环境变量修改:

        vim /etc/profile

    添加以下文件:

        GPHOME=/usr/local/greenplum-db-4.3.6.2

        PATH=$GPHOME/bin:$GPHOME/ext/python/bin:$PATH

        export GPHOME

        export PATH

6)设置Master主机上的数据目录,指定数据存放位置,空间要足够。

        # mkdir /gpmaster

        # chown -R gpadmin /gpmaster

        # chgrp -R gpadmin /gpmaster

切记,在设置这个文件夹后需要修改gpadmin的环境变量,否则初始化GP的时候会找不到master的存储文件夹

gpadmin用户下:

        vim ~/.bashrc

在末尾添加:

        MASTER_DATA_DIRECTORY=/gpmaster

        export MASTER_DATA_DIRECTORY

之后记得     source ~/.bashrc

2. 在各个区段服务器上安装GP

可以在每台机器上采用和主机master一样的安装方法,这样的话机器一多了就很麻烦,在此就不介绍这种方法了,参照主节点的安装即可;我们直接通过master主机对每台segment安装GP

1)对每台主机修改主机名(这个步骤我是单独到每台机器上去修改的):

修改主机名要在两个地方做修改:

a. /etc/hosts文件下:

        vim /etc/hosts

将第一行:127.0.0.1  localhost localhost.localdomainlocalhost4 localhost4.localdomain4

改为:   127.0.0.1   localhost sdw1localhost4 localhost4.localdomain4

(这里的sdw1表示segment1节点,其他机器类似,这里主节点叫mdw

b.        修改 /etc/sysconfig/network

            vim /etc/sysconfig/network

然后修改成下图形式,退出后加上一行命令

hostname mdw

mdw是主节点的主机名,从节点是sdw1sdw2

2)在主节点中添加对应Segment服务器的IP与主机名

vim /etc/hosts

在末尾添加如下内容

主节点IP 主节点名

从节点IP 从节点名

从节点IP 从节点名

如图:

3)两个文件!!!

新建一个all_hosts文本和一个all_segs文本,编辑内容:

all_hosts

mdw

sdw1

sdw2

all_segs

sdw1

sdw2

也就是分别存储了所有节点和所有从节点的主机名(后面会经常用的)。

4)登陆gpadmin用户

执行

$ source /usr/local/greenplum-db/greenplum_path.sh

$ gpssh-exkeys -f /home/gpadmin/all_hosts   (all_hosts是刚刚我们建立的文本)

出现以下提示,输入root密码:

5)出现以下提示,输入root密码:

***Enter password for : <root_password>

结果是下图就对了:

6

a.为每个区段建立gpadmin用户

gpssh -f  /home/gpadmin/allsegs  '/usr/sbin/useradd gpadmin -d /home/gpadmin -s bin/bash'

b.建立密码

gpssh -f  /home/gpadmin/allsegs  'echo “gpadmin_password” | passwd gpadmin –1'

7)复制greenplum软件到segment host

a.主节点上创建安装GPtar文件

cd /usr/local

gtar -cvf /home/gpadmin/gp.tar  greenplum-db-*.*.*.*

b.goscp命令将其安装到各个segment

source /usr/local/greenplum-db/greenplum_path.sh

gpscp -f  /home/gpadmin/all_segs  /home/gpadmin/gp.tar =:/usr/local

启动gpssh会话

gpssh -f  /home/gpadmin/all_segs

gpssh下解压

=> gtar - -directory  /usr/local -xvf /usr/local/gp.tar

建立gp当前版本目录连接:

=> ln -s /usr/local/greenplum-db-*.*.*.* /usr/local/greenplum-db

8)修改目录所有者

=> chown -R gpadmin /usr/local/greenplum-db

=> chgrp -R gpadmin /usr/local/greenplum-db

=> chown -R gpadmin /usr/local/greenplum-db-*.*.*.*

=> chgrp -R gpadmin /usr/local/greenplum-db-*.*.*.*

9)建立segment上的存储区

=>

=>mkdir /home/gpadmin/primary   #主文件

=>mkdir /home/gpadmin/mirror  #镜像文件

修改权限和所有者(同上一步(8))

10)退出gpssh交互模式

=>exit

3. 初始化GP

1)同步时钟

gpadmin下:

检查时钟:gpssh -f  /home/gpadmin/all_hosts  -v  data

同步: gpssh -f  /home/gpadmin/all_hosts  -v  ntpd

出错就以root再次执行

2)系统检测:

gpcheckos -f  /home/gpadmin/all_hosts

此步骤会修复一些问题,不再列出

3)将/data/greenplum-db-4.2.1.0/docs/cli_help/gpconfigs/gpinitsystem_config/home/gpadmin/gpconfigs目录(没有就新建个)下然后编辑:

vi gpinitsystem_config

# FILE NAME: gpinitsystem_config # Configuration file needed by the gpinitsystem ################################################ #### REQUIRED PARAMETERS ################################################ #### Name of this Greenplum system enclosed in quotes. ARRAY_NAME="EMC Greenplum DW" #### Naming convention for utility-generated data directories. SEG_PREFIX=gpseg #### Base number by which primary segment port numbers #### are calculated. PORT_BASE=40000 #### File system location(s) where primary segment data directories #### will be created. The number of locations in the list dictate #### the number of primary segments that will get created per#### physical host (if multiple addresses for a host are listed in #### the hostfile, the number of segments will be spread evenly across #### the specified interface addresses). declare -a DATA_DIRECTORY=(/home/gpadmin/primary) #### OS-configured hostname or IP address of the master host. MASTER_HOSTNAME=mdw #### File system location where the master data directory #### will be created. MASTER_DIRECTORY=/gpmaster #### Port number for the master instance. MASTER_PORT=5432 #### Shell utility used to connect to remote hosts. TRUSTED_SHELL=ssh #### Maximum log file segments between automatic WAL checkpoints. CHECK_POINT_SEGMENTS=8 #### Default server-side character set encoding. ENCODING=UNICODE ################################################ #### OPTIONAL MIRROR PARAMETERS ################################################ #### Base number by which mirror segment port numbers #### are calculated. #MIRROR_PORT_BASE=50000 #### Base number by which primary file replication port #### numbers are calculated. #MIRROR_REPLICATION_PORT_BASE=51000 #### File system location(s) where mirror segment data directories #### will be created. The number of mirror locations must equal the #### number of primary locations as specified in the #### DATA_DIRECTORY parameter. ##declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/mirror /home/gpadmin/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror) declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/mirror) ################################################ #### Create a database of this name after initialization. #DATABASE_NAME=name_of_database DATABASE_NAME=gpexmp #### Specify the location of the host address file here instead of #### with the the -h option of gpinitsystem. MACHINE_LIST_FILE=/home/gpadmin/all_segs

4)初始化数据库:

gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config

会出现很多info或者warn,如果有以下信息,说明初始化成功,

然后输入Y

5)刚刚我们编辑gpinitsystem_config文件时,修改了下面两句

    #DATABASE_NAME=name_of_database

    DATABASE_NAME=gpexmp

这里在初始化之后建立了一个叫example的数据库,我们可以进行测试:

gpadmin下:

执行以下查询

    Psql -d  gpexmp

    Gpexmp=# select current_timestamp;

好了,如果出现以上结果就说明你安装成功了,可以对数据库进行操作了!恭喜!!!