GreenPlum源码单节点集群下载编译安装(原创,从0到1,小白无脑教程)
虚拟机操作系统(CentOS 7 64位)下载安装初始化
(1)虚拟机操作系统镜像下载地址:
a. 官网:https://www.centos.org/download/
b. 百度网盘:https://pan.baidu.com/s/1BWTbUXdn7h6WIBXZLs0Y_w?pwd=ffzh ,提取码:ffzh
(2)自定义安装:我的电脑是联想Y7000P,所以给CentOS 7的配置是1处理器(一般是1或2),8核(和电脑主机一样),内存13G(尽量大一点,避免不够用,不过要小于电脑内存),其他全部按照推荐选项,根据自己电脑进行配置。
(3)授权自己的账户管理员权限:
a. 虚拟机终端在用户根目录下输入指令(就是打开终端输入即可,那就是用户根目录)。
su - //将账号切换到超级管理员模式,准备给自己的账号授权
visudo //在超级管理员模式下,打开sudo脚本进行编辑
b. 按 “i” 进入编辑模式,在任意空行处加入以下字段(shtian是我的账户名,修改的时候根据自己的账户名进行修改),修改完毕后按Esc键退出编辑模式,再输入:“:wq”,然后回车退出。
shtian ALL=(ALL:ALL) ALL //授权
c. 终端中输入“exit”,然后回车,即可返回自己的账号。
exit //退出超级管理员模式
(4)将python安装源永久换为阿里云源,更新包和指令时,避免连接失败风险。
a. 虚拟机终端在用户根目录下输入指令(就是打开终端输入即可,那就是用户根目录)。
sudo mkdir /root/.pip #创建文件夹
sudo cd /root/.pip #进入目录
sudo vim pip.conf #编辑配置文件
b. 替换阿里云镜像,将以下内容复制到配置文件中。
[global]
trusted-host = mirrors.aliyun.com
index-url = https://mirrors.aliyun.com/pypi/simple
(5)更新yum,输入指令。
sudo yum update
GreenPlum源码下载
(1)直接从GitHub下载。
a. 虚拟机终端在用户根目录下输入指令(就是打开终端输入即可,那就是用户根目录)。
sudo yum install git //需要提前安装git指令
b. 从GitHub上克隆GreenPlum源码(连接不上自己想办法学科学上网,不会的话多尝试连几次也能成)。
git clone https://github.com/greenplum-db/gpdb.git
指令执行结束后虚拟机 /home/shtian 路径下会出现“godb”文件夹,这就是下载好的GreenPlum源码。
(2)其他方法要多麻烦有多麻烦,还不一定是最新版本,别用。
GreenPlum源码编译
(1)进入“gpdb”文件夹目录。
cd gpdb
(2)继续执行以下指令(非必做)。
git checkout 6X_STABLE //把环境降级,不然后面会出现包不兼容的情况,可能只是我是这样
(3)装各种指令和包。
a. 解决缺少C++编译器的问题。
sudo yum install gcc
sudo yum install gcc-c++
b. 解决缺少libxml的问题。
sudo yum install libxml2-devel
c. 解决缺少zstd的问题。
sudo yum install epel-release
sudo yum install libzstd-devel
d. 其他包自然安装即可。
sudo yum install readline-devel
sudo yum install apr-devel
sudo yum install libevent-devel
sudo yum install libcurl-devel
sudo yum install bzip2-devel
sudo yum install xerces-c-devel
sudo yum install bison
sudo yum install flex
sudo yum install openssl-devel
sudo yum install python-devel
sudo yum install psutils python2-psutil -y //这个包是在后面安装时用到的,不是该阶段的包,也可以放在后面安装
(4)手动创建文件,用来存放GreenPlum程序实体(非源码)。
mkdir /home/shtian/gpsql //我是创建在用户目录下,文件名叫“gpsql”
(5)执行编译指令。
./configure --prefix=/home/shtian/gpsql --with-libxml //必须要带with,不然这个包会报错
make //prefix等于上一条创建的文件路径
make install
GreenPlum数据库安装
(1)配置系统参数。
a. 执行指令。
sudo vim /etc/sysctl.conf
加入以下内容:
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.sem = 250 64000 100 512
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 2
net.ipv4.conf.all.arp_filter = 1
b. 执行指令。
sudo vim /etc/security/limits.conf
加入以下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
c. 执行指令。
sudo sysctl -p
(2)配置数据库单节点初始化文件参数。
a. 执行指令。
cp /home/shtian/gpsql/docs/cli_help/gpconfigs/gpinitsystem_singlenode /home/shtian/gpinitsystem_singlenode
//将参数文件复制到用户根目录下,在此文件中修改,避免直接修改原文件,给自己留一条退路
//shtian是我的用户名,根据自己的用户名修改路径
b. 执行指令。
vim /home/shtian/gpinitsystem_singlenode
修改以下内容:
declare -a DATA_DIRECTORY=(/home/shtian/gpdata1)
MASTER_DIRECTORY=/home/shtian/gpmaster
MASTER_HOSTNAME=bogon
//这三个是必改的,前两个必须写成绝对路径,第三个bogon是主机名(与用户名不是一个东西),可以在终端输入“hostname”查看。
//还有一个端口号可能需要改,因为我在安装时会报端口号冲突,我把端口号从6000改为7000就好了,这个根据自己实际情况决定要不要改
(3)创建文件并将主机ip和主机名配置到需要用到的文件里。
a. 执行创建文件夹指令。
mkdir /home/shtian/gpdata/gpseg-1
mkdir /home/shtian/gpdata1
mkdir /home/shtian/gpmaster
b. 在/home/shtian目录下执行指令。
vi ./hostlist_singlenode
加入以下内容:
bogon //加入自己的主机名
c. 在/home/shtian目录下执行指令。
vim /etc/hosts
最后一行后面加入以下内容:
192.168.80.130 bogon //前面是主机ip,后面是主机名,主机ip可以用“ifconfig”指令查询
(4)配置环境路径。
执行以下指令:
export MASTER_DATA_DIRECTORY=/home/shtian/gpdata/gpseg-1
export PATH=$PATH:/home/shtian
source /home/shtian/gpsql/greenplum_path.sh
//因为我不是一边做一边写的博客,所以可能有些路径配置忘记了,如果一些执行文件不能执行,自己找位置,根据第二条指令加路径即可
(5)ssh免密设置。
执行以下指令:
ssh-keygen //然后一路回车,需要输密码就输密码
ssh-copy-id bogon: //也是一路回车,需要输密码就输密码
sudo service firewalld stop //关闭防火墙
sudo setenforce 0
(6)执行初始化。
执行以下指令,即刻完成安装:
gpinitsystem -c /home/shtian/gpinitsystem_singlenode
(7)报错后重新执行。
如果报错改好后,再重新执行之前,必须执行以下指令,用来结束进程和清楚上一次内存:
killall -9 postgres
rm /tmp/.s.PGSQL.5432*
rm gpmaster/* -fr
rm gpdata1/* -fr
备注
以上内容几乎已经差不多可以弄好了,因为我不是一边做一边写博客,所以有部分内容可能忘记没有写上,不过应该也只是小问题,可以百度谷歌或者chatgpt查询即可,解决不了也可以在评论区提问。
如果错误,恳请各位提出指正。
如果有更好的解决方案,欢迎各位在评论区畅所欲言。