【干货】在docker中安装配置Greenplum集群的过程

原创 2018年04月13日 18:10:37

—— 原文发布于本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),欢迎关注。

 

Greenplum是一个MPP(海量并行处理)计算框架的分布式数据库,其数据库引擎层是基于著名的Postgresql数据库,企业级数据库产品,现已开源。Greenplum拥有丰富的特性,包括:
1、完全支持ANSI SQL 2008标准和SQL OLAP 2003 扩展,支持ODBC和JDBC
2、支持分布式事务,支持ACID
3、支持行存储、列存储,以及可通过外部表的方式访问其它关系型数据库或者Hadoop
4、拥有良好的线性扩展能力,支持上千个节点
 

Greenplum的体系架构如下:

master节点可实现主备高可用,避免单点故障;segments节点分散存放数据,数据作多副本保存,可进行数据的并行查询和操作,非常高效。

下面描述在docker中安装配置greenplum集群的过程

一、安装docker

本人手上只有一台笔记本,安装了Ubuntu操作系统,为了方便安装测试greenplum集群,在Ubuntu操作系统上安装docker,然后创建多个容器构建出一个greenplum集群。

1、安装docker

sudo apt-get install docker

2、拉取centos镜像

docker pull centos:latest

3、创建容器,作为greenplum的节点

sudo docker run --name gpcentos1 -it centos /bin/bash
sudo docker run --name gpcentos2 -it centos /bin/bash
sudo docker run --name gpcentos3 -it centos /bin/bash
sudo docker run --name gpcentos4 -it centos /bin/bash

二、配置基础环境

进入到每个greenplum节点,配置基础环境

1、安装相关的依赖包

由于拉取了docker的centos镜像,这个是centos的简化版本,里面有一些程序包是没有默认安装的,会影响到后面部署greenplum,因此在docker的每个节点中安装相关的依赖包

# centos 安装相关的依赖包(每个节点)
yum install -y net-tools which openssh-clients openssh-server less zip unzip iproute.x86_64

2、启动ssh

docker中默认没有启动ssh,为了方便各节点之间的互连,启动docker的每个节点里面的ssh,并创建相关的认证key

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
/usr/sbin/sshd

3、配置主机域名映射关系

在每个docker节点中配置,方便后续greenplum集群的配置文件中用到

vi /etc/hosts

172.17.0.2	25cd9b8d455f
172.17.0.3	2ced6321dab6
172.17.0.4	d2b44bb77b77

172.17.0.2 dw-greenplum-1 mdw
172.17.0.3 dw-greenplum-2 sdw1
172.17.0.4 dw-greenplum-3 sdw2

同时,修改所有节点里面的 /etc/sysconfig/network 文件,保持主机名一致

cat /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=mdw

4、创建greenplum的用户和用户组

在每个节点中创建greenplum的用户和用户组,方便安装greenplum集群。另外,由于greenplum自带了一个python,容易也系统的python版本相冲突,为了不影响到系统的其它用户,将创建安装greenplum的专用用户

groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin
passwd gpadmin

5、修改每个节点上的文件打开数量限制

vi /etc/security/limits.conf

# End of file
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

6、关闭每个节点上的防火墙,关闭selinux

service iptables stop
chkconfig iptables off
[root@mdw selinux]# cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

三、下载greenplum安装包

到greenplum的官网上,下载greenplum安装包,点开Greenplum Database Server,根据操作系统下载安装包 greenplum-db-4.3.14.1-rhel5-x86_64.zip,将其上传到master节点mdw的/home/gpadmin目录中。

四、在master节点上安装greenplum

切换到gpadmin账号

su gpadmin

解压下载后的zip文件

unzip greenplum-db-4.3.14.1-rhel5-x86_64.zip

赋予文件执行权限

chmod +x greenplum-db-4.3.14.1-rhel5-x86_64.bin

执行安装文件

./greenplum-db-4.3.14.1-rhel5-x86_64.bin

安装期间需要修改默认安装目录,输入/home/gpadmin/greenplum-db-4.3.14.1

