GREENPLUM系列介绍之安装

来源:互联网 发布:安卓ping软件 编辑:程序博客网 时间:2024/05/16 09:48
与ORACLE安装,尤其是RAC安装相比,GREENPLUM的安装,应该说是极其简单的。大致的过程可以分成四大部分。
1、准备硬件
2、准备操作系统
3、安装GP软件
4、初始化系统。

硬件环境的准备(如果只是构建测试平台,不考虑性能,这部分内容可以忽略)

    首先就是硬件准备。GREENPLUM本身只能运行X86架构的服务器上。因此甭管是普通的PC机还是PC SERVER,甚至是虚拟机都可以运行GREENPLUM。唯一的差别就是效率。
按照官方文档的说法,主要是针对生产环境,构造一个标准的GREENPLUM系统需要三台PC服务器。根据实际使用经验,这些服务器至少应该是XEON以上的CPU,MASTER节点
需要16GB内存,如果使用千兆网卡构建内联环境,至少5块千兆网卡,其中四块千兆网卡用来构建系统的INTERCONNECT,一块用来作为连接系统的PUBLIC网卡。当然如果有条件的话,内联可以用万兆网卡或者IB,效率会更高。MASTER的存储没有什么特殊要求。
    SEGMENT节点需要32G内存。如果使用千兆网卡构建内联环境,至少4块千兆网卡,不需要外联网卡。数据存储可以使用PC SERVER内置硬盘,也可以使用外置存储阵列方式(取决于成本和性能的平衡),总数据量不超过可用存储的70%既可。
    总体而言,与专用设备和系统相比,构建GREENPLUM的生产环境的硬件成本是很低廉的。
  
   
操作系统的准备
   
    支持GREENPLUM运行的操作系统平台主要包括LINUX(REDHAT 5.4 or later/CENTOS 5.4 or later/SUSE 10.2 or later) 32bit/64bit,solaris x86 64bit,以及MAC OS 64bit。这里主要介绍LINUX平台的设置,其它平台大同小异。
    首先在每台PC SERVER上安装LINUX操作系统,然后设置内核参数,这决定了GREENPLUM可以获取多少资源使用。官方文档给出的内核参数配置如下
    编辑/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
    kernel.sem = 250 64000 100 512
    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
    对于练习环境来说,这个配置是没有问题的。但是在生产环境中,整个系统中有大量SEGMENT实例和镜像实例时,这样的配置可能导致无法启动服务。所以,请加大kernel.sem = 250 64000 100 512中最后一位的配置,比如把512改成1024,2048这样的值。另外,可以加大共享内存相关的配置,比如kernel.shmmax和kernel.shmall。
