暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

收藏版!手把手教你搭建 Greenplum 6.1 集群

原创 murkey 2020-05-08
1975

收藏版!手把手教你搭建 Greenplum 6.1 集群

[TOC]

随着Greenplum大数据平台正式进入6时代,Greenplum 新版本在功能和性能上都实现大幅度地提升。Greenplum 用户麦煜遥将在本文详细介绍如何在Linux上搭建Greenplum 6.1集群。

1 安装说明

1.1 环境说明

操作系统: CentOS release 6.6

数据库: Greenplum 6.1

辅助工具: Winscp, Putty

Winscp: 以root权限登录,远程连接Linux修改文档内容。Putty: 远程连接Linux运行命令。

1.2 参考安装教程

• Greenplum 5 <Greenplum 企业应用实战> 何勇,陈晓峰

• Greenplum 6 官网

https://gpdb.docs.pivotal.io/6-1/install_guide/prep_os.html#topic1

1.3 Greenplum 6.1 下载

https://github.com/greenplum-db/gpdb/releases/tag/6.1.0

备注:Greenplum 6.1 安装有两种方法:

一是,下载源码,本地编译、安装;

二是,直接下载编译好的包安装。

这里选择的是,下载编译好的包安装,对于POC来讲,比较节省时间。
复制

1.4 集群介绍

我搭建的 Greenplum 集群,使用1个 Master ,3个 Segment 的集群,如下:

192.168.xxx.1 Master
192.168.xxx.3 Segment
192.168.xxx.4 Segment
192.168.xxx.5 Segment

备注:192.168.xxx.2 是 ETL 的 Pentaho 服务器,后面用来做测试的,没有在此列。

1.5 Master 与 Segment 职责对比

Master:

(1) 建立与客户端的回话连接和管理

(2) SQL的解析并形成分布式的执行计划

(3) 将生成好的执行计划分发到每个 Segment 上执行

(4) 收集 Segment 的执行结果

(5) Master 不存储业务数据,只存储数据字典

(6) Master 主机可以一主一备,分布在两台机器上

(7) 为了提高性能, Master 最好单独占用一台机器

Segment:

(1) 业务数据的存储和存取

(2) 执行 Master 分发的 SQL 语句

(3) 对于 Master 来讲,每个 Segment 都是对等的,负责对应数据的存储和计算

(4) 每一台机器上可以配置一到多个 Segment

(5) 由于每个 Segment 都是对等的,建议采用相同的机器配置

(6) Segment 分 primary 和 mirror 两种,一般交错的存放在子节点上。

2.安装环境准备

2.1 关闭SELINUX (4台)

• /etc/selinux/config

SELINUX=disabled
复制

备注:关闭后,就不用再开启,也不需要reboot。另外,用 Winscp 去编辑文档,比在命令环境方便多了。

2.2 关闭防火墙 (4台)

配置的时候,要保证所有的机器的网络都是通的,并且每台机器的防火墙都是关闭的,避免存在网络不通的情况。

  • 查看防火墙状态

service iptables status

  • 关闭防火墙

service iptables stop

  • 永久关闭防火墙

chkconfig iptables off
备注:CentOS 6的命令是iptables,和CentOS 7不同。防火墙关闭后,就不用再开启。

2.3 配置/etc/hosts (4台)

主要是为之后 Greenplum 能够在各个节点之间相互通信做准备。习惯将 Master 叫 mdw,Segment 叫 sdw 。4台都要设置:

192.168.xxx.1 (主机名) mdw
192.168.xxx.3 (主机名) sdw1
192.168.xxx.4 (主机名) sdw2
192.168.xxx.5 (主机名) sdw3

备注:hosts文件是Linux系统中负责ip地址与域名快速解析的文件,我这台DEV服务器装了很多东西,主机名已经配置了。所以,mdw只是一个主机的别名,不影响程序去查找IP。

如果你想知道添加是否成功,ping一下即可:

2.4 修改内核配置参数 (4台)

• /etc/sysctl.conf (这是官网贴的配置,上面有说明)

