Greenplum作为一个分布式计算平台,集群中有不同角色的节点,比方master,segment,甚至专门的etl服务器。残缺的部署一个Greenplum集群通常须要多个物理机,并破费数天甚至数周的工夫。而利用docker和docker-compose,启动一个gp集群其实只须要几分钟而已。本文将介绍如何疾速在docker中启动Greenplum 集群。

1、筹备工作

首先从github下载docker的配置文件:

git clone https://github.com/lij55/gphost.git

而后从Greenplum官网(https://network.pivotal.io/)...,gphost的docker应用的CentOS7镜像。如果用gp5的环境,就将对应的rpm放到example5/目录;如果用gp6的环境,就将对应的rpm放到example6/目录。这里以gp6为例,下载6.8的安装文件greenplum-db-6.8.0-rhel7-x86_64.rpm,放到example6目录下,执行ls能够看到内容大抵如下:

$ ls -1 example6build.shdocker-compose.yamlDockerfilegreenplum-db-6.8.0-rhel7-x86_64.rpmreadme.orgreset

2、运行容器

docker-compose.yaml文件中定义了运行时依赖的docker容器,默认有1个master节点,2个segment节点和1个etl服务器。如果须要减少更多segment机器或者批改端口,能够批改docker-compose.yaml。而后启动容器:

# cd example6docker build . -t mygreenplum6docker-compose up -d

容器启动好之后,能够通过ssh或者docker-compose的exec命令连贯到master节点;这里须要留神的是肯定要用gpadmin用户,假设master上ssh端口为6222,ssh的登录命令为:

ssh -p 6222 gpadmin@127.0.0.1

明码为changeme

3、初始化集群

在master节点,执行如下命令来,生成初始化配置的脚本

artifiact/prepare.sh -s 2 -n 2
  • -s 示意有2个segment机器(容器)
  • -n 示意在每个segment机器上创立2个primary节点

而后运行gpinitsystem命令来进行初始化。

gpinitsystem -a -c gpinitsystem_config

不出意外的话greenplum集群就启动成了。preprare.sh脚本还生成了env.sh文件,不便配置gp须要的环境变量。此外,还有artifact/post.sh脚本会进行一些不便的设置,例如关上gpadmin的近程无明码拜访,将env.sh退出gpadmin用户的bash环境变量等。间接执行即可:

artifact/postinstall.sh

4、治理集群

集群创立后,能够通过docker-compose命令来治理集群:

docker-compose exec -u gpadmin mdw bash -i -c "gpstop -a"

而重新启动集群的命令为:

docker-compose exec -u gpadmin mdw bash -i -c "gpstart -a"

gp的服务映射到本机的6432端口,能够用任何gp的客户端工具,比方dbeavor或者pgadmin进行拜访。

5、后续工作

  • 减少mirror和standby master的反对
  • 反对更多的组件,比方pxf,madlib等
  • 反对开源版gp
  • 进一步简须要手动执行的操作 欢送大家到github上提issue,PR