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 系列(二) 安装部署的更多相关文章

  1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明)

    系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...

  2. 二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web

    web proxy web1 web2   1.安装部署Tomcat服务器 web1 1.1 使用RPM安装JDK环境 ]# yum -y install java-1.8.0-openjdk ]# ...

  3. Windows Azure入门教学系列 (二):部署第一个Web Role程序

    本文是Windows Azure入门教学的第二篇文章. 在第一篇教学中,我们已经创建了第一个Web Role程序.在这篇教学中,我们将学习如何把该Web Role程序部署到云端. 注意:您需要购买Wi ...

  4. WordPress版微信小程序开发系列(二):安装使用问答

    自WordPress版微信小程序发布开源以来,受关注的程度超过我原来的想象.这套程序主要面对的用户是wordpress网站的站长,如果wordpress站想在微信的生态圈得到推广,小程序成为一种重要的 ...

  5. Sharepoint 2013 系列篇(安装部署)--上篇

    前言 sharepoint的部署是按照物理拓扑图的架构来部署,按照物理拓扑图架构分为一层拓扑图架构,二层拓扑图架构,三层拓扑图架构,多层拓扑图架构. 按照分层的拓扑图部署是按照需求来划分的,一层拓扑图 ...

  6. Kafka系列二之部署与使用

    Kafka部署与使用 写在前面 从上一篇Kafka的架构介绍和安装中,可能,你还一直很蒙,kafka到底该怎么使用呢?接下来,我们就来介绍Kafka的部署与使用.上篇文章中我们说到,Kafka的几个重 ...

  7. 阿里云CentOS7系列二 -- 安装Tomcat7的方法

    前面讲到了JDK在CentOS7 环境下的安装步骤.这次来分享安装Tomcat7的安装步骤: Tomcat7 安装包: 链接: http://pan.baidu.com/s/1geKwASN 密码: ...

  8. 随笔编号-11 阿里云CentOS7系列二 -- 安装Tomcat7的方法

    前面讲到了JDK在CentOS7 环境下的安装步骤.这次来分享安装Tomcat7的安装步骤: Tomcat7 安装包: 链接: http://pan.baidu.com/s/1geKwASN 密码: ...

  9. 【Android Studio安装部署系列】二十一、Android studio将项目上传到github中

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 两个相关概念:git和github Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git ...

随机推荐

  1. TMS320CC657基本外围电路调试

    一.本文内容 本文主要包含以下三个基本外围电路的调试过程与调试结果: 电源模块 时钟模块 复位模块 二.电源模块调试 无论对FPGA还是DSP而言,对电源的上电顺序都有一定的要求,且不同型号的器件对电 ...

  2. HDU 1222 Wolf and Rabbit(欧几里得)

    Wolf and Rabbit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  3. Java-Runoob-面向对象:Java 包(Package)

    ylbtech-Java-Runoob-面向对象:Java 包(Package) 1.返回顶部 1. Java 包(package) 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. ...

  4. ALSA声卡11_从零编写之调试——学习笔记

    1.调试 (1)把程序拷贝到服务器上进行编译 (2)把程序放到内核上面去 重新配置内核,吧原来的声卡驱动程序去掉 a. 修改语法错误 11th_myalsa b. 配置内核去掉原来的声卡驱动 -> ...

  5. node中express的中间件之basicAuth

    basicAuth中间件为网站添加身份认证功能.在使用了该中间件后, 用户访问网站时必须输入用户名与密码,在用户输入了用户名与密码并通过验证之后才能访问网站. 当用户输入的用户名和密码符合条件,中间件 ...

  6. Druid.io系列(八):部署

    介绍 前面几个章节对Druid的整体架构做了简单的说明,本文主要描述如何部署Druid的环境 Imply提供了一套完整的部署方式,包括依赖库,Druid,图形化的数据展示页面,SQL查询组件等.本文将 ...

  7. 关于alter database open resetlogs及incarnation的一点理解

    关于alter database open resetlogs及incarnation的一点理解 不完全恢复只能做一次吗? 采用rman的默认设置,对数据库进行了backup database备份,进 ...

  8. Cloudstack 安装记录

    一.条件要求 1.硬件支持虚拟化,并在BIOS中开启(Inter-VT设为 Enable). 2.Centos 6.5 x86_64 3.环境中的每台主机均为静态IP地址. 4.cloudstack安 ...

  9. ubuntu apt-get dpkg-scanpackages 制作本地软件源

    1. 收集软件,下载的软件都在/var/cache/apt/archives目录下 例如openstack L版的所有包 keystone,glance nova neutron....... 举例: ...

  10. 用PyMOL展示配体和受体相互作用的原子和氢键

    转载于 https://mp.weixin.qq.com/s/P62sjqhSTxmWVicrEAk-RQ 为了简化展示过程,我们设计了一个pml脚本 (脚本内有很详细的解释),只需要修改脚本里面受体 ...