CentOS7 安装GreenPlum详细步骤

GreenPlum 安装详细步骤
1 、环境准备
1CentOS7.2
2 greenplum-db-4.3.9.1-build-1-rhel5-x86_64.bin 此文件为 GreenPlum 以下简称为 gp )的安装文件,由于此文件需从国外官网下载比较费劲,所以一并附在压缩包中。
3 、以下步骤若未说明均在 root 用户下进行操作
2 、配置系统信息
1.gp 集群介绍
本次 gp集群安装使用了 4台机器,其中 1台为 master3台为 segmentip
7.7.8.151 7.7.8.152 7.7.8.153 7.7.8.154
其中 7.7.8.151master 其余为 segment
  1. 修改/etc/sysconfig/network-scripts/ifconfig-eth0文件(所有机器均需修改)
修改机器的 ip、子网掩码、 dns等等
  1. 修改/etc/hosts文件(所有机器均需修改)
此处主要是为之后 gp集群之间的相互通信做准备
(注意:一定要按照此格式书写,其中第三块的意思是为了与后面所用到的配置文件相匹配)
  1. 修改/etc/hostname文件与/etc/sysconfig/network文件(所有机器均需修改)
hostname为主机名,根据个人情况定,本次四台机器分别为 mdwsdw1sdw2sdw3
  1. 重启网络并测试(所有机器均重启并测试)
重启网络: service network restart
用主机名来测试各主机是否能 ping
  1. 创建用户和用户组(所有机器均需修改)
创建用户组: groupadd -g 530 sdzw
创建用户: useradd -g 530 -u530 -m -d /home/sdzw -s /bin/bash sdzw
为用户 sdzw设置密码: passwd sdzw
  1. 修改文件/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.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

修改后各节点执行 sysctl -p 使其生效

  1. 修改文件/etc/security/limits.conf(所有机器均需修改)
在文件末尾追加以下内容,注意不要漏掉 *
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

  1. 关闭防火墙及selinux(所有机器均需修改)
停止防火墙 systemctl stop firewalld.service
禁止防火墙 systemctl disable firewalld.service
修改 selinux配置文件如下图黄色字体所示
3 、安装 GreenPlum
1. 创建安装文件目录(所有机器)
创建目录: mkdir /sdzw/greenplum
sdzw用户修改文件夹权限 chown -R sdzw:sdzw /sdzw/greenplum
之后把安装包 greenplum-db-4.3.9.1-build-1-rhel5-x86_64.bin放于 /opt/greenplum当中
2. 安装 gp (只需在 master 主机上)
1.首先给文件赋权: chmod +x greenplum-db-4.3.9.1-build-1-rhel5-x86_64.bin
2. 执行安装: ./greenplum-db-4.3.9.1-build-1-rhel5-x86_64.bin 安装期间需要手动输入安装目录 /opt/greenplum/greenplum-db-4.3.9.1否则会默认安装到 /usr/local下,且需手动输入几次 yes
3.完成后即安装成功,此时 master上的 gp已经安装成功。但它是以 root身份安装的,所以修改下文件夹的用户 chown -R sdzw:sdzw /sdzw/greenplum
3. 创建配置文件(以 sdzw 用户只需在 master 主机上)
  1. 首先以sdzw用户登陆 su sdzw
  2. 创建文件夹 cd /sdzw mkdir conf
  3. /sdzw/conf下创建2个文件hostlist seg_hosts,内容如下图所示
4. 打通所有结点(以 sdzw 用户只需在 master 主机上)
执行以下两条命令:
source /sdzw/greenplum/greenplum-db/greenplum_path.sh
gpssh-exkeys -f /sdzw/conf/hostlist
当看到 completed successfully 说明成功打通
然后执行 gpssh -f /home/sdzw/conf/hostlist 进行测试会提示
Note: command history unsupported on this machine ...
=>
输入 pwd会显示
[sdw1] /home/sdzw
[sdw3] /home/sdzw
[sdw2] /home/sdzw
[ mdw] /home/sdzw
=>
输入 exit退出
5. 将安装包分发到每个节点上(以 sdzw 用户只需在 master 主机上)
cd /sdzw/greenplum/
tar -cf gp.4.3.tar greenplum-db-4.3.9.1/
然后利用 gpscp命令将这个文件复制到每一台机器上:
gpscp -f /sdzw/conf/hostlist gp.4.3.tar =:/sdzw/greenplum/
ok,如果没有意外,就批量复制成功了,可以去子节点的相应文件夹查看,之后要将 tar包解压,我们使用批量操作
[sdzw@mdw conf]$ gpssh -f /sdzw/conf/hostlist
=> cd /sdzw/greenplum
[sdw3]
[sdw1]
[sdw2]
[mdw]
=> tar -xf gp.4.3.tar
[sdw3]
[sdw1]
[sdw2]
[mdw]
建立软链接
=> ln -s ./greenplum-db-4.3.9.1 greenplum-db
[sdw3]
[sdw1]
[sdw2]
[mdw]
=> ll (可以使用 ll查看一下是否已经安装成功 )
这样,就完成了所有几点的安装,接下来初始化数据库
6. 初始化数据库(以 sdzw 用户只需在 master 主机上)
[sdzw@mdw conf]$ gpssh -f /sdzw/conf/hostlist