kernel.shmall = 4000000000 kernel.shmmax = 500000000 kernel.shmmni = 4096 vm.overcommit_memory = 2 vm.overcommit_ratio = 95 net.ipv4.ip_local_port_range = 10000 65535 kernel.sem = 500 2048000 200 40960 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.arp_filter = 1 net.core.netdev_max_backlog = 10000 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 vm.swappiness = 10 vm.zone_reclaim_mode = 0 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 vm.dirty_background_ratio = 0 vm.dirty_ratio = 0 vm.dirty_background_bytes = 1610612736 vm.dirty_bytes = 4294967296 ————————————————
复制

• 执行命令使之生效

sysctl -p

2.5 配置资源限制参数 (4台)

• /etc/security/limits.conf

  • soft nofile 524288

  • hard nofile 524288

  • soft nproc 131072

  • hard nproc 131072

2.6 创建用户和用户组 (4台)

创建 gpadmin 用户及用户组,将其作为安装 greenplum 的操作系统用户。

• 如果已经存在,先删除

groupdel gpadmin
userdel gpadmin
1
• 创建新的用户和用户组

groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
1
• 对文件夹进行赋权,为新用户创建密码

chown -R gpadmin:gpadmin /home/gpadmin/
passwd gpadmin
1

备注:密码提示太简单,连续输入两次即可。

2.7 创建安装目录,并赋权限 (4台)

mkdir /usr/local/greenplum
chown -R gpadmin:gpadmin /usr/local/greenplum/
1
备注:

• greenplum 5的书本提示安装在/opt,greenplum 6 装在/usr/local 。

• /opt一般是安装系统后用户自己安装的其他应用软件,一般是源码包的软件、大型软件、或者是一些服务程序的安装目录。

• /usr 一般是安装软件的目录,这个目录就相当于在 windows 下的 Program Files 目录。因为我是POC,无所谓,所以装在 /usr/local 。
复制

3 安装 Greenplum DB - Master

3.1 准备好安装文件

拷贝至 Master 主节点 /usr/local/greenplum 目录下 (其实可以放置在随意的目录)

3.2 安装

• 执行命令安装

cd /usr/local/greenplum
yum install greenplum-db-6.1.0-rhel6-x86_64.rpm

自动安装依赖,没有要求输入安装路径,自动安装到 /usr/local。

备注:greenplum 5 是用rpm命令的,而greenplum 6 则用 yum install 直接安装依赖。生成的文件夹如下,并自动创建软连接。

• 赋权限

因为我是用root权限安装的,所以Owner是root,要把Owner换成gpadmin,否则gpadmin无权操作该目录的文件。

chown -R gpadmin:gpadmin /usr/local/greenplum*

• 应用环境变量

安装完成后,greenplum的环境变量,已经在 greenplum_path.sh 中设置了,这里需要应用一下变量。用 gpadmin 用户,登录到 master host:

su gpadmin
source /usr/local/greenplum-db-6.1.0/greenplum_path.sh

4安装 Greenplum DB - Segment

4.1 Enabling Passwordless SSH (免密登录)

Master,Segment之间是通过SSH连接登录的,SSH登录有2种方式:密码,Host key。当然还可以两个都验证。但是,在服务器之间不可能每次都输入密码,所以我们只需要用Host key 登录即可。

• 创建公私钥对 (4台)

我的Linux还没有公私钥对,所以,要先生成一个。生成时不要输入密码,否则还要用密码打开key。注意,我的登录用户是gpadmin。

ssh-keygen -t rsa

选择生成的位置是 /home/gpadmin/.ssh/id_rsa,是私钥。另外,还会产生一个公钥 id_rsa.pub,生成如下:

• 添加信任其他机器的Host key (4 台)

ssh-copy-id mdw
ssh-copy-id sdw1
ssh-copy-id sdw2
ssh-copy-id sdw3

在集群的每一台使用 ssh-copy-id 命令,把 gpadmin 的 public key 拷到 known_hosts。这样,集群的机器互相访问就是通过这个设定互相信任的。(其实,个人觉得known_hosts是不需要放本机的key,放其他的机器key即可。而authorized_keys里面放的是本机的key。)