为了方便安装集群,greenplum提供了批量操作的指令,通过创建配置文件,以使用批处理命令

[gpadmin@mdw ~]$ cat ./conf/hostlist 
mdw
sdw1
sdw2

[gpadmin@mdw ~]$ cat ./conf/seg_hosts 
sdw1
sdw2

设置环境变量,打通所有节点

greenplum-db/greenplum_path.sh中保存了运行greenplum的一些环境变量设置,包括GPHOOME、PYTHONHOME等设置,在gpadmin账号下设置环境变量生效,然后打通所有节点

[gpadmin@mdw ~]$ source /home/gpadmin/greenplum-db/greenplum_path.sh 
[gpadmin@mdw ~]$ gpssh-exkeys -f /home/gpadmin/conf/hostlist 
[STEP 1 of 5] create local ID and authorize on local host
  ... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped

[STEP 2 of 5] keyscan all hosts and update known_hosts file

[STEP 3 of 5] authorize current user on remote hosts
  ... send to sdw1
  ... send to sdw2

[STEP 4 of 5] determine common authentication file content

[STEP 5 of 5] copy authentication files to all remote hosts
  ... finished key exchange with sdw1
  ... finished key exchange with sdw2

[INFO] completed successfully

成功打通,后面就可以使用以下命令开启批量操作

注意:使用gpssh-exkeys命令时一定要使用gpadmin身份,因为会在/home/gpadmin/.ssh中生成ssh的免密码登录秘钥,如果使用了其它账号登录,则会生成密钥在其它账号下,后面在gpadmin账号下就无法使用gpssh的批处理命令

[gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/hostlist 
Note: command history unsupported on this machine ...
=> pwd
[sdw1] /home/gpadmin
[sdw2] /home/gpadmin
[ mdw] /home/gpadmin
=> exit

这里pwd命令是linux中的查看路径命令,在这里也是查看批量操作时所在的路径,从中可以看到已经成功连通了三个节点

五、分发安装包到每个子节点

打包master节点上的安装包

tar -cf gp.4.3.tar greenplum-db-4.3.14.1/

使用gpscp命令将这个文件复制到每一台机器上

gpscp -f /home/gpadmin/conf/hostlist gp.4.3.tar =:/home/gpadmin/

批量解压,并建立软链接

[gpadmin@mdw conf]$ gpssh -f hostlist
=> cd /opt/greenplum
[sdw1]
[sdw2]
[mdw]
=> tar -xf gp.4.3.tar
[sdw1]
[sdw2]
[mdw]
=> ln -s ./greenplum-db-4.3.8.1 greenplum-db
[sdw1]
[sdw2]
[mdw]

这样就完成了所有节点的安装

六、初始化安装数据库

1、批量创建数据目录

[gpadmin@mdw conf]$ gpssh -f hostlist
=> mkdir gpdata
[ mdw]
[sdw2]
[sdw1]
=> cd gpdata
[ mdw]
[sdw2]
[sdw1]
=> mkdir gpmaster gpdatap1 gpdatap2 gpdatam1 gpdatam2
[ mdw]
[sdw2]
[sdw1]
=> exit

2、在每个节点上配置.bash_profile环境变量

[gpadmin@mdw ~]$ cd
[gpadmin@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 /opt/gpadmin/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=2345
export PGDATABASE=testDB

[gpadmin@mdw ~]$ source .bash_profile

3、初始化配置文件

[gpadmin@mdw ~]$ cat /home/gpadmin/conf/gpinitsystem_config
ARRAY_NAME="Greenplum"
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
# Segment 的名称前缀
SEG_PREFIX=gpseg
# Primary Segment 起始的端口号
PORT_BASE=33000
# 指定 Primary Segment 的数据目录
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1  /home/gpadmin/gpdata/gpdatap2)
# Master 所在机器的 Hostname
MASTER_HOSTNAME=mdw
# 指定 Master 的数据目录
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster
# Master 的端口 
MASTER_PORT=2345
# 指定Bash的版本
TRUSTED_SHELL=/usr/bin/ssh
# Mirror Segment起始的端口号
MIRROR_PORT_BASE=43000
# Primary Segment 主备同步的起始端口号
REPLICATION_PORT_BASE=34000
# Mirror Segment 主备同步的起始端口号
MIRROR_REPLICATION_PORT_BASE=44000
# Mirror Segment 的数据目录
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)