=> cd /sdzw
=> mkdir gpdata
[sdw3]
[ mdw]
[sdw2]
[sdw1]
=> cd gpdata
[sdw3]
[ mdw]
[sdw2]
[sdw1]
=> mkdir gpmaster gpdatap1 gpdatap2 gpdatam1 gpdatam2
[sdw3]
[ mdw]
[sdw2]
[sdw1]
=> ll
[sdw3] 总用量 20
[sdw3] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatam1
[sdw3] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatam2
[sdw3] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatap1
[sdw3] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatap2
[sdw3] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpmaster
[ mdw] 总用量 20
[ mdw] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatam1
[ mdw] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatam2
[ mdw] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatap1
[ mdw] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatap2
[ mdw] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpmaster
[sdw2] 总用量 20
[sdw2] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatam1
[sdw2] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatam2
[sdw2] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatap1
[sdw2] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatap2
[sdw2] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpmaster
[sdw1] 总用量 20
[sdw1] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatam1
[sdw1] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatam2
[sdw1] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatap1
[sdw1] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpdatap2
[sdw1] drwxrwxr-x 2 sdzw sdzw 4096 7 18 19:46 gpmaster
=> exit

7. 配置 .bash_profile 环境变量(以 sdzw 用户在每台机器上)
[sdzw@mdw ~]$ cd
[sdzw@mdw ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

source /sdzw/greenplum/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/sdzw/gpdata/gpmaster/gpseg-1
export PGPORT=5432
export PGDATABASE=gpdb

其实就是加上最后四行,然后 source .bash_profile让环境变量生效 ,如果后期出现了新窗口中 greenplum的命令找不到的情况, 就是 source /sdzw/greenplum/greenplum-db/greenplum_path.sh 这一句没成功实现开机执行,再加到环境变量里 .bashrc
  1. 初始化配置文件(以sdzw用户只需在master机器上)

[sdzw@mdw ~]$ cat /sdzw/conf/gpinitsystem_config
ARRAY_NAME="Greenplum"
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/sdzw/gpdata/gpdatap1 /sdzw/gpdata/gpdatap2)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/sdzw/gpdata/gpmaster
MASTER_PORT=5432
TRUSTED_SHELL=/usr/bin/ssh
MIRROR_PORT_BASE=43000
REPLICATION_PORT_BASE=34000
MIRROR_REPLICATION_PORT_BASE=44000
declare -a MIRROR_DATA_DIRECTORY=(/sdzw/gpdata/gpdatam1 /sdzw/gpdata/gpdatam2)
MACHINE_LIST_FILE=/sdzw/conf/seg_hosts
9. 初始化数据库(以 sdzw 用户只需在 master 机器上)
gpinitsystem -c /sdzw/conf/gpinitsystem_config -s sdw7

其中 sdw3是指 masterstandby(备份)所在的节点,我看书上和网上的一些资料都将 standby放在最后一个节点,可能是约定俗成的吧。
如果上面有一些配置有问题, gpinitsystem就不能成功,日志在主节点 /home/sdzw/sdzwLogs/gpinitsystem_2016XXXX.log文件中。
需要注意的是如果初始化失败,一定要认真查看这个日志文件,一味重复安装没有太大意义,重要的是要找到主要原因。
4 、测试
到此为止 gp安装所有工作已完成,接下来进行个简单的测试


sdzw 用户 psql -p 5433 -d pgDB 集群
Postgres 用户 psql -p 5432 -d postgres 单个数据库 重启 服务重启 systemctl restart postgresql-9.4

5 GreenPlum Common Center 监控工具
安装 GPCC
GreenPlum官方提供了一套可视化的监控工具,名为 GreenPlum Common Center(以下简称 GPCC),使用此工具可以以图形方式将各种性能指标以图形方式展现出来,接下来介绍如何安装。
  1. 创建监控数据库,数据库名为gpperfmon,并打开gp_enable_gpperfmon参数,并创建gpmon用户并设置用户密码。