• 创建 hostlist,seg_hosts (Master)

目录/home/gpadmin/conf,再分别创建hostlist,seg_hosts 。我这里 hostlist 中填写所有节点的主机别名,seg_hosts 中填写所有Segment 的主机别名。

mkdir /home/gpadmin/conf
cd /home/gpadmin/conf
touch hostlist
touch seg_hosts

然后,我喜欢使用winscp去修改内容:

4.2 使用 gpssh-exkeys 打通所有服务器 (Master)

• 使用 gpssh-exkeys 将所有机器的通道打开,这样在每台机器之间跳转,就不需要输入密码。

cd /home/gpadmin/conf
gpssh-exkeys -f hostlist

• 在打通所有机器通道之后,我们就可以使用 gpssh 命令对所有机器进行批量操作了。

gpssh -f hostlist

备注:这是一个神奇的功能,原来我接触的集群部署,需要运行 SCP 远程拷贝命令。如果有100台,就需要操作100次。但是,这里只需要操作一次,就完成到全部集群的操作,前面带 “=>”,exit 退出。

4.3 分发数据库文件

• 打包

cd /usr/local
tar -cf gp6.tar greenplum-db-6.1.0/
chown -R gpadmin:gpadmin /usr/local/gp6.tar

打包的时候权限不够,我换成root,然后再把.tar的权限还给gpadmin。

最后,要用gpadmin操作,因为前面设置了gpadmin免密。

• 分发

gpscp -f /home/gpadmin/conf/hostlist gp6.tar =:/usr/local/greenplum

官网没有这部分的说明,书上看到用的是 hostlist 作为参数去操作。但是 hostlist 里面的是配置包括 master 的主机别名,所以,主机到主机也复制了一份。

书上的用意应该是,把 greenplum-db-6.1.0 放进 greenplum 里面,外面那套greenplum重复了,就删掉。然后,4台机器都在同一个目录下。

• 解压

在master上运行,一台上敲命令,操作4台。

gpssh -f /home/gpadmin/conf/hostlist
=> cd /usr/local/greenplum
=> tar -xf gp6.tar
=> ln -s greenplum-db-6.1.0 greenplum-db

最后,退出。

5.环境配置

5.1 创建数据存储空间

以上安装的是程序,接下来要创建数据存储空间 。

• Master

Master 不存储 user data,仅有 system catalog tables 和 system metadata ,我这里没有 Standby Master。所以,只在 Master 创建一个目录即可。

mkdir -p /home/gpadmin/data/master

• Segment

数据存储在Segment 中,并且需要 primary segments 和 mirror segments,其余3台segment 用 gpssh分别创建2个目录。

source /usr/local/greenplum-db/greenplum_path.sh
gpssh -f /home/gpadmin/conf/seg_hosts -e ‘mkdir -p /home/gpadmin/data/primary’
gpssh -f /home/gpadmin/conf/seg_hosts -e ‘mkdir -p /home/gpadmin/data/mirror’

5.2 配置 .bash_profile 环境变量

• /home/gpadmin/.bash_profile, 网上没有确切说要配置几台,我4台都配置了。

source /usr/local/greenplum/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/data/master/gpseg-1
export PGPORT=5432
export PGUSER=testDB

其中,greenplum_path.sh中包括greenplun运行的一些环境变量设置,包GPHOME等,因为安装后把位置改了,4台都修正之。

• 使之生效

source /home/gpadmin/.bash_profile

5.3 初始化配置文件

• configuration file

模板在:$GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config,拷贝过来。

mkdir /home/gpadmin/gpconfigs
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
#数据库代号
ARRAY_NAME=“Greenplum”

#segment前缀
SEG_PREFIX=gpseg

#primary segment 起始的端口号
PORT_BASE=33000

#指定primary segment的数据目录,网上写的是多个相同目录,多个目录表示一台机器有多个segment
declare -a DATA_DIRECTORY=(/home/gpadmin/data/primary)

#master所在机器的host name
MASTER_HOSTNAME=mdw

#master的数据目录
MASTER_DIRECTORY=/home/gpadmin/data/master

#master的端口
MASTER_PORT=5432