完成编辑之后,以root身份执行命令sysctl -p或者重启系统,使其配置生效。
   
    修改内核参数后,向/etc/security/limits.conf中添加如下配置
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 131072
    * hard nproc 131072
   
    由于数据仓库属于IO敏感性应用,为了提高系统效率,生产环境中,我们应该在LINUX内核上修改IO调度的算法。以root身份编辑/boot/grub/menu.lst,添加一行
    elevator=deadline,但是不要修改failsafe的定义,重启系统(必须),再以root身份执行命令cat /sys/block/*/queue/scheduler,输出的每行应该含有有[deadline],
    比如noop anticipatory [deadline] cfq
   
    然后应该设置磁盘预读,优化磁盘IO效率。以root身份编辑/etc/rc.d/rc.local,添加类这样的内容blockdev --setra 16384 /dev/sd*,重启系统。使用命令blockdev --getra /dev/sd* 可以验证设置。
   
    接下来配置域名解析,可以定义DNS,也可以在每台服务器上定义/etc/hosts,每块网卡要有一个名字,比如
   
    127.0.0.1      localhost loghost
    10.1.18.138    mdw-ext1    #eth0 on master node. Use IP sensible for LAN
    172.28.0.250   mdw-sp      #iDRAC - Shared Management port on master node
    172.28.4.250   mdw-cm      #eth0 - Shared with management port
    172.28.8.250   mdw-1 mdw   #eth4 on master node
    172.28.12.250  mdw-2       #eth5 on master node
   
    10.1.18.140 smdw-ext1 #eth0 on standby master node. IP sensible for LAN
    172.28.0.251 smdw-sp #iDRAC - Shared Management port on master node
    172.28.4.251 smdw-cm #eth0 - Shared with management port
    172.28.8.251 smdw-1 smdw #eth4 on standby master node
    172.28.12.251 smdw-2 #eth5 on standby master node
   
    172.28.0.1 sdw1-sp #iDRAC - Shared Management port on master node
    172.28.4.1 sdw1-cm #eth0 - Shared with management port
    172.28.8.1 sdw1-1 sdw1 #eth2 on first segment node
    172.28.12.1 sdw1-2 #eth3 on first segment node
   
    172.28.0.2 sdw2-sp #iDRAC - Shared Management port on master node
    172.28.4.2 sdw2-cm #eth0 - Shared with management port
    172.28.8.2 sdw2-1 sdw2 #eth2 on second data node
    172.28.12.2 sdw2-2 #eth3 on second segment node
   
    安装所需要的文件系统。GREENPLUM只能使用文件系统存放数据,不支持裸设备。出于性能考虑,EMC官方建议在LINUX上使用XFS文件系统,SOLARIS上使用ZFS文件系统。如果是练习环境则无所谓,只要相应操作系统可以支持的文件系统即可。对于LINUX来说,SUSE的安装介质上就带有XFS文件系统。REHL 6.0以下/CENTOS 6.0以下版本则需要到相关网站单独下载XFS文件系统安装。
64bit:
    rpm -ivh kmod-xfs-0.4-2.x86_64.rpm
    rpm -ivh xfsprogs-2.9.4-1.el5.centos.x86_64.rpm
   
32bit:
    rpm -ivh kmod-xfs-0.4-2.i686.rpm
    rpm -ivh xfsprogs-2.9.4-1.el5.centos.i386.rpm
   
    先用fdisk -l查看要格式化的设备,然后使用命令mkfs -t xfs /dev/sdc,创建mount点,比如mkdir -p /data/vol1
    为了保证系统重启后,可以自动mount磁盘,以root身份编辑/etc/fstab,添加条目
    [device file] /data xfs logbufs=8,noatime,nodiratime 1 1
    也可以每次系统启动,自己用命令mount /data/vol1进行mount。
   
    为了保证每个服务器的时间同步,可以在master服务器上设置NTP服务。在master上,以root身份编辑/etc/ntp.conf
    # server 0.0.0.0
      server [NTP SERVER IP ADDRESS]
      enable auth monitor
      driftfile /var/lib/ntp/drift/ntp.drift
      logfile /var/log/ntp
      statsdir /var/lib/ntp/ntpstats                    
      filegen peerstats file peerstats type day enable  
      filegen loopstats file loopstats type day enable  
      filegen clockstats file clockstats type day enable
      keys /etc/ntp.keys                                
      trustedkey 0                                      
      requestkey 0 controlkey 0               
      
    确保所有用户可以读取这个文件
    chmod 744 /etc/ntp.conf
    touch /var/lib/ntp/drift/ntp.drift
   
    最终以root用户启动NTP服务
    chkconfig --levels 2345 ntpd on
    /etc/init.d/ntp start
   
    在segment节点上编辑/etc/ntp.conf,添加类似内容
    server 172.28.4.250
    server 172.28.4.251
    同样要确保所有用户可以读取它
    chmod 644 /etc/ntp.conf
    最终以root身份启动ntp服务
    chkconfig --levels 2345 ntpd on
    /etc/init.d/ntp start

    接下来就可以进行GP软件安装了。首先去下载安装包,安装包可以从gpn.greenplum.com上获得,不是很大,大约50MB。这个网站在国内不是很好访问,所以如果哪位有网盘共享出来,我愿意给大家share安装包。最新的软件包是4.1版,这个版本不但修复了GP的一些bug,而且提供了一些重要的新特性,比如,关联更新和删除不再必须使用数据分布键做条件,极大提升了业务类型操作的性能等等。下载的版本和生产环境一模一样,只是软性license,这一点与oracle一样,所以大家可以放心使用,没有限制,只是没 有官方支持和服务罢了。
    完成安装包下载之后,上传安装包到master节点的目录,以root身份用unzip解压,比如unzip greenplum-db-4.1.0-build-3-RHEL5-x86_64.zip,得到一个文件greenplum-db-4.1.0-build-2-RHEL5-x86_64.bin,接下来执行它
./greenplum-db-4.1.0-build-2-RHEL5-x86_64.bin
系统会提示接受协议,提示默认安装目录,是否新建目录等等。所以只需要按提示yes,回车,或者输入安装路径就可以了。这样就完成了软件的安装。以此类推,每个节点
都可以这样安装软件,每个节点再创建一个gpadmin的用户,把软件的安装目录所属从root改成gpadmin,最后建立各个节点间gpadmin用户的ssh等效性就可以了。
但是如果遇到大规模节点部署,这样做效率就非常差。所以,我们利用master装好的软件首先建立各个节点间root用户的ssh等效性。这可以使用gpssh-exkeys这个工具完成。
首先编辑一个文本文件,比如称为all_hosts。在这个文件中,每台主机网卡的名字占一行,比如
mdw1
sdw1-1
sdw1-2
sdw2-1
sdw2-2
sdw3-1
sdw3-1
......
然后,进入安装目录,GP的默认安装目录是/usr/local/greenplum-db(这是安装目录的link),用命令source greenplum_path.sh设置环境变量。这样可以在任意目录使用greenplum的工具和命令。
然后执行 gpssh-exkeys -f all_hosts,系统提示每台主机的root密码,这样就建立各个机器间root用户的等效性,以后跨机器以root身份通过ssh执行系统命令不再需要密码了。
再编辑一个文件称作all_hosts1,每个主机一个名字,占一行
接下来在每个节点上创建gpadmin用户,这可以使用gpssh完成
用命令gpssh -f all_hosts1,系统出现提示符
=>
在这个提示符下执行的命令会连接到每台all_hosts文件中指定的主机上进行执行。比如创建用户组和用户
=> groupadd -g 3030 gpadmin
[mdw]
[sdw1]
[sdw2]
=>useradd -u 3030 -g gpadmin -d /home/gpadmin -s /bin/bash -m gpadmin
[mdw]
[sdw1]
[sdw2]
=>passwd gpadmin
.....


执行exit,退出所有连接。切换到gpadmin用户,再次执行gpssh-exkeys -f all_hosts,建立所有机器间gpadmin用户的等效性。
改变软件安装目录的所有权限到gpadmin
chown -R gpadmin:gpadmin /usr/local/greenplum-db-4.1.0

然后vi建立一个文件,比如all_segments,这个文件中含有所有segment主机的名称。比如
sdw1
sdw2
......
每个主机名要占用一行。

再建立一个all_seg,这个文件中每个段主机的网卡名要占用一行。

在master上,对已经安装的文件打包
tar -cvf /home/gpadmin/gp.tar greenplum-db-4.1.0
执行如下命令,把打好包的安装包拷贝到每个segment节点。
gpscp -f all_segments /home/gpadmin/gp.tar =:/usr/local
执行命令
gpssh -f all_segments
在所有segment服务器上解包
=> tar --directory /usr/local -xvf /usr/local/gp.tar
在所有segment服务器上为安装包创建link
=> ln -s /usr/local/greenplum-db-4.1.0 /usr/local/greenplum-db
在所有segment服务器上改变greenplum的所属到gpadmin
=> chown -R gpadmin:gpadmin /usr/local/greenplum-db
在所有segment服务器上删除gp.tar
=> rm /usr/local/gp.tar

至此,完成所有服务器上的软件部署工作。

接下来要进行数据库服务的初始化工作。首先要创建数据目录。在master节点上,创建数据目录mkdir -p /data/vol1/master,改变它的读写权限到gpadmin
chown -R gpadmin:gpadmin /data/vol1/master.
在所有segment上创建数据目录,以root身份
gpssh -f all_segments
=> mkdir -p /data/vol1/gpdb
....
=> chown -R gpadmin:gpadmin /data/vol1/gpdb
....

编辑系统初始化的参数文件,这个文件的编辑可以使用模版,模板文件在安装目录的/usr/local/greenplum-db/docs/cli_help/,gp_init_config_example。
里面的内容如下
ARRAY_NAME="Greenplum"   服务名称,随便起名,符合系统规范即可
MACHINE_LIST_FILE=/home/gpadmin/all_seg  指定所有参与到系统的段,以及使用的网卡名  
SEG_PREFIX=gpseg             指定系统创建子目录时的前缀
PORT_BASE=50000              每个segment使用的端口号
declare -a DATA_DIRECTORY=(/data/vol1 /data/vol1 /data/vol1 /data/vol1)   指定数据目录,它决定了每个段主机上的segment数量。比如例子中每个机器设置4个segment,它会在指定的目录下为每个段创建不同的子目录。
MASTER_HOSTNAME=mdw            指定master主机的名称
MASTER_DIRECTORY=/data/vol1/master  指定master主机的数据目录
MASTER_PORT=5432          指定应用连接系统的端口号
TRUSTED SHELL=ssh
CHECK_POINT_SEGMENT=8
ENCODING=UNICODE          数据库使用的字符集,对于中文目前只能使用UNICODE或者UNIX扩展中文字符集,建议使用unicode。

编辑好初始化参数的文件后,以gpadmin执行命令
gpinitsystem -c /usr/local/greenplum-db/docs/cli_help/gp_init_config_example
进行系统初始化。系统在初始化前会先进行自检,如果发现问题它会中断初始化,让我们去解决问题后再进行初始化。比如节点间联通性存在问题,目录权限存在问题等等。
完成初始化后,服务已经启动,我们可以再上面创建自己的应用了,我们可以使用客户端工具psql进行简单测试。
psql -d template1回车
进入提示符
template1=>
我们可以执行sql
比如
template1=>select current_date;
返回正确结果后,表明系统可以使用了。

原创粉丝点击