$ createdb gpperfmon
$ createuser gpmon
ALTER USER gpmon WITH PASSWORD ‘gpmon’;
$ gpperfmon_install --enable --password gpmon --port 5432
$ gpstop -r 重启数据库使以上设置生效
  1. 确认监控采集进程是否已经启动
$ ps -ef | grep gpmmon
$ psql -d gpperfmon -c ‘select * from system_now’

  1. 安装GPCC
切换到 root用户
pg_hba.conf local all all ident 改为 local all all trust
# chmod +x greenplum-cc-web-2.0-build-32-RHEL5.x86_64.bin
# ./chmod +x greenplum-cc-web-2.0-build-32-RHEL5.x86_64.bin
安装时输入安装目录。
安装完后赋权并使环境变量生效
# chown -R gpadmin:gpadmin greenplum-4.3.3/
# chown -R gpadmin:gpadmin greenplum-cc-web
# source /home/greenplum-4.3-cc/gpcc_path.sh

安装配置
# gpcmdr --setup

安装完后 gpcmdr --start gpcc 启动 浏览 http://mdw:28080 用户名和密码均为刚刚设置的 gpmon




分区表的创建
1.自动日期分区
CREATE TABLE sales (id int, date date, amt decimal(10,2))
DISTRIBUTED BY (id)
PARTITION BY RANGE (date)
( START (date '2008-01-01') INCLUSIVE
END (date '2009-01-01') EXCLUSIVE
EVERY (INTERVAL '1 day') );
创建按月分区
CREATE TABLE sales (id int, date date, amt decimal(10,2))
DISTRIBUTED BY (id)
PARTITION BY RANGE (date)
( PARTITION Jan08 START (date '2008-01-01') INCLUSIVE ,
PARTITION Feb08 START (date '2008-02-01') INCLUSIVE ,
PARTITION Mar08 START (date '2008-03-01') INCLUSIVE ,
PARTITION Apr08 START (date '2008-04-01') INCLUSIVE ,
PARTITION May08 START (date '2008-05-01') INCLUSIVE ,
PARTITION Jun08 START (date '2008-06-01') INCLUSIVE ,
PARTITION Jul08 START (date '2008-07-01') INCLUSIVE ,
PARTITION Aug08 START (date '2008-08-01') INCLUSIVE ,
PARTITION Sep08 START (date '2008-09-01') INCLUSIVE ,
PARTITION Oct08 START (date '2008-10-01') INCLUSIVE ,
PARTITION Nov08 START (date '2008-11-01') INCLUSIVE ,
PARTITION Dec08 START (date '2008-12-01') INCLUSIVE
END (date '2009-01-01') EXCLUSIVE );
按年分区
CREATE TABLE rank (id int, rank int, year int, gender char(1), count int)
DISTRIBUTED BY (id)
PARTITION BY RANGE (year)
( START (2001) END (2008) EVERY (1),
DEFAULT PARTITION extra );
列表分区,以性别做分区依据列,男女共两个分区
CREATE TABLE rank (id int, rank int, year int, gender char(1), count int )
DISTRIBUTED BY (id)
PARTITION BY LIST (gender)
( PARTITION girls VALUES ('F'),
PARTITION boys VALUES ('M'),
DEFAULT PARTITION other );
范围,列表,时间分区
CREATE TABLE sales (trans_id int, date date, amount decimal(9,2), region text)
DISTRIBUTED BY (trans_id)
PARTITION BY RANGE (date)
SUBPARTITION BY LIST (region)
SUBPARTITION TEMPLATE
( SUBPARTITION usa VALUES ('usa'),
SUBPARTITION asia VALUES ('asia'),
SUBPARTITION europe VALUES ('europe'),
DEFAULT SUBPARTITION other_regions)
START (date '2008-01-01') INCLUSIVE
END (date '2009-01-01') EXCLUSIVE
EVERY (INTERVAL '1 month'),
DEFAULT PARTITION outlying_dates );
年,月,时间,列表分区
CREATE TABLE sales (id int, year int, month int, day int, region text)
DISTRIBUTED BY (id)
PARTITION BY RANGE (year)
SUBPARTITION BY RANGE (month)
SUBPARTITION TEMPLATE (
START (1) END (13) EVERY (1),
DEFAULT SUBPARTITION other_months )
SUBPARTITION BY LIST (region)
SUBPARTITION TEMPLATE (
SUBPARTITION usa VALUES ('usa'),
SUBPARTITION europe VALUES ('europe'),
SUBPARTITION asia VALUES ('asia'),
DEFAULT SUBPARTITION other_regions )
( START (2002) END (2010) EVERY (1),
DEFAULT PARTITION outlying_years );
增加表分区
ALTER TABLE sales ADD PARTITION
START (date '2009-02-01') INCLUSIVE
END (date '2009-03-01') EXCLUSIVE;
增加子分区
ALTER TABLE sales ADD PARTITION
START (date '2009-02-01') INCLUSIVE
END (date '2009-03-01') EXCLUSIVE
( SUBPARTITION usa VALUES ('usa'),
SUBPARTITION asia VALUES ('asia'),
SUBPARTITION europe VALUES ('europe') );
1) Greenplum 通过外部表的方式让所有 segment 同时连接到一组外部服务 gpfdist, 同时拉取数据
2) gpfdist 随机分发数据给所有 segment.
3) segment拿到数据后先解析它,根据表的分发规则收下属于自己的数据,把不属于自己的数据再分发给所属的segment.
整个过程充分利用了网络和各 segment 的硬件资源,效率极高.
demo:
1) 在文件服务器上启动gpfdist服务,端口号8080,指定文本文件所在目录
 ./gpfdist -d /u01/gp001/dss-data/ -p 8080 -l /u01/gp001/loadlog.log
