zoukankan      html  css  js  c++  java
  • Greenplum部署实践

    1 介绍

    Greenplum是Pivotal公司开源的一款大规模并行处理(MPP)数据库,其架构是专门针对大型分析性数据仓库和商业智能工作负载设计。本质上讲,它是多个 PostgreSQL 实例一起充当一个数据库管理系统。

    2 Linux配置(每一台主机)

    所有节点进行配置linux的部署环境,本文使用系统是centos6.5。对于节点数的选择,一般来说,业务量不是很大的情况下,选择3~5个计算节点较为合适,而且,每个计算节点不在同一台物理机中,同时master和standby不在同一台物理机中。尽量将每个节点分散出去,避免因为宿主机宕机导致整个集群不可用。greenplum集群可以同时允许一个计算节点和一个master节点宕机还能正常工作(前提是配置了mirror机制和standby备用master)。

    2.1 配置hosts

    修改系统hosts文件,vim /etc/hosts,实际中可以参考如下配置,实际的IP按照申请虚拟机的IP来设置。注意,之前安装时候,OpenStack创建的机器登录IP和网卡IP不一致,需要配置成网卡IP。主机名要与实际中的一致,此处的master、datan和standby只作为举例使用。

    10.10.10.10 master  
    10.10.10.11 data1
    10.10.10.12 data2
    10.10.10.13 data3
    10.10.10.14 data4
    10.10.10.15 standby
    

    2.2 节点间互信配置

    为了简化配置,建议将各个服务器root密码配置成相同的。一般的配置方法如下:

    ssh-keygen -t rsa #使用root用户运行,四个回车OK
    ssh-copy-id ip1 #会提示输入密码,ip1是需要ssh免密码登录的机器IP
    ssh ip1 #验证是否成功
    
    

    注意,配置集群的互信是双向的,因此需要在每一台机器上运行上述命令。
    如果机器众多的话,也可以用下面脚本的方法来配置。

    • 安装expect
      yum install expect -y

    • 生成秘钥
      ssh-keygen

    运行下面的脚本

    #!/bin/bash
    SERVERS="master data1 data2 data3 data4 standby"
    PASSWORD=gpadmin #配置每一台的主机root密码为相同的
    auto_ssh_copy_id() {
    expect -c "set timeout -1;
    spawn ssh-copy-id $1;
    expect {
    *(yes/no)* {send -- yes
    ;exp_continue;}
    *assword:* {send -- $2
    ;exp_continue;}
    eof {exit 0;}
    }";
    }
    ssh_copy_id_to_all() {
    for SERVER in $SERVERS
    do
    auto_ssh_copy_id $SERVER $PASSWORD
    done
    }
    ssh_copy_id_to_all
    
    

    注意,该脚本也需要在每一台主机上运行一次。

    2.3 添加用户

    为每一台主机增加gpadmin用户和相关组,并设置用户密码,下面的mypassword根据实际情况进行改变。

    groupadd -g 530 gpadmin
    useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
    chown -R gpadmin.gpadmin /home/gpadmin
    echo "mypassword" | passwd --stdin gpadmin
    

    2.4 关闭SELinux, iptables

    为了避免不必要的安装问题,建议关闭selinux和iptables。
    查看当前selinux配置,如果不是disable则需要进行关闭。

    [xxxx@xxxx ~]$ sestatus
    SELinux status:                 disabled
    

    查看iptables的状态

    /etc/init.d/iptables status
    

    如果为打开的,建议直接关闭,并关闭开机启动

    service iptables stop
    chkconfig iptables off 
    

    2.5 配置内核参数

    系统内核参数在sysctl.conf中,可以使用vim 编辑器打开/etc/sysctl.conf

    kernel.shmmax=34359738368
    kernel.shmall=8388608
    kernel.shmmni = 4096
    kernel.sem = 250 512000 100 2048
    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_tw_recycle = 1
    net.ipv4.tcp_max_syn_backlog = 4096
    net.ipv4.conf.all.arp_filter = 1
    net.ipv4.ip_local_port_range = 10000 65535
    net.core.netdev_max_backlog = 10000
    net.core.rmem_max = 2097152
    net.core.wmem_max = 2097152
    vm.overcommit_memory = 2
    vm.overcommit_ratio=95
    

    配置完后使用sysctl -p使配置生效,如果出现了问题,请查看参数是否存在。

    2.6 配置进程文件资源限制

    可以使用如下命令来配置参数

    vim /etc/security/limit.conf
    
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 131072
    * hard nproc 131072
    
    

    注意:对于RedHat6.x系统,还需要将/etc/security/limits.d/90-nproc.conf文件中 的1024修改为131072。

    2.7 XFS分区

    官方建议使用xfs分区,在没有特殊需求的情况下ext3、ext4也是没有问题的。

    2.8 设置linux调度器规则

    默认为cfq,更改为deadline,由于数据库安装的盘设备名是sdb,因此只需要将设备名更改为sdb即可。
    查看调度器规则

    cat /sys/block/sdb/queue/scheduler  
    

    更改

    echo deadline > /sys/block/sdb/queue/scheduler
    

    2.9 禁用 Transparent Huge Pages (THP)

    查看

    cat /sys/kernel/mm/transparent_hugepage/defrag 
    [always] madvise never
    

    更改为never

    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    

    2.10 修改磁盘预计参数 「预读扇区数」

    df -T查看有哪些磁盘
    将相关的数据盘进行调整:

    blockdev --setra 65536 /dev/sda
    blockdev --setra 65536 /dev/sdb
    
    

    2.11 NTP时间校验

    由于集群的同步依赖于时间,因此集群的各台主机的时间要一致。

    ntpdate cn.pool.ntp.org
    
    

    3 Greenplum安装(master安装)

    3.1 下载

    可以直接从官网下载 https://network.pivotal.io/products/pivotal-gpdb#/releases/1624 ,版本可以根据需要选择,如果没有账号需要注册一个账号。

    3.2 安装

    master上进行安装,直接运行二进制文件,二进制的文件是上一步从官网下载的。

    ./greenplum-db-4.3.8.0-build-1-RHEL5-x86_64.bin
    

    安装的过程是交互,需要用户补充相关的安装信息,大致过程可以按照以下来进行。

    ********************************************************************************
    Do you accept the Pivotal Database license agreement? [yes|no]
    ********************************************************************************
    
    yes
    
    ********************************************************************************
    Provide the installation path for Greenplum Database or press ENTER to
    accept the default installation path: /usr/local/greenplum-db-4.3.8.0
    ********************************************************************************
    
    [ENTER]
    
    ********************************************************************************
    Install Greenplum Database into </usr/local/greenplum-db-4.3.8.0>? [yes|no]
    ********************************************************************************
    
    yes
    
    ********************************************************************************
    /usr/local/greenplum-db-4.3.8.0 does not exist.
    Create /usr/local/greenplum-db-4.3.8.0 ? [yes|no]
    (Selecting no will exit the installer)
    ********************************************************************************
    
    yes
    
    Extracting product to /usr/local/greenplum-db-4.3.8.0
    
    ********************************************************************************
    Installation complete.
    Greenplum Database is installed in /usr/local/greenplum-db-4.3.8.0
    
    Pivotal Greenplum documentation is available
    for download at http://docs.gopivotal.com/gpdb
    ********************************************************************************
    

    3.3 更改文件夹权限

    将greenplum的安装路径给gpadmin访问权限

    chown -R gpadmin.gpadmin /usr/local/
    chown -R gpadmin.gpadmin /usr/local/greenplum-db
    

    3.4 配置集群的hosts

    这里分为两个文件,是一个是集群所有的hosts,一个是计算节点(data)的hosts。这两个文件不存在,需要用户手动创建出来,创建的方法如下:

    su - gpadmin
    mkdir -p /usr/local/greenplum-db/conf
    

    创建集群host_file

    注意,host_file 和seg_file里面需要填上主机名,不要填以下名称。

    vim /usr/local/greenplum-db/conf/host_file
    
    master
    data1
    data2
    data3
    data4
    standby
    

    创建计算节点seg_hosts

    vim /usr/local/greenplum-db/conf/seg_hosts
    
    data1
    data2
    data3
    data4
    
    

    3.5 安装集群

    这一步在其他节点上安装greenplum
    root用户

    source /usr/local/greenplum-db/greenplum_path.sh	
    gpseginstall -f /usr/local/greenplum-db/conf/host_file -u gpadmin -p gpadmin
    
    

    3.6 配置gpadmin环境变量

    vim /home/gpadmin/.bash_profile

    source /usr/local/greenplum-db/greenplum_path.sh
    export MASTER_DATA_DIRECTORY=/data1/gpdata/gpmaster/gpseg-1
    export GPPORT=5432
    export PGDATABASE=postgres
    
    

    3.7 创建数据库的数据目录

    这一步创建数据库的数据库文件存放目录,这里的gpdatap1,gpdatap2,gpdatam1,gpdatam2是一个主机上的两个主节点和两个镜像节点的数据库文件目录。这个目录的结构根据实际情况进行调整,但是建议不要在一台主机上安装过多的pg实例,否则数据同步时候,会大量占用系统网络资源,导致节点down掉。

    本文挂载的1T数据盘在/data1下。

    gpssh -f /usr/local/greenplum-db/conf/host_file -e -v "mkdir -p /data1/gpdata/{gpmaster,gpdatap1,gpdatap2,gpdatam1,gpdatam2}"
    

    3.8 初始化greenplum配置文件

    配置文件模板在/usr/local/greenplum-db/docs/cli_help/gpconfigs里面,此模板中的mirror segment被注释掉了,在实际使用的时候需要反注释,然后进行配置,建议拷贝一份出来重命名。

    cd /usr/local/greenplum-db/docs/cli_help/gpconfigs
    cp gpinitsystem_config initgp_config
    

    修改initgp_config配置文件。

    ARRAY_NAME="EMC Greenplum DW"
    MACHINE_LIST_FILE=/usr/local/greenplum-db/conf/seg_hosts
    SEG_PREFIX=gpseg
    PORT_BASE=40000
    declare -a DATA_DIRECTORY=(/data1/gpdata/gpdatap1 /data1/gpdata/gpdatap2)
    MASTER_HOSTNAME=master
    MASTER_DIRECTORY=/data1/gpdata/gpmaster
    MASTER_PORT=5432
    TRUSTED_SHELL=ssh
    CHECK_POINT_SEGMENTS=8
    ENCODING=UNICODE
    MIRROR_PORT_BASE=50000
    REPLICATION_PORT_BASE=41000
    MIRROR_REPLICATION_PORT_BASE=51000
    declare -a MIRROR_DATA_DIRECTORY=(/data1/gpdata/gpdatam1 /data1/gpdata/gpdatam2)
    

    3.9 初始化集群

    初始化命令 -S 表示使用Spread Mirror 分配 mirror节点,防止一个节点挂掉,另外一个节点集中成为瓶颈!-s 表示 standby master

    gpinitsystem -c initgp_config -S -s standby  
    

    等待初始化成功后,执行gpstate来查看各节点状态。

    4 集群配置

    4.1 修改master的pg_hba.conf和postgresql.conf

    pg_hba.conf是控制数据库访问的文件

    vim $MASTER_DATA_DIRECTORY/pg_hba.conf
    host all gpadmin 0.0.0.0/0 md5
    

    执行gpstop -u使配置生效

    postgresql.conf是集群的配置文件,可以根据实际情况进行配置。但是主要有两个必须配置:

    • 监听地址
    • 连接数

    至此。集群安装成功。

    4.2 常用gp命令

    操作 命令
    启动 gpstart -a
    停止 gpstop -a
    快速停止 gpstop -M fast
    配置重载,但是只适用于部分参数 gpstop -u
    查看mirror的状态 gpstate -e
    查看standby master的状态 gpstate -f
    查看整个GP群集的状态 gpstate -s
    查看GP的版本 gpstate -i
    帮助文档,可以查看gpstat更多用法 gpstate --help

    5 总结

    本文介绍了安装过程中的一些步骤,但是不作为标准,每一个参数的合理值需要根据实际情况进行调整。不同的节点,不同的机器配置,不同的网络,不同的业务,参数都不尽相同。这个就偏离了本文的目的,参数调优是在实际过程中需要不断调整和实践的,每一个数据库每一个业务场景都有其最佳实践,需要自己去摸索。

  • 相关阅读:
    SSL JudgeOnline 1194——最佳乘车
    SSL JudgeOnline 1457——翻币问题
    SSL JudgeOnlie 2324——细胞问题
    SSL JudgeOnline 1456——骑士旅行
    SSL JudgeOnline 1455——电子老鼠闯迷宫
    SSL JudgeOnline 2253——新型计算器
    SSL JudgeOnline 1198——求逆序对数
    SSL JudgeOnline 1099——USACO 1.4 母亲的牛奶
    SSL JudgeOnline 1668——小车载人问题
    SSL JudgeOnline 1089——USACO 1.2 方块转换
  • 原文地址:https://www.cnblogs.com/easonbook/p/10864440.html
Copyright © 2011-2022 走看看