Greeplum 系列(二) 安装部署
Greeplum 系列(二) 安装部署
本章将介绍如何快速安装部署 Greenplum,以及 Greenplum 的一些常用命令及工具。本章不会涉及硬件选型、操作系统参数讲解、机器性能测试等高级内容,这些会在 “第8章 Greenplum 线上环境部署” 中介绍。
2.1 软件安装及数据库初始化
下面先介绍如何搭建一个完整的 Greenplum 环境。在搭建环境之前,我们必须对 Greenplum 的架构有一定的了解,并且准备好安装部署的机器,机器硬件、操作系统的安装配置读者可自行完成。
2.1.1 Greenplum 架构
在安装数据库的时候,我们先要对 Greenplum 架构有一定的了解,这样可以对数据库的安装和使用起到一个指导性的作用。同时在搭建 Greenplum 环境的过程中,可以加深对 Grenplum 架构的理解。 Greenplum 总体架构构图如图 2-1 所示。

下面介绍每个部件的主要功能,如表 2-1 所示。
表 2-1 Master 主机与 Segment 主机对比
| Master 主机 | Segment 主机 |
|---|---|
| 建立与客户端的会话连接和管理 | 业务数据的存储和存取 |
| SQ L的解析并形成分布式的执行计划 | 执行由 Master分发的SQL语句 |
| 将生成好的执行计划分发到每个 Segment 上执行 | 对于 Master来说,每个 Segment都是对等的,负责对应数据的存储和计算 |
| 收集 Segment 的执行结果 | 每一台机器上可以配置一到多个 Segment |
| Master 不存储业务数据,只存储数据字典 | 由于每个 Segment 都是对等的,建议采用相同的机器配置 |
| Master主机可以一主一备,分布在两台机器上 | Segment 分 primary 和 mirror 两种,一般交错地存放在子节点上 |
| 为了提高性能,Master 最好单独占用一台机器 | ... |
通过图 2-2 可以看出 Master 与 Segment 的关系。

