先说一点题外话,为什么要在这里写博客,为了得到大家的关注、认可,或是交流,其实这些目前都还没有达到,博客换了很多地方,从之前的杂言乱语,情绪抒发,到现在的记录点滴,其实这一切如果说当初有哗众取宠之意,那现在过往许久,只是记录自己生命中这个时段的点滴而已,其实汇总成文字的过程就是自己提炼总结的过程,在写的过程中你会发现你之前的很多碎片的东西可以串起来,就当是对自己的犒赏,写给自己,至于过客或喜或恶,只不过是过往云烟。
在实际的生产系统中,Greenplum的节点数目不会少,也就是说我们的物理机器也不会太少,否则发挥不出GP的优势,在之前的测试中,5个节点的GP(每台56G)与一台256G的Oracle的性能并没有差距太多,甚至在个别测试中,还不如oracle的性能好。因此机器多是必然,但是这就引出一个问题,这么多机器在安装和后续管理的时候,是不可能每台机器都登陆上去逐个检查配置等信息的,因此如何管理集群机器是分布式系统的一个非常关键的小知识点,好在PIVOTAL提供了类似gpscp、gpssh、gpseginstall等类似的辅助工具,极大方便了我们的工作。
环境说明:
1.我们是用了3台物理机虚拟除了6台配置一样的虚拟机(在生产系统中还没有看到类似的虚拟机方案,我们也是在机房机位紧张的情况下无奈做的尝试,建议还是物理机),每台机器65G内存 2T空间,系统安装的CentOS6.5
2.网络设置:如果环境允许,最好是万兆网络,我们的是千兆网络(没得选)
3.机器的网卡设置:
这点非常关键,我们尝试安装的第一次,就是默认每台机器只安装了一块网卡,因此每个虚拟机只能安装一个节点(其实单网卡也可以设置多个节点,但是数据也就只走这个网口),本次安装安装了双网卡,并在物理上配置在不同的网段并物理与不同的交换机连接(在支持VLAN的交换机上用VLAN分割),具体来说就是设置如下:
每台机器上设置eth0和eth1,分别在10和20网段,比如有6台机器分别设置如下:
10.0.10.66 dw66-if0
10.0.10.67 dw67-if0
10.0.10.68 dw68-if0
10.0.10.69 dw69-if0
10.0.10.70 dw70-if0
10.0.10.71 dw71-if0
10.0.20.40 dw66-if1
10.0.20.41 dw67-if1
10.0.20.42 dw68-if1
10.0.20.43 dw69-if1
10.0.20.44 dw70-if1
10.0.20.45 dw71-if1这里66机器上有2个IP:10.0.10.66 和10.0.20.40分别对应eth0和eth1设置不同的hostname名,是为了保证数据按照不同的网口进行数据传输。
一、安装前准备
1.关闭selinux iptables
2.vi /etc/hosts 只修改master,稍后用gpscp操作
10.0.10.66 dw66-if0
10.0.10.67 dw67-if0
10.0.10.68 dw68-if0
10.0.10.69 dw69-if0
10.0.10.70 dw70-if0
10.0.10.71 dw71-if0
10.0.20.40 dw66-if1
10.0.20.41 dw67-if1
10.0.20.42 dw68-if1
10.0.20.43 dw69-if1
10.0.20.44 dw70-if1
10.0.20.45 dw71-if1注意这里的hostname需要和if0名称一致,否则后面gpscp或者gpssh-exkey会出错
vi /etc/sysconfig/network修改机器名如66机器:dw66-if0
3.crontab -e
8 */2 * * * /usr/sbin/ntpdate asia.pool.ntp.org && /sbin/hwclock --systohc4.vi /etc/security/limits.conf
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 1048576
* hard nproc 1048576在RHEL6.x版本还需要修改文件/etc/security/limits.d/90-nproc.conf
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 1048576
* hard nproc 10485765.vi /etc/rc.d/rc.local
/sbin/blockdev --setra 16384 /dev/sda
/sbin/blockdev --setra 16384 /dev/sda1
/sbin/blockdev --setra 16384 /dev/sda26.vi /boot/grub/grub.conf
在kernel那行的最后增加elevator=deadline
重启后检查cat /sys/block/*/queue/scheduler
transparent_hugepage=never
该参数可选,在RHEL6.x、SLES11上考虑配置该参数
7.vi /etc/sysctl.conf
kernel.shmmax = 68719476736 #modify 64G
kernel.shmall = 40000000000 #modify
kernel.shmmni=4096
kernel.sem = 250 5120000 100 20480
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
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 = 28.vi /etc/ssh/sshd_config
MaxStartups 10000:30:20000
注意service sshd restart9.关闭非必要的服务
chkconfig cpuspeed off
完整版:
chkconfig avahi-daemon off
chkconfig avahi-dnsconfd off
chkconfig conman off
chkconfig bluetooth off
chkconfig cpuspeed off
chkconfig setroubleshoot off
chkconfig hidd off
chkconfig hplip off
chkconfig isdn off
chkconfig kudzu off
chkconfig yum-updatesd off10.确保重启机器
二、安装GPDB
1.下载安装文件
unzip greenplum-db-4.3.7.3-build-2-RHEL5-x86_64.zip
./greenplum-db-4.3.7.3-build-2-RHEL5-x86_64.bin
按照提示输入yes和安装路径,比如/home/greenplum-4.3
vi ~/.bashrc
source /home/greenplum-4.3/greenplum_path.sh
source ~/.bashrc 2.创建配置的hosts文件
mkdir -p /home/greenplum-db/gpconfigs
cd /home/greenplum-db/gpconfigs
vi all_host
dw66-if0
dw67-if0
dw68-if0
dw69-if0
dw70-if0
dw71-if0
dw66-if1
dw67-if1
dw68-if1
dw69-if1
dw70-if1
dw71-if1
vi scp_hosts
dw66-if0
dw67-if0
dw68-if0
dw69-if0
dw70-if0
dw71-if0
vi seg_hosts:66机器是master把列表中的两个ip记录删除掉
dw67-if0
dw68-if0
dw69-if0
dw70-if0
dw71-if0
dw67-if1
dw68-if1
dw69-if1
dw70-if1
dw71-if13.建立多机信任
root@dw66-if0#gpssh-exkeys -f /home/greenplum-db/gpconfigs/all_hosts第一次输入密码4.关闭Disable Transparent Huge Pages,会引起性能问题
gpssh -f -f /home/greenplum-db/gpconfigs/all_hosts
=>cd /sys/kernel/mm/redhat_transparent_hugepage
=>cat enabled
[dw70-if0] [always] madvise never
[dw67-if0] [always] madvise never
[dw66-if0] [always] madvise never
[dw69-if0] [always] madvise never
[dw68-if0] [always] madvise never
[dw71-if0] [always] madvise never
=>exit5.通过gpscp复制/etc/hosts文件
gpscp -f /home/greenplum-db/gpconfigs/scp_hosts /etc/hosts =:/etc/hosts
可通过登录其他机器验证,或者使用gpssh -f /home/greenplum-db/gpconfigs/all_hosts
=>cat /etc/hosts来验证
6.用户和组设置
passwd --stdin 用任意文件做标准输入
echo gpadmin_2015 | passwd gpadmin --stdin 用管道作为输入,gpadmin密码gpadmin_2015
gpssh -f /home/greenplum-db/gpconfigs/all_hosts
=>groupadd -g 3030 gpadmin
=>groupadd -g 3040 gpmon
=>useradd -u 3030 -g gpadmin -m -s /bin/bash gpadmin
=>useradd -u 3040 -g gpmon -m -s /bin/bash gpmon
=>echo gpadmin | passwd gpadmin --stdin
=>echo gpmon | passwd gpmon --stdin
=>chown -R gpadmin:gpadmin /home/greenplum-4.3/
=>chown -R gpadmin:gpadmin /home/greenplum-db 7.segment安装
root@dw66-if0# gpseginstall -f /home/greenplum-db/gpconfigs/seg_hosts -c sv
会压缩后scp解压安装并设置属主权限等可用gpssh查看segment节点的情况
这步有的资料介绍会先压缩然后使用gpscp复制到segment,但是我认为不如上面的办法简便,给出代码供参考
root@dw66-if0# tar -jcvf gp4.3.tar.bz2 greenplum-4.3/
root@dw66-if0# gpscp -f /home/greenplum-db/gpconfigs/seg_hosts gp4.3.tar.bz2 =:/home
root@dw66-if0# gpssh -f /home/greenplum-db/gpconfigs/seg_hosts
=>cd /home
=>tar -jxvf gp4.3.tar.bz2 /home
=>chown -R gpadmin:gpadmin /home/greenplum-4.3/
=>ln -s /home/greenplum-4.3/ /home/greenplum-db 8.gpadmin用户设置
master节点:
su - gpadmin
vi ~/.bashrc
source /home/greenplum-db/greenplum_path.sh
MASTER_DATA_DIRECTORY=/home/greenplum-db/data/master/gpseg-1
export MASTER_DATA_DIRECTORY
segment节点:
gpssh -f /home/greenplum-db/gpconfigs/seg_hosts
=》echo "source /home/greenplum-db/greenplum_path.sh" >> /home/gpadmin/.bashrc
=>cat /home/gpadmin/.bashrc
=> source /home/greenplum-db/greenplum_path.sh
=>exit9.gpadmin用户的多机信任
su - gpadmin
gpadmin@dw66-if0#gpssh-exkeys -f /home/greenplum-db/gpconfigs/all_hosts
输入gpadmin密码gpadmin10.数据节点目录创建
master节点:
root@dw66-if0# mkdir -p /home/greenplum-db/data/master #注意这里必须和.bashrc设置一致
root@dw66-if0# chown -R gpadmin:gpadmin /home/greenplum-db/data/master
segment节点:
gpssh -f /home/greenplum-db/gpconfigs/scp_hosts
=>mkdir -p /home/gpadmin/data/gpdatap1
=>mkdir -p /home/gpadmin/data/gpdatap2
=>chown -R gpadmin:gpadmin /home/gpadmin/data/gpdatap1
=>chown -R gpadmin:gpadmin /home/gpadmin/data/gpdatap2
#如果配置了mirror目录页需要在这里设置
这里采用root用户配置再强制设置属主和属组gpadmin,其实也可以用gpadmin用户操作用root只是为了保险确保目录属主正确11.系统检查
11.1 参数检查
root@dw66-if0# gpcheck -f /home/greenplum-db/gpconfigs/all_hosts -m dw66-if0
root@dw66-if0# gpcheck -f /home/greenplum-db/gpconfigs/all_hosts -m dw66-if0 -s hostname #如果有standby master11.2网络检查
root@dw66-if0# gpcheckperf -f /home/greenplum-db/gpconfigs/all_hosts -r N -d /tmp > checknetwork.out 说明:这里可以吧不同网段拆分成两个文件分别测试,
网络性能测试参数主要有N和M两个,N是会两台机器之间两两互联双向测试,因此如果采用N则chknet1文件中的列举的主机数量需要为双数。M是网络矩阵测试,每台服务器同时向所有其他服务器发送数据包,以及接收所有其他服务器发来的数据包。矩阵测试更加贴近GP使用的实际情况。
网络性能测试,建议N和M都建议进行测试。特别是集群机器比较多的时候,需要多留意矩阵测试的结果。
11.3磁盘性能
内存及磁盘:
root@dw66-if0# gpcheckperf -f /home/greenplum-db/gpconfigs/seg_hosts -r ds -D -d /tmp/gpdata1 -d /tmp/gpdata2 > checkio.out
磁盘:
root@dw66-if0# gpcheckperf -f /home/greenplum-db/gpconfigs/seg_hosts -r d -D -d /tmp/gpdata1 -d /tmp/gpdata2
某台机磁盘检查:
root@dw66-if0# gpcheckperf -h sdw6 -h sdw7 -h sdw8 -h sdw9 -h sdw10 -r d -D -d /data1/primary -d /data2/primary
12.初始化数据库
su - gpadmin
gpadmin@dw66-if0# cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config $GPHOME/gpconfigs/
vi gpinitsystem_config
MASTER_HOSTNAME=dw66-if0
declare -a DATA_DIRECTORY=(/home/gpadmin/data/gpdatap1 /home/gpadmin/data/gpdatap2)
MASTER_DIRECTORY=/home/greenplum-4.3/data/master
chmod -R 755 gpinitsystem_config
gpinitsystem -c /home/greenplum-db/gpconfigs/gpinitsystem_config -h /home/greenplum-db/gpconfigs/seg_hosts13.系统参数优化:
gpconfig -c checkpoint_segments -v 64
gpconfig -c effective_cache_size -v 61200MB
gpconfig -c shared_buffers -v 1024MB
gpconfig -c effective_cache_size -v 2000MB
gpconfig -c maintenance_work_mem -v 512MB
gpconfig -c gp_vmem_protect_limit -v 51200
gpconfig -c max_statement_mem -v 51200MB
gpconfig -c statement_mem -v 5120MB三、数据管理
gpadmin@dw66-if0# nohup gpfdist -d /home/greenplum-db/ext_files -p 8081 >/tmp/gpfdist.log &注意这里的fdist进程必须用nohup后台进程启动,否则在通过外部表导入heap表的时候,屏幕会出现一堆信息干扰正常信息
createdb bigdata -E utf-8
psql -d bigdata
create external table ext_tb_idm_itg_his_cl
(
id1_type varchar(100),
id1_value varchar(200),
id2_type varchar(100),
id2_value varchar(200),
seqno bigint
) Location('gpfdist://10.0.10.66:8081/tb_idm_itg_his_cl.txt')
Format 'TEXT'(delimiter '^' null as '' escape 'OFF');
create table tb_idm_itg_his_cl
(
id1_type varchar(100),
id1_value varchar(200),
id2_type varchar(100),
id2_value varchar(200),
seqno bigint
)DISTRIBUTED BY (seqno);
insert into tb_idm_itg_his_cl select distinct upper(id1_type),upper(id1_value),upper(id2_type),upper(id2_value),seqno from ext_tb_idm_itg_his_cl;
四、安装Greenplum Command Center Console
1.安装:注意用root用户
[root@dw66-if0 ~]# ./greenplum-cc-web-1.3.0.0-build-91-RHEL5-x86_64.bin
输入performance monitor的安装目录 /home/greenplum-4.3-cc
chown -R gpadmin:gpadmin greenplum-4.3-cc/
chown -R gpadmin:gpadmin greenplum-cc-web
设置环境变量
[root@dw66-if0 ~]#source /home/greenplum-4.3-cc/gpcc_path.sh
或者vi ~/.bashrc
source /home/greenplum-4.3/greenplum_path.sh
source /home/greenplum-4.3-cc/gpcc_path.sh
source ~/.bashrc2.在所有主机安装CC
vi seg_cchost
dw67-if0
dw68-if0
dw69-if0
dw70-if0
dw71-if0
tar czvf gpcc.tar.gz /home/greenplum-4.3-cc/
gpscp -f seg_cchosts gpcc.tar.gz =:/home/
gpssh -f seg_cchost
=>cd /home
=>tar xzvf gpcc.tar.gz
=>ln -s /home/greenplum-4.3-cc/ greenplum-cc-web
=>chown -R gpadmin:gpadmin /home/greenplum-4.3-cc/
=>chown -R gpadmin:gpadmin greenplum-cc-web
=>exit3.su - gpadmin
vi .bashrc
source /home/greenplum-4.3-cc/gpcc_path.sh
vi /home/greenplum-db/data/master/gpseg-1/pg_hba.conf增加
host gpperfmon gpmon ::1/128 md5
gpstop -r4.gpcmdr –setup
Please enter a new instance name:输入gpcc
Is the master host for the Greenplum Database remote? Yy|Nn (default=N):n
What would you like to use for the display name for this instance:gpcc
What port does the Greenplum Database use? (default=5432):回车
will you install workload manaager (default=N):Y
What port would you like the web server to use for this instance?回车
Do you want to enable SSL for the Web API Yy|Nn (default=N):y
Do you want to copy the instance to a standby master host Yy|Nn (default=Y): 没有standby n
What is the hostname of the standby master host? [mdw]:回车
gpcmdr --start gpcc
查看端口状态: lsof -i :28080
发现是lighttpd
浏览:
http://dw66-if0:28080/
5.优化
cd /home/greenplum-db/data/master/gpseg-1/gpperfmon/conf
vi gpperfmon.conf
quantum=60 #默认15s 从节点收集信息的频率
min_query_time=300 #默认20 最小查询运行时间
max_disk_space_messages_per_interval=50 #错误/警告消息的最大数量,默认10
partition_age=6 #分区统计数据保留月份数,默认不开启
修改上述参数可以降低GPCC Agent的数据采集频率。也可以有效降低gpperfmon数据库的大小,尽量避免GPCC对数据库运行效率的影响。
后记:以上安装记录我们安装了GPDB和GPCC,数据库和监控都安装了,同时我们导入了一部分数据进行了测试,通过实际检测,10节点比5节点的查询效率进本快乐40~60%之间,性能提升比较明显,所有这些是我们没有增加物理机器的前提下,只是增加了一个网口而已,在PIVOTAL的文档中,一个物理机器原则上不超过4个节点,目前我们一个物理机2个虚拟机4个节点,基本达到了要求,没有尝试在一台虚拟机上运行4个节点,虽然有四个网口(一个是管理网口),如果谁有这方面的经验可以探讨下。