#指定bash的版本
TRUSTED_SHELL=/usr/bin/ssh

#将日志写入磁盘的间隔,每个段文件通常 =16MB < 2 * CHECK_POINT_SEGMENTS + 1
CHECK_POINT_SEGMENTS=8

#字符集
ENCODING=UNICODE

#mirror segment 起始的端口号
MIRROR_PORT_BASE=44000

mirror的数据目录,和主数据一样,一个对一个,多个对多个

declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/data/mirror)

• host file

6 初始化数据库

6.1 安装

cd ~
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem
1
期间会提示,是否继续,输入y即可:

• 以上提示安装失败

• 查看日志,排查异常

[FATAL]:-Not on original master host Master, backout script exiting!
解决:不使用这个脚本清理中间数据,按照backout里面的步骤一个个删除。
1
• 经历过很多次失败,最后成功了,也忘记怎么过来的。可能是我在gpadmin和root之间频繁切换,要Source 环境变量,反正网上都可以搜到答案。

7 使用数据库

7.1 psql 登录数据库

psql -d postgres

• 创建数据库

命令集参考文档如下:

https://gpdb.docs.pivotal.io/6-1/ref_guide/sql_commands/sql_ref.html

\q 退出
\l 显示数据库列表

7.2 允许外部登录

• navicat登录

结果报错,因为greenplum有权限控制,并不是所有的机器都可以连接到数据库。需要在pg_hba.conf文件增加客户端机器的权限。

• 先给gpadmin创建一个密码:

testdb=# alter role gpadmin with password ‘gpadmin’;
ALTER ROLE
1
• 在Linux,我们可以用命令快速查找一个文件:

[root@ ~]# find / -type f -name pg_hba.conf
/home/gpadmin/data/master/gpseg-1/pg_hba.conf
1

• 因为是POC,我开通全网可以直接访问全部数据库。

连接方式 连接的数据库 连接的用户 连接的主机IP 认证方式
host all gpadmin 192.168.0.0/16 trust
1
• 刷新

pg_ctl reload -D /home/gpadmin/data/master/gpseg-1
备注:官网说的 gpstop -u 可以刷新 postgresql.conf 和 pg_hba.conf 但不重启 Greenplum Database,其实是不行的,我一直改pg_hba.conf,一直报错。

• navicat登录

大功告成!

7.3 其他greenplum命令

• 关闭

gpstop
• 启动

gpstart
• 状态查看

gpstate
• 其他

https://gpdb.docs.pivotal.io/6-1/utility_guide/ref/gpstate.html

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

TA的专栏
Murkey的Oracle回顾之旅
收录49篇内容
Murkey的Tidb学习之旅
收录6篇内容
目录
  • 收藏版!手把手教你搭建 Greenplum 6.1 集群
  • 1 安装说明
    • 1.1 环境说明
    • 1.2 参考安装教程
    • 1.3 Greenplum 6.1 下载
    • 1.4 集群介绍
    • 1.5 Master 与 Segment 职责对比
  • 2.安装环境准备
    • 2.1 关闭SELINUX (4台)
    • 2.2 关闭防火墙 (4台)
    • 2.3 配置/etc/hosts (4台)
    • 2.4 修改内核配置参数 (4台)
    • 2.5 配置资源限制参数 (4台)
    • 2.6 创建用户和用户组 (4台)
    • 2.7 创建安装目录,并赋权限 (4台)
  • 3 安装 Greenplum DB - Master
    • 3.1 准备好安装文件
    • 3.2 安装
  • 4安装 Greenplum DB - Segment
    • 4.1 Enabling Passwordless SSH (免密登录)
    • 4.2 使用 gpssh-exkeys 打通所有服务器 (Master)
    • 4.3 分发数据库文件
  • 5.环境配置
    • 5.1 创建数据存储空间
    • 5.2 配置 .bash_profile 环境变量
      • 5.3 初始化配置文件
  • 6 初始化数据库
    • 6.1 安装
  • 7 使用数据库
    • 7.1 psql 登录数据库
    • 7.2 允许外部登录
    • 7.3 其他greenplum命令