2) 连接Greenplum master节点,创建外部表
CREATE EXTERNAL TABLE LINEITEM_LOAD (
    L_ORDERKEY      INTEGER , 
    L_PARTKEY       INTEGER , 
    L_SUPPKEY       INTEGER , 
    L_LINENUMBER    INTEGER,
    L_QUANTITY      DECIMAL,
    L_EXTENDEDPRICE DECIMAL,
    L_DISCOUNT      DECIMAL,
    L_TAX           DECIMAL,
    L_RETURNFLAG    CHAR(1),
    L_LINESTATUS    CHAR(1),
    L_SHIPDATE      DATE,
    L_COMMITDATE    DATE,
    L_RECEIPTDATE   DATE,
    L_SHIPINSTRUCT  CHAR(25),
    L_SHIPMODE      CHAR(10),
    L_COMMENT       VARCHAR(44)
) LOCATION ('gpfdist://1192.168.1.1:8080/lineitem.csv')
FORMAT 'CSV' (DELIMITER '|');
关键信息: 
1. 指定了外部数据源是刚才启动的gpfdist服务,并指定了需要导入的文本文件名
2 文本的根式是CSV,列之间用 | 分隔.
3) 按照需求创建表,数据会导入到这个表中
        CREATE TABLE LINEITEM (
                L_ORDERKEY ,    
                L_PARTKEY ,  
                L_SUPPKEY ,  
                L_LINENUMBER    INTEGER,
                L_QUANTITY              DECIMAL,
                L_EXTENDEDPRICE DECIMAL,
                L_DISCOUNT              DECIMAL,
                L_TAX                   DECIMAL,
                L_RETURNFLAG    CHAR(1),
                L_LINESTATUS    CHAR(1),
                L_SHIPDATE              DATE,
                L_COMMITDATE    DATE,
                L_RECEIPTDATE   DATE,
                L_SHIPINSTRUCT  CHAR(25),
                L_SHIPMODE              CHAR(10),
                L_COMMENT               VARCHAR(44)
        )  with (OIDS=false) DISTRIBUTED BY (l_orderkey, l_linenumber);
4) 通过外部数据源把数据导入到 Greenplum 中
insert into lineitem select * from lineitem_load;
5) 通过执行计划,可以理解他是工作原理, 整个过程 master 节点不会处理数据,都由 segment完成.
explain insert into lineitem select * from lineitem_load;
                                             QUERY PLAN                                              
-----------------------------------------------------------------------------------------------------
 Insert (slice0; segments: 16)  (rows=62500 width=426)
   ->  Redistribute Motion 16:16  (slice1; segments: 16)  (cost=0.00..18500.00 rows=62500 width=426)
         Hash Key: l_orderkey, lineitem_load.l_linenumber
         ->  External Scan on lineitem_load  (cost=0.00..18500.00 rows=62500 width=426)
 Settings:  effective_cache_size=1GB
(5 rows)
清理连接
postgresql9.1之后
SELECT      pg_terminate_backend(pid)  FROM      pg_stat_activity  WHERE       -- don't kill my own connection!     pid <> pg_backend_pid()     -- don't kill the connections to other databases      AND  datname =  'database_name'     ;
If you're using Postgres 8.4-9.1 use procpid instead of pid
SELECT      pg_terminate_backend(procpid)  FROM      pg_stat_activity  WHERE       -- don't kill my own connection!     procpid <> pg_backend_pid()     -- don't kill the connections to other databases      AND  datname =  'database_name'     ;
查看活跃连接
select * from  pg_stat_activity

你可能感兴趣的:(CentOS7 安装GreenPlum详细步骤)