一、Greenplum支持的操作系统
SuSE Linux SLES 10 update
CentOS 5.0 or higher
RedHat Enterprise Linux 5.0 or higher
Mac OS 10.5 or higher
本教程的系统是CentOS 6.5,用了3台1核1G内存的虚拟机,一台用作master,两台用于segment。除了Mac OS 的配置有所区别,其他的系统可以参照本文进行部属。
强烈建议:每台虚拟机创建时使用gpadmin作为用户名,centos语言选择英语!!!
二、参数调整
在每台虚拟机中调整如下参数:
1)编辑/etc/sysctl.conf
kernel.shmall = 4000000000
net.ipv4.tcp_max_syn_backlog = 4096
vm.overcommit_memory = 2
net.core.netdev_max_backlog = 10000
kernel.sem = 250 64000 100 512
net.ipv4.ip_local_port_range = 1025 65535
net.ipv4.tcp_tw_recycle = 1
2)修改文件打开数限制
编辑/etc/security/limits.conf,添加
* soft nofile 65536
* hard nofile 65536
编辑/etc/security/limits.d/90-nproc.conf,添加
* soft nproc 131072
* hard nproc 131072
3)安装前关闭防火墙
使用/sbin/chkconfig iptables off命令关闭
使用/sbin/chkconfig –list iptables查看防火墙状态,全部为off即可
修改/etc/selinux/config 文件
SELINUX=disabled
4)编辑/boot/grub/grub.conf
添加elevator=deadline
三、GP源码编译安装
1)下载greenplum源码
访问https://github.com/greenplum-db/gpdb下载ZIP压缩包
使用unzip指令或者直接右键解压到/home/gpadmin目录下,会生成gpdb-master文件夹
2)下载依赖项
执行以下几条命令,中间选择yes安装完成即可
$ sudo yum -y install rsync coreutils glib2 lrzsz sysstat e4fsprogs xfsprogs ntp readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make smartmontools flex bison perl perl-devel perl-ExtUtils* OpenIPMI-tools openldap openldap-devel logrotategcc-c++ python-py curl-devel pam
$ sudo yum install apr-devel libevent-devel libyaml-devel
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo pip install psi lockfile paramiko setuptools epydoc
$ sudo pip install --upgrade setuptools
(注:安装pip因系统原因可能会失败,可以百度其他方法完成安装)
3)编译安装
进入到刚才解压的目录/home/gpadmin/gpdb-master,通过prefix命令指定目录,这里我们安装在/home/gpadmin/gpsql下
$ ./configure--prefix=/home/gpadmin/gpsql --with-gssapi --with-pgport=5432--with-libedit-preferred --with-perl --with-python --with-openssl --with-pam--with-krb5 --with-ldap --with-libxml --enable-cassert --enable-debug --enable-testutils--enable-debugbreak --enable-depend
$ make
$ make install
安装完成会在/home/gpadmin/gpsql中生成数据库文件
4)检查一下文件所有者确保gpsql文件的所有者是gpadmin,如果不是可以通过以下命令修改(如果管理员即为gpadmin则可跳过该步)
$ ls -l #查看文件权限和所有者
$ chown -R gpadmin/home/gpadmin/gpsql
$ chgrp -R gpadmin/home/gpadmin/gpsql
5)配置环境变量
参照/home/gpadmin/gpsql/greenplum_path.sh配置环境变量,使用
$ vi /etc/profile添加
source /home/gpadmin/gpsql/greenpum_path.sh
6)这是master主机的数据目录,指定数据存储位置
$ mkdir /home/gpadmin/gpmaster
然后修改环境变量指定该位置,在gpadmin用户下
$ sudo vi ~/.bashrc
在末尾添加
MASTER_DATA_DIRECTORY=/home/gpadmin/gpmaster/gpseg-1
export MASTER_DATA_DIRECTORY
保存退出之后记得source ~/.bashrc
四、在各个区段安装gp
可以在每台机器上采用和主机master一样的安装方法,这样的话机器一多了就很麻烦,在此就不介 绍这种方法了;我们直接通过master主机对每台segment安装GP。
(1)对每台主机修改主机名(这个步骤我是单独到每台机器上去修改的):
修改主机名要在两个地方做修改:
a. /etc/hosts文件下:
$ vi /etc/hosts
将行:127.0.0.1 localhost localhost.localdomainlocalhost4 localhost4.localdomain4
改为: 127.0.0.1 localhost sdw1 localhost4 localhost4.localdomain4
(这里的sdw1表示segment1节点,其他机器类似,这里主节点叫mdw)
b./etc/sysconfig/network
$ vi /etc/sysconfig/network
修改HOSTNAME=mdw,如果是segment节点则为sdw1、sdw2…
2)在主节点中添加对应Segment服务器的IP与主机名
$ vi /etc/hosts
在末尾添加如下内容
主节点IP 主节点名
从节点IP 从节点名
从节点IP 从节点名
如图所示:
修改生效之后,主机名会变成mdw或者sdw1、sdw2
3)在/home/gpadmin目录下新建两个文件新建一个all_hosts文本和一个all_segs文本,编辑内容:
对all_hosts:
mdw
sdw1
sdw2
对all_segs:
sdw1
sdw2
也就是分别存储了所有节点和所有从节点的主机名
4)交换秘钥建立ssh免密码链接
$ source /home/gpadmin/gpsql/greenplum_path.sh
$ gpssh-exkeys -f /home/gpadmin/all_hosts (all_hosts是刚刚我们建立的文本)
这个过程需要输入root密码,输入即可。成功之后就可以从master节点免密码登录segment节点,如下图所示
5)复制greenplum软件到segment host
a. 主节点上创建安装GP 的tar文件
$ cd /home/gpadmin
$ gtar -cvf /home/gpadmin/gp.tar gpsql
b. 用gpscp命令将其安装到各个segment
$ source /home/gpadmin/gpsql/greenplum_path.sh
$ gpscp -f /home/gpadmin/all_segs /home/gpadmin/gp.tar=:/home/gpadmin
启动gpssh会话
$ gpssh -f /home/gpadmin/all_segs
在gpssh下解压
=> gtar - -directory /usr/local -xvf/usr/local/gp.tar
然后更改gpsql为gpsqlsegment
建立gp当前版本目录连接:
=> ln -s /home/gpadmin/gpsqlsegment /home/gpadmin/gpsql
6) 建立segment上的存储区
=>mkdir /home/gpadmin/primary #主文件
=>mkdir /home/gpadmin/mirror #镜像文件
五、初始化GP
1)同步时钟
在gpadmin下:
检查时钟: gpssh -f /home/gpadmin/all_hosts -v date
同步: gpssh -f /home/gpadmin/all_hosts -v ntpd
出错就以root再次执行,如果还出错,则可以通过手动将所有机器时钟设置为一致即可。
2)系统检测:
$ gpcheckos -f /home/gpadmin/all_hosts (新的开源版本好像不支持该命令,跳过这一步)
此步骤会修复一些问题,不再列出,配置中存在错误都会提示如何修改,如果没有报错那么之前的配置成功了
3)初始化数据库
将/gpsql/docs/cli_help/gpconfigs/gpinitsystem_config文件copy到/home/gpadmin目录下然后编辑,保留如下参数即可
然后运行如下命令进行初始化
$ gpinitsystem -c /home/gpadmin/gpinitsystem_config –a
至此GP搭建完成
接下来就是gpstart -a 命令启动数据库;
psql -d postgres 连接到默认数据,然后就可以写sql语句
关闭数据库则用gpstop -a
单节点搭建请参照:http://www.lwxshow.com/db/greenplum/how-to-build-gpdb.html
————————————————
本文来源:https://blog.csdn.net/songguangxuan/article/details/50916792