GP集群部署(6.11.2)
一、资源规划
1.1 环境配置信息
名称 | 环境配置 |
---|---|
OS系统版本 | Linux 3.10.0-1127.el7.x86_64 |
OS配置信息 | 4C8G + 40G数据盘 |
GP版本 | greenplum-db-6.11.2 |
1.2 资源规划
主机 IP 角色 规划
mdw 172.16.104.11 master master节点
sdw1 172.16.104.12 segment seg1、seg2、mirror1、mirror2
sdw2 172.16.104.13 segment seg3、seg4、mirror3、mirror4
sdw3 172.16.104.14 segment seg5、seg6、mirror5、mirror6、master_standby
二、操作系统配置
2.1 修改主机名
在GP中,一般习惯将master节点的机器称为 mdw ,将segment节点的机器称为 sdw ,在该步骤中我们配置好每个主机的hostname后,并修改其/etc/hosts文件。
1 2 3 4 5 6 7 8 | # hostnamectl set-hostname sdw1 //修改主机名 # hostname //查看主机名 # reboot //重启服务器对hostname生效 # vi /etc/hosts //修改hosts文件 172.16.104.11 mdw 172.16.104.12 sdw1 172.16.104.13 sdw2 172.16.104.14 sdw3 |
2.2 关闭防火墙与selinux
1、 关闭防火墙
1 2 3 | # systemctl status firewalld //查看防火墙状态 # systemctl stop firewalld //关闭防火墙 # systemctl disable firewalld //禁用防火墙 |
2、关闭selinux
1 2 3 | # setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config //禁用selinux # getenforce # sestatus //查看selinux状态 |
2.3 挂载磁盘
1 | cat /etc/fstab <br>/dev/mapper/vgdata-data /gpdata xfs rw,noatime,nodev,nobarrier,inode64,allocsize=16m 1 2<br><br><br> |
XFS相比较ext4具有如下优点:
XFS的扩展性明显优于ext4,ext4的单个文件目录超过200W个性能下降明显
ext4作为传统文件系统确实非常稳定,但是随着存储需求的越来越大,ext4渐渐不在适应
由于历史磁盘原因,ext4的inode个数限制(32位),最多只能支持40多亿个文件,单个文件最大支持到16T
XFS使用的是64位管理空间,文件系统规模可以达到EB级别,XFS是基于B+Tree管理元数据
2.4 配置sysctl.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | -- 修改sysctl.conf文件 # cat /etc/sysctl.conf # kernel.shmall = _PHYS_PAGES / 2 =echo $(expr $(getconf _PHYS_PAGES) / 2) kernel.shmall = 483888 # kernel.shmmax = kernel.shmall * PAGE_SIZE =echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE)) kernel.shmmax = 1982005248 kernel.shmmni = 4096 vm.overcommit_memory = 2 vm.overcommit_ratio = 95 net.ipv4.ip_local_port_range = 10000 65535 kernel.sem = 500 2048000 200 40960 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 1 net.ipv4.conf. default .accept_source_route = 0 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.arp_filter = 1 net.core.netdev_max_backlog = 10000 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 vm.swappiness = 10 vm.zone_reclaim_mode = 0 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 #vm.dirty_background_ratio = 0 #vm.dirty_ratio = 0 #vm.dirty_background_bytes = 1610612736 #vm.dirty_bytes = 4294967296 vm.dirty_background_ratio = 3 vm.dirty_ratio = 10 # 如果系统内存大于64G # vm.dirty_background_ratio = 0 # vm.dirty_ratio = 0 # vm.dirty_background_bytes = 1610612736 # 1.5GB # vm.dirty_bytes = 4294967296 # 4GB # 如果系统内存小于64G vm.dirty_background_ratio = 3 vm.dirty_ratio = 10 -- 根据计算写入 min_free_kbytes 值 # awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf -- 使参数生效 # sysctl -p |
2.5 修改系统资源限制
增加操作系统文件数和进程数
1 2 3 4 5 6 7 8 9 10 11 | -- RHEL/CentOS6修改/etc/security/limits.d/90-nproc.conf文件,RHEL/CentOS 7修改/etc/security/limits.d/20-nproc.conf文件 # cat /etc/security/limits.d/20-nproc.conf * soft nproc 131072 root soft nproc unlimited -- linux模块pam_limits 通过读取 limits.conf文件来设置用户限制,重启后生效 # cat /etc/security/limits.conf * soft nofile 1048576 //*表示所有用户,nofile表示最大文件数 * hard nofile 1048576 * soft nproc 1048576 //noproc表示最大进程数 * hard nproc 10048576 |
2.6 磁盘I/O预读设置
数据仓库的最大特点是用于保存历史数据,存在大量的数据操作,包括增删改查,
当设置的块越大时读取性能越高;16384是greenplum数据库要求的最低要求。
注意要将每一个存数据的磁盘都修改预读参数:或者使用检查配置信息查看那些需要修改
(1)检查磁盘预读取设置,应都是 16384:
blockdev --getra /dev/sd* blockdev --getra /dev/dm-*
(2)设置
修改/etc/rc.d/rc.local 增加两行
vi /etc/rc.d/rc.local
blockdev --setra 16384 /dev/sd*
blockdev --setra 16384 /dev/dm-*
(3)检查办法:
系统重启后,运行
blockdev --getra /dev/sd* blockdev --getra /dev/dm-* 应都是 16384
发布到其他节点:
/etc/rc.d/rc.local
sh bulkcp.sh /tmp/gpconfig/2rclocal.conf /tmp/gpconfig/2rclocal.conf
gpssh -f /data1/gpinstall/config/allnodes.txt -e ''
cat /tmp/gpconfig/2rclocal.conf >> /etc/rc.d/rc.local
2.7 磁盘I/O调度算法
- ssd磁盘:建议使用noop或者deadline策略;
- 机械盘:建议使用deadline策略;
注意:内核版本为4版本开始的默认调出策略为NONE(也就是noop),无需修改
1 2 3 4 5 6 | -- 临时生效 # more /sys/block/sda/queue/scheduler noop [deadline] cfq # echo deadline > /sys/block/sda/queue/scheduler -- 永久生效 |
deadline的调度策略可以平衡IO调度和进程调度,不会造成等待进程频繁的等待
注意:每个节点都需要执行:
(1)查看调度策略:
[root@master ~] # cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
[root@master ~] # cat /sys/block/fd0/queue/scheduler
noop anticipatory deadline [cfq]
[root@master ~]# dmesg | grep -i scheduler
(2)修改调度策略:
(临时修改,重启会失效)
[root@master ~]# echo deadline > /sys/block/sda/queue/scheduler
[root@master ~]# echo deadline > /sys/block/fd0/queue/scheduler
(永久修改,重启不失效)
修改/boot/grub/menu.lst 找到 kernel /vmlinuz-xxx 这一行,在最后添加 elevator=deadline
vi /boot/grub/menu.lst
elevator=deadline
(3)检查/验证方法:
系统启动正常后,执行 cat /sys/block/*/queue/scheduler 应能看到: noop anticipatory [deadline] cfq
2.8 禁用透明大页面
linux版本从 SLES11, RHEL6, OL6 and UEK2 Kernels开始默认启动Transparent HugePages功能。该功能可能导致节点重启和gp性能问题。
# grep AnonHugePages /proc/meminfo
如果输出AnonHugepages: xxxx kB值大于0KB,则说明系统在使用Transparent HugePages
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never
以上验证方法显示always也表示在使用Transparent HugePages
禁用方法:
方法一:
编辑 /etc/grub.conf
title Oracle Linux Server (2.6.32-300.25.1.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-300.25.1.el6uek.x86_64 ro root=LABEL=/ transparent_hugepage=never
initrd /initramfs-2.6.32-300.25.1.el6uek.x86_64.img
方法2:vi /etc/rc.d/boot.local
【SUSE系统】
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
【RHEL系统】
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/redhat_transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
Fi
Centos7
12.禁用空白大页:
echo never>/sys/kernel/mm/transparent_hugepage/enabled
echo never>/sys/kernel/mm/transparent_hugepage/defrag
然后将以上命令添加到 /etc/rc.local
或者修改grub.conf,加入transparent_hugepage=never
centos 7以下:
/etc/grub.conf的kernel行最后添加numa=off
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro ...... KEYTABLE=us rd_NO_DM numa=off
centos 7及以上:
#/etc/default/grub的GRUB_CMDLINE_LINUX行最后添加 transparent_hugepage=never
GRUB_CMDLINE_LINUX=”crashkernel=auto …… rhgb quiet transparent_hugepage=never”
#执行grub2-mkconfig命令
grub2-mkconfig -o /boot/grub2/grub.cfg
cat /boot/grub2/grub.cfg
2.9 配置NTF时钟
1 2 3 4 5 | #vi /etc/ntp.conf #在server 最前面加上 server mdw prefer // 优先主节点 server smdw // 其次standby 节点,若没有standby ,可以配置成数据中心的时钟服务器 service ntpd restart // 修改完重启ntp服务 |
2.10使用numa可能导致性能问题,建议关闭:
CentOS7以下:
/etc/grub.conf的kernel行最后添加elevator=deadline
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro ...... KEYTABLE=us rd_NO_DM numa=off elevator=deadline
CentOS7:
#查看:dmesg | grep scheduler
CentOS7 io调度规则默认为“deadline”,所以不需要更改
cat /sys/block/sd*/queue/scheduler
三、GP集群搭建
3.1 下载安装依赖包
1 | # yum install -y apr apr-util bash bzip2 curl krb5 libcurl libevent libxml2 libyaml zlib openldap openssh openssl openssl-libs perl readline rsync R sed tar zip krb5-devel<br>查看安装情况: |
检查包安装情况:
rpm -q --qf '%{NAME}- %{VERSION}-%{RELEASE} (%{ARCH}) \n' \
apr \
apr-util \
bash \
bzip2 \
curl \
krb5 \
libcurl \
libevent \
libxml2 \
libyaml \
zlib \
openldap \
openssh \
openssl \
openssl-libs \
perl \
readline \
rsync \
R \
sed \
tar \
zip \
gcc
3.2 创建数据库用户
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战