Master 和 Segment 其实都是一个单独的 PostgreSQL 数据库。每一个都有自己单独的套元数据字典,在这里, Master 节点一般也叫主节点, Segment 也叫做数据节点。
Segment 节点与 Master 节点的通信,通过千兆(或万兆)网卡组成的内部连接(InterConnect),在同一台数据节点机器上可以放多个 Segment,不同的 Segment 节点会被赋予不同的端口,同时, Segment 之间也不断地进行着交互。为了实现高可用,每个 Segment 都有对应的备节点( Mirror Segment),分别存在于不同的机器上。
Client 一般只能与 Master 节点进行交互, Client 将 SQL 发给 Master,然后 Master 对 SQL 进行分析后,再将其分配给所有的 Segment 进行操作,并且将汇总结果返回给客户端。
2.1.2 环境搭建
1. 安装 Linux
Greenplun 没有 Windows 版本,只能安装在类 UNIX 的操作系统上。
2. Greenplum 集群规划
| 节点 | IP | 内存 | 硬盘 |
|---|---|---|---|
| mdw | 192.168.2.101 | 512M | 8G |
| sdw1 | 192.168.2.102 | 512M | 8G |
| sdw2 | 192.168.2.103 | 512M | 8G |
机器对应的 Master 和 Segment 如下分配:192.168.2.101 作为 Master 节点,192.168.2.102~103 作为 Segment 节点,每个机器上配置两个 Primary Segment 和两个 Mirror Segment;同时 192.168.2.103 作为 Master Standy 节点。通过图 2-3 的架构图可以清晰地知道我们所搭建的集群的概况。
4. 网络(hosts)
在确定机器配置的时候,要保证所有机器的网络都是通的,并且每台机器的防火墙都是关闭的,避免存在网络不通的问题。
在配置 /etc/hosts 时,习惯将 Master 机器叫做 mdw,将 Segment 机器叫做做 sdw,配置好后,使用 ping 命令确定所有 hostname 都是通的。
5. 创建用用户及用户组
创建 gpadmin 用户及用户组,将其作为安装 Greenplum 的操作系统用户。
# 删除原有的用户组及用户
groupdel gpadmin
userdel gpadmin
# 添加 gpadmin 用户组和 gpadmin 用户
groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
# 对文件夹赋予权限,为 gpadmin 创建密码
chown -R gpadmin:gpadmin /home/gpadmin/
passwd gpadmin
2.1.3 Greenplum 系统设置
(1) 修改或添加 /etc/sysctl.conf
# for greeplumn
# 共享内存
xfs_mount_options = rw,noatime,inode64,allocsize=16m
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
vm.overcommit_memory = 2
(2) 配置 /etc/security/limits.conf 文件
# number of file 文件的软数量,表示读取文件的最小数
* soft nofile 65536
# number of file 文件的硬数量,表示读取文件的最大数
* hard nofile 65536
# number of process 线程数量
* soft nproc 131072
* hard nproc 131072
(3) 设置磁盘访问 I/O 调度策略
cat /sys/block/sda/queue/scheduler
echo deadline > /sys/block/sda/queue/scheduler
echo deadline > /sys/block/fd0/queue/scheduler
echo deadline > /sys/block/hdc/queue/scheduler
(4) 设置预读块的值为 16384
/sbin/blockdev --getra /dev/sda
/sbin/blockdev --setra 16384 /dev/sda
/sbin/blockdev --setra 16384 /dev/sda1
/sbin/blockdev --setra 16384 /dev/sda2
/sbin/blockdev --setra 16384 /dev/sda3
2.1.4 Greenplum 安装
Greenplum 下载地址: https://network.pivotal.io/products/pivotal-gpdb,选择 Database Server/Greenplum Data Computing Appliance Database Installer 下载。
注意:下载 Greenplum 前需要先注册帐号,如果还不能下载可以将国家设置为国外(如Australia),这里以 greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.zip 为例。
(1) 解压
tar -zxvf greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.zip
# 解压后的文件
greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.bin
(2) 配置 hostfile 和 seg_hosts
配置 hostfile 文件,将所有的服务器名记录在里面。
vim hostfile
mdw
sdw1
sdw2
seg_hosts 只保存 segment 节点的 hostname
vim seg_hosts
sdw1
sdw2
(3) 执行 greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.bin
./greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.bin
# gpseginstall -f hostlist -u gpadmin -p gpadmin
======================================================================
Greenplum DB
Appliance Automated Installer
----------------------------------------------------------------------
Timestamp ......... : 2018年 05月 27日 星期日 21:17:41 CST
Product Installer.. : greenplum-db-appliance-4.3.9.0-build-1-RHEL5-x86_64.bin
Product Version ... : 4.3.9.0
Build Number ...... :
Install Dir ....... : /usr/local/GP-4.3.9.0
Install Log file .. : /home/gpadmin/install-270518-211741.log
======================================================================
Creating /usr/local/GP-4.3.9.0
======================================================================
Executing Post Appliance Installation Steps
======================================================================
Executing: source /usr/local/GP-4.3.9.0/greenplum_path.sh
Executing: gpseginstall --file hostfile -c csv 2>&1 | tee -a /home/gpadmin/install-270518-211741.log
20180527:21:19:23:002348 gpseginstall:mdw:root-[INFO]:-Installation Info:
link_name greenplum-db
binary_path /usr/local/GP-4.3.9.0
binary_dir_location /usr/local
binary_dir_name GP-4.3.9.0
20180527:21:19:24:002348 gpseginstall:mdw:root-[INFO]:-check cluster password access
*** Enter password for mdw:
20180527:21:19:43:002348 gpseginstall:mdw:root-[INFO]:-de-duplicate hostnames
20180527:21:19:43:002348 gpseginstall:mdw:root-[INFO]:-master hostname: mdw
20180527:21:19:46:002348 gpseginstall:mdw:root-[INFO]:-chown -R gpadmin:gpadmin /usr/local/greenplum-db
20180527:21:19:46:002348 gpseginstall:mdw:root-[INFO]:-chown -R gpadmin:gpadmin /usr/local/GP-4.3.9.0
20180527:21:19:46:002348 gpseginstall:mdw:root-[INFO]:-rm -f /usr/local/GP-4.3.9.0.tar; rm -f /usr/local/GP-4.3.9.0.tar.gz
20180527:21:19:46:002348 gpseginstall:mdw:root-[INFO]:-cd /usr/local; tar cf GP-4.3.9.0.tar GP-4.3.9.0
20180527:21:20:31:002348 gpseginstall:mdw:root-[INFO]:-gzip /usr/local/GP-4.3.9.0.tar
20180527:21:21:17:002348 gpseginstall:mdw:root-[INFO]:-remote command: mkdir -p /usr/local
20180527:21:21:19:002348 gpseginstall:mdw:root-[INFO]:-remote command: rm -rf /usr/local/GP-4.3.9.0
20180527:21:21:21:002348 gpseginstall:mdw:root-[INFO]:-scp software to remote location
The authenticity of host 'sdw1 (192.168.2.111)' can't be established.
ECDSA key fingerprint is SHA256:zAKx3UqfrW3J3ecDEkD63Men1RpLv59ZDJyicvFvlag.
ECDSA key fingerprint is MD5:bd:66:a8:94:98:d5:0b:f3:bc:e9:5c:41:4c:ca:b3:d4.
Are you sure you want to continue connecting (yes/no)? The authenticity of host 'sdw2 (192.168.2.112)' can't be established.
ECDSA key fingerprint is SHA256:zAKx3UqfrW3J3ecDEkD63Men1RpLv59ZDJyicvFvlag.
ECDSA key fingerprint is MD5:bd:66:a8:94:98:d5:0b:f3:bc:e9:5c:41:4c:ca:b3:d4.
Are you sure you want to continue connecting (yes/no)? yes
root@sdw1's password: Please type 'yes' or 'no':
Please type 'yes' or 'no':
root@sdw2's password:
20180527:21:23:30:002348 gpseginstall:mdw:root-[INFO]:-remote command: gzip -f -d /usr/local/GP-4.3.9.0.tar.gz
20180527:21:27:00:002348 gpseginstall:mdw:root-[INFO]:-md5 check on remote location
20180527:21:27:26:002348 gpseginstall:mdw:root-[INFO]:-remote command: cd /usr/local; tar xf GP-4.3.9.0.tar
20180527:21:29:13:002348 gpseginstall:mdw:root-[INFO]:-remote command: rm -f /usr/local/GP-4.3.9.0.tar
20180527:21:29:25:002348 gpseginstall:mdw:root-[INFO]:-remote command: cd /usr/local; rm -f greenplum-db; ln -fs GP-4.3.9.0 greenplum-db
20180527:21:29:27:002348 gpseginstall:mdw:root-[INFO]:-remote command: chown -R gpadmin:gpadmin /usr/local/greenplum-db
20180527:21:29:29:002348 gpseginstall:mdw:root-[INFO]:-remote command: chown -R gpadmin:gpadmin /usr/local/GP-4.3.9.0
20180527:21:29:31:002348 gpseginstall:mdw:root-[INFO]:-rm -f /usr/local/GP-4.3.9.0.tar.gz
20180527:21:29:34:002348 gpseginstall:mdw:root-[INFO]:-version string on master: gpssh version 4.3.9.0 build 1
20180527:21:29:34:002348 gpseginstall:mdw:root-[INFO]:-remote command: . /usr/local/greenplum-db/./greenplum_path.sh; /usr/local/greenplum-db/./bin/gpssh --version
20180527:21:29:39:002348 gpseginstall:mdw:root-[INFO]:-remote command: . /usr/local/GP-4.3.9.0/greenplum_path.sh; /usr/local/GP-4.3.9.0/bin/gpssh --version
20180527:21:29:46:002348 gpseginstall:mdw:root-[INFO]:-SUCCESS -- Requested commands completed
======================================================================
Installation complete
======================================================================
安装结果 /usr/local/greenplum-db
greeplum_path.sh: Greenplum 数据库环境变量文件
GPDB-LICENSE.txt: Greenplum许可协议
bin: 管理工具、客丿户端程序及服务程序
demo: 示例程序
docs: 帮助文档
etc: Openssl的配置示例
ext: 一此 GP 工具使用的捆绑程序
inlcude: C 头文件
lib: 库文件
sbin: 支持的或者内部的脚本和程序
share: 共享文件
2.1.5 Greenplum 初始化配置
(1) 获取环境变量
source /usr/local/greenplum-db/greenplum_path.sh
# 查看环境变量
env
(2) 验证安装
a) 切换到 gpadmin 用户并获取环境变量
su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh
b) 使用 gpssh 工具来测试无密码登录所有主机
gpssh-exkeys -f hostfile
gpssh -f hostfile -e ls -l $GPHOME # 在 hostfile 主机上批量执行 ls -l $GPHOME
c) 编辑 /home/gpadmin/.bashrc 文件
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/mirror/gpseg-1
export PGDATABASE=test
(3) 创建存储区域
mkdir -p /data/master
mkdir -p /data/primary
mkdir -p /data/mirror
chown gpadmin:gpadmin /data/master
chown gpadmin:gpadmin /data/primary
chown gpadmin:gpadmin /data/mirror
a) 创建 Master 数据存储区域
mkdir -p /data/master
chown gpadmin:gpadmin /data/master
b) 创建一个包含所有 segment 主机的文件 seg_hosts 文件内容
sdw1
sdw2
c) 使用 gpssh 工具在所有 segment 主机上创建主数据和镜像数据目录
gpssh -f seg_hosts -e 'mkdir -p /data/primary'
gpssh -f seg_hosts -e 'mkdir -p /data/mirror'
gpssh -f seg_hosts -e 'chown gpadmin:gpadmin /data/primary'
gpssh -f seg_hosts -e 'chown gpadmin:gpadmin /data/mirror'
(4) 同步系统时间
a) 在 Master 主机上编辑 /etc/ntp.conf 来设置如下内容:
server 127.127.1.0
b) 在 Segment 主机上编辑 /etc/ntp.conf
server mdw
c) 在 Master 主机上,通过 NTP 守护进程同步系统时钟
gpssh -f hostfile -v -e 'ntpd'
(5) 验证操作系统设置
gpcheck -f hostfile -m mdw
(6) 创建 Greenplun 数据库配置文件
a) 以 gpadmin 用户登录
su - gpadmin
b) 从模板中拷贝一份 gpinitsystem_config 文件
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/
c) 必须配置的参数
# 数据库的代号
ARRAY_NAME="EMC Greenplum DW"
# segment 的名称前缀
SEG_PREFIX=gpseg
# Primary Segment 起始的端口号
PORT_BASE=40000
# 指定 Primary Segment 的数据目录
declare -a DATA_DIRECTORY=(/data1/primary /data1/primary /data1/primary /data2/primary /data2/primary /data2/primary)
# Master 所在机器的 Hostname
MASTER_HOSTNAME=mdw
# 指定 Master 的数据目录
MASTER_DIRECTORY=/data/master
# Master 的端口
MASTER_PORT=5432
# 指定 Bash 的版本
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
# 字符集
ENCODING=UNICODE
d) 可选配置的参数,针对镜像的配置
# Mirror Segment 起始的端口号
MIRROR_PORT_BASE=50000
# Mirror Segment 主备同步的起始端口号
REPLICATION_PORT_BASE=41000
# Primary Segment 主备同步的起始端口号
MIRROR_REPLICATION_PORT_BASE=51000
# Mirror Segment 数据目录
declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror)
(7) 初始化数据库
a) 运行初始化工具
cp /tmp/greenplum/seg_hosts
gpinitsystem -c gpinitsystem_config -h seg_hosts
# 成功后提示如下
Greenplum Database instance successfully created
b) 设置环境变量
添加“export MASTER_DATA_DIRECTORY=/data/master/gpseg-1"到 ~/bashrc 文件尾,并同步到其他节点。
scp .bashrc sdw1:`pwd`
scp .bashrc sdw2:`pwd`
(8) 启动和停止数据库
a) 启动数据库
gpstart -a
b) 关闭数据库
gpstop
踩过的坑
问题1:执行 gpinitsystem 时报错:-Failed Update port number to 40000
20180528:20:44:58:gpinitsystem:mdw:gpadmin-[FATAL][0]:-Failed Update port number to 40000
解决方案:
主要原因是它是 Greenplum 用 ed 编辑器(很古老的 linux 编辑器)来操作文件的,需要先在所有节点安装才行
yum install -y ed
问题2:执行 gpstart -a 时报错:-Failed to retrieve rolname. Script Exiting!
20180528:20:44:58:gpinitsystem:mdw:gpadmin-[FATAL]:-Failed to retrieve rolname. Script Exiting!
解决方案:
防火墙没关,关闭防火墙后重启 gpstart -a
service firewalld stop
systemctl disable firewalld
问题3:执行 yum 时报错:ImportError: No module named site
[gpadmin@mdw ~]$ yum
ImportError: No module named site
原因:切换到 gpadmin 的环境后,会修改 PYTHONHOME=/usr/local/greenplum-db/./ext/python 的值,在 root 帐户下执行 yum 即可。
问题4:启动 gpstart -a 时报错:PID file "/data/master/gpseg-1/postmaster.pid" does not exist
pg_hba.conf 配置错误
每天用心记录一点点。内容也许不重要,但习惯很重要!
Greeplum 系列(二) 安装部署的更多相关文章
- 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明)
系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...
- 二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web
web proxy web1 web2 1.安装部署Tomcat服务器 web1 1.1 使用RPM安装JDK环境 ]# yum -y install java-1.8.0-openjdk ]# ...
- Windows Azure入门教学系列 (二):部署第一个Web Role程序
本文是Windows Azure入门教学的第二篇文章. 在第一篇教学中,我们已经创建了第一个Web Role程序.在这篇教学中,我们将学习如何把该Web Role程序部署到云端. 注意:您需要购买Wi ...
- WordPress版微信小程序开发系列(二):安装使用问答
自WordPress版微信小程序发布开源以来,受关注的程度超过我原来的想象.这套程序主要面对的用户是wordpress网站的站长,如果wordpress站想在微信的生态圈得到推广,小程序成为一种重要的 ...
- Sharepoint 2013 系列篇(安装部署)--上篇
前言 sharepoint的部署是按照物理拓扑图的架构来部署,按照物理拓扑图架构分为一层拓扑图架构,二层拓扑图架构,三层拓扑图架构,多层拓扑图架构. 按照分层的拓扑图部署是按照需求来划分的,一层拓扑图 ...
- Kafka系列二之部署与使用
Kafka部署与使用 写在前面 从上一篇Kafka的架构介绍和安装中,可能,你还一直很蒙,kafka到底该怎么使用呢?接下来,我们就来介绍Kafka的部署与使用.上篇文章中我们说到,Kafka的几个重 ...
- 阿里云CentOS7系列二 -- 安装Tomcat7的方法
前面讲到了JDK在CentOS7 环境下的安装步骤.这次来分享安装Tomcat7的安装步骤: Tomcat7 安装包: 链接: http://pan.baidu.com/s/1geKwASN 密码: ...
- 随笔编号-11 阿里云CentOS7系列二 -- 安装Tomcat7的方法
前面讲到了JDK在CentOS7 环境下的安装步骤.这次来分享安装Tomcat7的安装步骤: Tomcat7 安装包: 链接: http://pan.baidu.com/s/1geKwASN 密码: ...
- 【Android Studio安装部署系列】二十一、Android studio将项目上传到github中
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 两个相关概念:git和github Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git ...
随机推荐
- 关于硬件实现FFT逆运算
前面的文章我们介绍了关于FFT的硬件实现.关于FFT的逆运算IFFT,其实就是将实现FFT的过程反过来执行就可以了. 在实现过程中要注意很多问题. 同 FFT一样,效率问题.以2048点为例,根据理论 ...
- FPGA与DSP简单比较
FPGA与DSP比较 两者的优势不一样.在硬件层面,DSP是ASIC,如同CPU GPU一样,适宜于量产降低成本,缺点是(硬件)设计一旦确定,便不易于修改. 而FPGA较灵活,可以通过硬件描述语言进行 ...
- (转)Inno Setup入门(六)——在程序目录下创建文件夹
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250789 创建文件夹可以使用[dirs]段实现,代码如下: [s ...
- zookeeper基本讲解(Java版,真心不错)
1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...
- 升级oracle 9i到10g
从9i升级到10g两个方案可供选择: 一是利用oracle提供的一个升级实用程序dbua(database upgrade assistant)直接将9i的数据库升级到10g. 再有就是新建一个1 ...
- Java 编译???
如果是在命令行下,编译就是 javac a.java 如果有错误,那么命令运行之后会显示错误 但是在eclipse下,我都是直接点击运行按钮的,如果有错误,在编程是就提示了,那么是怎么编译的呀 大的工 ...
- MyBatis单个参数的动态语句引用
参考:http://blog.csdn.net/viviju1989/article/details/17071909 是当我们的参数为String时,在sql语句中#{name} 会去我们传进来的参 ...
- Fiddler监控面板显示ServerIP栏(Fiddler v5.0)
Fiddler监控面板默认没有ServerIP这一栏,添加此栏方法如下: 1.点击Rules下的Customize Rules.js,会打开Fiddler ScriptEditor 2.在脚本中添加对 ...
- .net Reactor之exe、dll文件混淆
.net Reactor之exe.dll文件混淆 .net Reactor的主要功能: 1.是对dll文件.exe文件进行反编译混淆 2.对dll进行内部加锁,限制其使用的固定机器.固定时间.部署次数 ...
- Eclipse weblogic 中文乱码问题解决办法