4、初始化数据库

gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config -s sdw2

其中,-s sdw2是指master的standby所在的节点,然后按照提示步骤就能完成安装了。

如果gpinitsystem不能成功,就在master节点的/home/gpadmin/gpAdminLogs/的gpinitsystem_*.log文件中查看日志信息,找出原因进行修改,然后再重新执行gpinitsystem进行初始化安装。

 

欢迎关注本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),获取更多资讯

greenplum4.2集群手把手安装配置文档

1    安装配置 1.1.1  软件环境 Window  Xp  中vm server2.0下 创建三个redhat 5.4虚拟机, 共享虚拟网卡ip=192.168.66.118 1...
  • seeyouc
  • seeyouc
  • 2016-11-09 17:18:39
  • 733

greenplum一次修改主机名的经历

1.原集群信息如下: postgres=# select * from gp_segment_configuration;  dbid | content | role | preferred_r...
  • wxc20062006
  • wxc20062006
  • 2017-12-20 15:28:30
  • 103

与Greenplum度过的三个星期

5月4日-5月24日,断断续续折腾了三个星期的Greenplum,总算告一段落了:扩容,发现扩不成容,只好升级;升级,发现一堆错误,只好暂停修复数据库;修好了,继续升级;升完级,发现错误,修啊修啊修好...
  • cloudguru
  • cloudguru
  • 2015-06-09 16:10:50
  • 2066

GreenPlum 集群部署详细过程 V2.0

1、准备  这里准备了4台服务器,1台做master,1台做standby,4台都做存储,为了保密真实的IP地址和主机名都换成域名了。OS:Red Hat Enterprise Linux Serve...
  • mchdba
  • mchdba
  • 2017-04-30 22:47:29
  • 4113

RabbitMQ集群安装配置教程

1.安装Erlang环境下载erlang安装包,如otp_src_20.1.tar.gz解包:tar -zvxf otp_src_20.1.tar.gz进入目录:cd otp_src_20.1检查编译...
  • swcxy12315
  • swcxy12315
  • 2018-03-09 11:53:24
  • 60

Greenplum管理序列

不支持currval和lastval,只有nextval,且不能在update和delete语句中使用。如果开启了mirroring,序列不能在update和delete语句中使用。 gtlions...
  • gtlions
  • gtlions
  • 2013-04-24 09:58:27
  • 1341

Docker 安装 RabbitMQ 集群

Docker 有个好处就是方便折腾,下面将使用bijukunjummen 提供的docker-rabbitmq-cluster 脚本进行安装。(! 仅适用于本地测试,生产上没有检验过)安装docker...
  • u011058700
  • u011058700
  • 2017-12-04 13:22:44
  • 286

The docker book

  • 2014年11月25日 10:16
  • 5.59MB
  • 下载

greenplum安装详细过程

http://www.cnblogs.com/liuyungao/p/5689588.html 今天又帮其他项目装了一遍GP,加上之前的两次,这是第三次了,虽然每次都有记录,但这次安装还是发现漏写...
  • xj626852095
  • xj626852095
  • 2016-10-31 17:30:21
  • 773

RedHat6.x伪分布安装Greenplum

RedHat6.x伪分布安装Greenplum 重要:对于所有的Greenplum数据库系统,SELinux和防火墙必须关闭 关闭防火墙和SELinux(root用户) 查看防火墙运行状态 # c...
  • u010166404
  • u010166404
  • 2016-07-19 10:58:41
  • 645
收藏助手
不良信息举报
您举报文章:【干货】在docker中安装配置Greenplum集群的过程
举报原因:
原因补充:

(最多只允许输入30个字)