(一)环境说明
项 | 版本 | 包/备注 |
操作系统 | Linux RedHat6.2 64Bit | |
Greenplum | greenplum-db-4.3.6.2 | greenplum-db-4.3.6.2-build-1-RHEL5-x86_64.zip |
greenplum-db-5.1.0 | greenplum-db-5.1.0-rhel7-x86_64.zip |
(二)安装步骤
一、服务器说明
本手册中使用2台服务器部署系统,其中master、segment各一台,主机名为xiaoya开头,ip地址为192.168.202网段,实际环境中可按需修改,服务器相关说明如下。
服务器 | IP地址 | 主机名 |
master | 192.168.202.10 | xiaoya01 |
segment1 | 192.168.202.11 | xiaoya02 |
二、系统参数配置
(1)在测试的虚拟机环境中如硬盘分配不足可增加硬盘。真实环境需要根据硬盘实际情况进行设置,如果操作不当会导致客户数据丢失,不可恢复,切记要慎重、慎重、慎重。
(2)如初次安装linux时需要对硬盘重新分区并格式可参考下面parted分区操作。
#首先在vm中扩展或者增加硬盘在进入系统挂载硬盘 #查看现有分区 fdisk -l #创建分区 fdisk /dev/sda 选择n创建分区,选择w写入分区,然后重启init 6 #重启后格式化新建的分区 mkfs –t ext4 /dev/sda4 #挂载分区到/data目录(/data目录必须存在) mount /dev/sda4 /data #设置系统启动时自动挂载 vim /etc/fstab 加上: /dev/sda4 /data ext4 defaults 1 2 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #使用parted创建分区(大于2T以上磁盘使用该方法) #如果操作不当会导致客户数据丢失,不可恢复,切记要慎重、慎重、慎重。 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #进入parted分区工具 parted /dev/sdb #创建磁盘并指定磁盘类型 mklabel gpt (或者输入mklabel,根据提示输入类型:gpt) #根据系统提示,确认并销毁磁盘上的数据,选择yes yes #创建主分区 mkpart #系统提示输入分区名称? Primary (或者直接回车) #系统提示输入文件系统类型?[ext2]? ext4(这里可以使用xfs文件系统类型) #起始点? 0 #结束点? -1 #系统弹出警告,选择忽略 Ignore #分区完成后使用print可以看到刚才分区的信息 #退出parted分区工具 quit #可选1:格式化磁盘文件系统为EXT4 mkfs.ext4 /dev/sdb1 #可选2:或者格式化磁盘文件系统为xfs,注意:xfs需要安装rmp软件包: rpm –ivh xfsprogs-3.1.1-4.1.x86_64.rpm(该软件包在/os目录下) #可选2_1:格式化磁盘文件系统为xfs(gp文档推荐使用xfs文件系统:144页) mkfs.xfs -f /dev/sdb1 #设置系统启动时自动挂载 #查看磁盘分区uuid,找到需要挂载磁盘的UUID blkid #将uuid添加到fstab,挂载在/data目录下(注意:/data必须存在) vim /etc/fstab #ext4类型 加上: UUID=... /data ext4 defaults 1 2 #xfs类型 加上: UUID=... /data xfs rw,noatime,inode64,allocsize=16m 1 1 #重新挂载/etc/fstab文件中的记录 mount –a(或者单独挂载mount /dev/sdb1 /data) #查看磁盘分区情况(T是查看文件类型) df –hT |
(3)修改的主机名(需每台修改)
#rhel6.x版本修改主机名 #查看主机名 hostname #修改主机名,重启生效 vim /etc/sysconfig/network #添加以下内容: HOSTNAME=<hostname> #其中<hostname>在各台机器上分别设为xiaoya01、xiaoya02 #rhel7.x版本修改主机名 #查看主机名 hostname #修改主机名,重启生效 #方法一:直接编辑/etc/hostname文件 #新增内容:主机名 vim /etc/hostname #添加以下内容: <hostname> #其中<hostname>在各台机器上分别设为awaken01、awaken02... #方法二:使用nmtui图形工作设置,重启生效 |
(4)设置IP地址(需每台修改)
#查看网卡是否连接网络 ethtool eth0(speed显示速度,即连接网络,显示unknown为未连接网络) #方法一(推荐):在图形界面中的设置ip地址(左上>系统>首选项>网络连接) 配置ip时,注意勾中“自动连接” #方法二:使用setup命令设置ip,设置后重新启动网卡。 setup #先关闭网卡 ifdown eth0 #再重新启动 ifup eth0 注意:配置ip时如果出现device eth0 does not seem to be present, delaying initialization错误,请 1、vim /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth0的配置文件里保存了以前的MAC地址,就把这一行删除掉在重启网卡 ONBOOT=yes 2、rm -rf /etc/udev/rules.d/70-persistent-net.rules 3、reboot #方法三(推荐):可直接修改/etc/sysconfig/network-scripts/ifcfg-eth0文件修改ip 注意:在实际环境中,可将服务器一半网卡接入网络中,并分别配置ip |
(5)设置防火墙(需每台修改)
#rhel6.x设置防火墙 #查看防火墙状态 service iptables status #关闭防火墙 service iptables stop #关闭开机启动 chkconfig iptables off #rhel7.x设置防火墙 #查看防火墙状态 systemctl status firewalld #显示防火墙状态 firewall-cmd --state #临时关闭防火墙 systemctl stop firewalld #永久关闭防火墙 systemctl disable firewalld #永久开启防火墙 systemctl enable firewalld |
(6)关闭selinux服务(需每台修改)
#永久关闭SELINUX 需修改/etc/selinux/config配置文件,修改配置为SELINUX=disabled #临时关闭SELINUX setenforce 0 |
三、Greenplum安装
====环境准备====
(1)修改linux系统参数(每个节点都需要配置)
vim /etc/sysctl.conf #将sysctl.conf中的内容替换为如下(测试环境中绿色部分去一个0): kernel.shmmax = 5000000000 kernel.shmmni = 4096 kernel.shmall = 40000000000 kernel.sem = 250 5120000 100 20480 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.default.rp_filter = 1 net.ipv4.conf.default.arp_filter = 1 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 vm.swappiness = 1 #执行sysctl -p生效 sysctl -p |
(2)修改文件开启个数限制(每个节点都需要配置)
#在/etc/security/limits.conf配置文件末尾处增加如下内容: vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 * soft core unlimited 注意:对于RedHat6.x系统,还需要将/etc/security/limits.d/90-nproc.conf文件中的1024修改为131072。 vim /etc/security/limits.d/90-nproc.conf 注意:对于RedHat7.x系统,还需要将/etc/security/limits.d/20-nproc.conf文件中的4096修改为131072。 vim /etc/security/limits.d/20-nproc.conf |
(3)修改linux磁盘I/O调度策略(每个节点都需要配置) 【测试环境可忽略】
#查看某个驱动器的I/O调度策略 cat /sys/block/sda/queue/scheduler noop anticipatory [deadline] cfq #修改磁盘I/O调度策略 vim /boot/grub/menu.lst #在kernel一行最后追加“elevator=deadline” 注意:修改该配置文件需谨慎,错误的修改会导致重启操作系统失败。 |
(4)配置设备块大小(每个节点都需要配置)
#修改系统的read-ahead设置: vim /etc/rc.d/rc.local #sof在文件尾部追加: blockdev --setra 65536 /dev/sd* #重启,查看是否生效 blockdev --getra /dev/sda |
(5)配置hosts文件(每个节点都需要配置)
vim /etc/hosts 127.0.0.1 localhost localhost.localdomain #注意:此行勿删 192.168.202.10 xiaoya01 192.168.202.11 xiaoya02 #注意:如果实际环境中,一台服务器多个ip,那么需要都写入hosts中,如: 192.168.202.10 xiaoya01 192.168.202.11 xiaoya01 192.168.202.12 xiaoya02 192.168.202.13 xiaoya02 |
(6)在GP主节点上创建数据节点文件(一个含mstar,一个不含)
vim /data/hostfile xiaoya01 xiaoya02 vim /data/hostfile_seg xiaoya02 |
====集群安装====
(7)解压Greenplum安装包
unzip greenplum-db-4.3.6.2-build-1-RHEL5-x86_64.zip |
(8)运行Greenplum安装文件
#运行安装文件 ./greenplum-db-4.3.6.2-build-1-RHEL5-x86_64.bin #安装程序会提示接收GPDB许可协议,输入yes即可。 #安装程序会提示输入安装路径,输入一个绝对安装路径,如: /data/greenplum/greenplum-db |
(9)安装节点
#交换ssh密钥 unset OPENSSL_CONF source /data/greenplum/greenplum-db/greenplum_path.sh gpssh-exkeys -f /data/hostfile #使用刚刚创建的hostfile文件运行gpdeginstall命令。使用-u和-p参数在所有主机 上创建GP系统用户(gpadmin)并设置该用户的密码。例如: gpseginstall -f /data/hostfile -u gpadmin -p gpadmin #注意,此步骤完成后会在各个数据节点中创建和主节点相同的目录,如: /data/greenplum/greenplum-db 如果没有创建说明安装失败,请重复:步骤6) #确认安装,检查能否无密码登录,安装包是否被解压到各节点上面 su – gpadmin source /data/greenplum/greenplum-db-4.3.6.2/greenplum_path.sh gpssh –f /data/hostfile –e ls –l $GPHOME 如果成功登录并且未提示输入密码,则安装成功。否则需要重新交换ssh密钥: unset OPENSSL_CONF gpssh-exkeys -f /data/hostfile #验证 ssh xiaoya02 |
(10)创建数据存储区域
#在Master主机上创建数据目录位置,以root身份执行下面的命令 su - mkdir /data/greenplum/master #修改目录的所有权信息。例如: chown gpadmin:gpadmin /data/greenplum/master #使用gpssh命令,在所有Segment主机上创建Primary的数据存储位置。 #使用刚刚创建的host_file_seg文件指定Segment主机列表。例如: su - source /data/greenplum/greenplum-db/greenplum_path.sh gpssh -f /data/hostfile_seg -e 'mkdir /data/greenplum/primary' gpssh -f /data/hostfile_seg -e 'chown gpadmin:gpadmin /data/greenplum/primary' 如果创建时报ssh失败,需要重新交换root用户的ssh密钥: su – source /data/greenplum/greenplum-db/greenplum_path.sh unset OPENSSL_CONF gpssh-exkeys -f /data/hostfile 如果交换ssh密钥时,又报错 “Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).”,有可能是SELinux没关闭,可执行下面命名关闭: setenforce 0 |
(11)同步系统时钟【测试环境可忽略】
#在Master主机,以root登录编辑/etc/ntp.conf文件 vim /etc/ntp.conf server 10.6.220.20 (10.6.220.20是数据中心NTP服务器的IP地址) #各Segment主机上的时钟以master为准 vim /etc/ntp.conf server xiaoya01 #在Master主机,使用NTP守护进程同步所有Segment主机的系统时钟 gpssh -f /data/hostfile_seg -v -e 'ntpd' #开启ntpd服务,并设置开机自动运行 /etc/init.d/ntpd start chkconfig --level 35 ntpd on |
(12)检查系统环境【测试环境可忽略】
#检查操作系统配置 #以gpadmin用户登录Master主机 su - gpadmin #加载GP安装目录的greenplum_path.sh文件 source /data/greenplum/greenplum-db/greenplum_path.sh #检查系统环境 gpcheck -f /data/hostfile -m xiaoya01 在gpcheck完成检查所有主机的OS参数之后,可能会给出对OS参数的修改意见,这些修改应该在GPDB系统初始化之前修改完成。 |
====集群初始化====
(13)创建GPDB 配置文件
#创建GPDB配置文件,以gpadmin登录 su – gpadmin source /data/greenplum/greenplum-db/greenplum_path.sh #拷贝gpinitsystem_config文件 cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/ gpinitsystem_config #修改gpinitsystem_config文件 chmod 777 gpinitsystem_config vim gpinitsystem_config declare -a DATA_DIRECTORY=(/data/greenplum/primary /data/greenplum/primary /data/greenplum/primary /data/greenplum/primary) MASTER_HOSTNAME=xiaoya01 MASTER_DIRECTORY=/data/greenplum/master |
(14)运行初始化命令
#创建GPDB配置文件,以gpadmin登录 su – gpadmin source /data/greenplum/greenplum-db/greenplum_path.sh gpinitsystem -c gpinitsystem_config -h /data/hostfile_seg #命令将自动检查安装信息,确认可以连接到每个HostName,可以访问配置文件中指定的每个目录。如果检查都通过了,将会提示确认配置信息。例如: > Continue with Greenplum creation? Yy/Nn #输入y以开始初始化 #在成功安装初始化结束时,命令将会启动GPDB系统,并可以看到如下提示信息: => Greenplum Database instance successfully created. #注意(1): CenterOS系统在初始化时如报:“Failed Update port number to 40001”。 解决方法: 1.所有节点安装ed # rpm ed-1.1-3.3.el6.x86_64.rpm(该软件包在/os目录下) 附ed下载地址: http://www.filewatcher.com/d/CentOS/x86_64/Applications/Text/ed-1.1-3.3.el6.x86_64.rpm.73652.html
/bin/bash ~/gpAdminLogs/backout_gpinitsystem_gpadmin_<timestamp>
gpinitsystem -c gpinitsystem_config -h /data/hostfile_seg #注意(2): 如遇到其它初始化错误,可参考“Greenplum4.2.2管理员指南-2015修订.pdf”第154页最后的“初始化故障排除”和“使用撤销脚本”章节。 |
(15)设置GP环境变量
#创建GPDB配置文件,以gpadmin登录 su – gpadmin #打开用户启动文件 vim ~/.bashrc 添加新行 source /data/greenplum/greenplum-db/greenplum_path.sh export MASTER_DATA_DIRECTORY=/data/greenplum/master/gpseg-1 保存后exit退出,再使用su – gpadmin 可生效 |
(16)启动GP
#停止gp gpstop –a –M fast #启动gp gpstart -a #查看状态 gpstate #重启gp gpstop -r |
(17)GP建库
#启动gp gpstart -a #查看当前所有库 psql –l #使用postgres库 psql postgres #创建数据库 create database xiaoya; #添加其他客户端访问gpdb(比如说其他电脑上的etl\tomcat连接gp, 参考文档第33页) vim /data/greenplum/master/gpseg-1/pg_hba.conf #增加客户端单个ip地址访问 host all gpadmin 192.168.1.10/32 trust #增加客户端某一网段ip地址访问 host all gpadmin 192.168.1.0/24 trust #重新加载pg_hba.conf文件使修改生效 gpstop –u #使用root用户创建文件空间 mkdir /data/greenplum/warehouse mkdir /data/greenplum/warehouse/master mkdir /data/greenplum/warehouse/primary chown -R gpadmin:gpadmin /data/greenplum/warehouse #注意:每台机器都需要创建文件空间,可使用 su - source /data/greenplum/greenplum-db/greenplum_path.sh gpssh -f /data/hostfile_seg -e 'mkdir /data/greenplum/warehouse' gpssh -f /data/hostfile_seg -e 'chown gpadmin:gpadmin /data/greenplum/warehouse' 或者 scp -r /data/greenplum/warehouse/ root@192.168.1.101:/data/greenplum/warehouse/ 命令复制,注意授权给gpadmin用户) #来进行创建文件空间(接上面注意)。 #使用gpadmin用户登录到master主机 su – gpadmin #创建一个文件空间的配置文件 gpfilespace –o gpfilespace #将会提示输入一个文件空间的名称、primary文件系统位置、master文件系统位置,如: enter a name for this filespace> fastdisk primary location 1> /data/greenplum/warehouse/primary primary location 2> /data/greenplum/warehouse/primary master location> /data/greenplum/warehouse/master #再次执行该命令,基于之前生成的配置文件创建文件空间: gpfilespace --config /home/gpadmin/gpfilespace #创建表空间: psql xiaoya create tablespace warehouse filespace fastdisk; #创建表:create table test(c1 text, c2 text); #查看表:\d #查看表结构:\d test #退出psql:\q #使用pgAdmin创建表 create table test2 ( a1 varchar(100), a2 varchar(100) )WITH (appendonly=true, orientation=column) TABLESPACE warehouse DISTRIBUTED RANDOMLY; |
(18)使用ETL进行DM到GP的数据迁移
#找到 dmetl4\gploaderp\loader.ini文件 修改:IP=192.168.202.10(为dmetl服务器的ip地址) 修改:AUTOSTART=1(为dmetl自动启动gpfdist服务) #在etl数据中添加Greenplum数据库数据源 数据库类型:Greenplum 主机名:192.168.202.10 用户名:gpadmin 密码:gpadmin 端口:5432 默认数据库:xiaoya #建议:大数据量使用“Greenplum快速装载”节点、小数据可以用“数据表”节点。 |
(19)GP外部表简单使用(需要启动gpfdist服务)
-- 创建分隔符为(竖线)的外部表 create external table ext_person( name varchar, addr varchar ) location ('gpfdist://192.168.1.200:8081/111.txt') format 'text' (delimiter '|' NULL '' escape 'off') ENCODING 'UTF8'; -- 创建分隔符为(\u0001)的外部表 create external table ext_person( name varchar, addr varchar ) location ('gpfdist://192.168.1.200:8081/111.txt') format 'text' (delimiter E'\001' NULL '' escape 'off') ENCODING 'UTF8' -- 创建(CSV)的外部表 create external table ext_person( name varchar, addr varchar ) location ('gpfdist://192.168.1.200:8081/test/1.txt') format 'CSV'; |
(三)服务启动与关闭
(1)启动Greenplum服务(只用启动主节点服务)
#切换gp用户 su - gpadmin #启动gp服务 gpstart –a #切换gp用户 su - gpadmin #停止gp服务 gpstop –a –M fast #查看gp服务 ps -ef|grep greenplum #开启2个gpfdist服务(必须开启) #注意:需要把“/data”和“tomcat”目录授权给gpadmin chown gpadmin:gpadmin /data chown gpadmin:gpadmin /home/tomcat6/webapps/ROOT #开启gpfdist服务 su – gpadmin gpfdist –d /data –p 8082 –l /data/log.txt & 回车2次 gpfdist –d /home/tomcat7/webapps/ROOT –p 8083 –l / home/tomcat6/log.txt & 回车2次 |
(四)linux常用命令参考
序号 | 命令 | 描述 |
1 | more /proc/cpuinfo |grep 'physical id' |sort|uniq|wc -l | 查看物理cpu个数 |
2 | more /proc/cpuinfo |grep 'cpu cores' |uniq | 查看每个物理cpu的核数 |
3 | more /proc/cpuinfo |grep 'processor' | wc -l | 查看逻辑cpu的个数 |
4 | more /proc/cpuinfo |grep name|cut -f2 -d: | uniq -c | 查看cpu型号 |
5 | df -h | 查看磁盘空间 |
6 | du -sh 目录名 | 查看指定目录大小 |
7 | free -g | 查看内存使用情况 |
8 | top | 查看进程 |
9 | kill -9 进程号 | 强制关闭进程 |
10 | ethtoo ethX | 查询网卡参数 |
11 | shutdown -h now、init0 | 立刻关机 |
12 | shutdown -r now、reboot、init6 | 立即重启 |
13 | Export LANG=zh_CN | 设置系统语言 |
14 | ps –ef|grep 进程名 | 查看进行 |
15 | netstat -ntl|grep 端口号 | 查看端口占用情况 |
16 | uanme –a cat /proc/version | 查看linux内核版本(2种方法) |
17 | tar -zxvf 文件名 | 解压.gz |
18 | rpm -ivh文件名 | 安装rpm |
19 | ./dmserver /data/dmdbms/data/DAMENG/dm.ini -noconsole | 启动DM数据库 |
20 | 常用vi命令: 列出行号:set nu 复制一行:yy 粘贴:p 跳转到第1行:1y 跳转到最后一行:yy 查找:/(如:/abc 查询 abc 开头的单词,输入n下一个 shift+n上一个) | |
21 | mkdir -p /parent/sub1/sub2 | 创建多级目录 |
22 | lsof -i :5236 | 查看端口状态 |
23 | head -d 10 log.txt | 查看日志文件前10行 |
24 | date -s "2018-04-25 9:05" clock -w | 设置时间 写入cmos |
25 | ls -R | 递归列出所有子目录 |
26 | Ls -r | 列出下级子目录 |
27 | lsb_release –a,即可列出所有版本信息,适用于所有发行版; cat /etc/redhat-release,适合redhat系的linux; cat /etc/issue,适用于所有linux发行版。 | 查看linux系统版本(3种方法) |
28 | ||