博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【干货】在docker中安装配置Greenplum集群的过程
阅读量:6620 次
发布时间:2019-06-25

本文共 6403 字,大约阅读时间需要 21 分钟。

hot3.png

—— 原文发布于本人的微信公众号“大数据与人工智能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/bashsudo docker run --name gpcentos2 -it centos /bin/bashsudo docker run --name gpcentos3 -it centos /bin/bashsudo 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_keyssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_keyssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key/usr/sbin/sshd

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

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

vi /etc/hosts172.17.0.2	25cd9b8d455f172.17.0.3	2ced6321dab6172.17.0.4	d2b44bb77b77172.17.0.2 dw-greenplum-1 mdw172.17.0.3 dw-greenplum-2 sdw1172.17.0.4 dw-greenplum-3 sdw2

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

cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=mdw

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

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

groupadd -g 530 gpadminuseradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadminchown -R gpadmin:gpadmin /home/gpadminpasswd 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 stopchkconfig 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 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 mdwsdw1sdw2[gpadmin@mdw ~]$ cat ./conf/seg_hosts sdw1sdw2

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

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 functionsif [ -f ~/.bashrc ]; then    . ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATHsource /opt/gpadmin/greenplum-db/greenplum_path.shexport MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1export PGPORT=2345export PGDATABASE=testDB[gpadmin@mdw ~]$ source .bash_profile

3、初始化配置文件

[gpadmin@mdw ~]$ cat /home/gpadmin/conf/gpinitsystem_configARRAY_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 所在机器的 HostnameMASTER_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),获取更多资讯

转载于:https://my.oschina.net/u/876354/blog/1606419

你可能感兴趣的文章
Spring常用配置解析
查看>>
React 应用的性能优化之路
查看>>
为什么云安全离不开“可视性即服务”
查看>>
Memcached+MySQL笔记
查看>>
Android UI 组件 TextView 及其子类
查看>>
解决SQL SERVER 2008数据库表中修改字段后不能保存
查看>>
PHP学习笔记【4】--apache服务器配置--配置虚拟目录和配置虚拟主机
查看>>
Linux性能优化 第一章 性能追踪建议
查看>>
mybatis 中oracle 批量新增三种方法
查看>>
SwipeListview拦截ViewPager滑动事件
查看>>
React学习日记
查看>>
Horizon 6.0 和 Virtual SAN:VMware 中的一组完美搭配
查看>>
Git常用命令
查看>>
jQuery属性选择器,选择带[]的属性
查看>>
javascript操作cookie函数写法
查看>>
扫描pdf转换成excel软件
查看>>
一看你就懂,超详细java中的ClassLoader详解
查看>>
一个21点游戏的设计与实现
查看>>
DICOM医学图像处理:深入剖析Orthanc的SQLite,了解WADO & RESTful API
查看>>
Android SO库加载流程
查看>>