zoukankan      html  css  js  c++  java
  • Greenplum6.9集群安装文档

    1.1 机器配置

    • 系统: Centos7

    • master: 32G 内存, 500G 磁盘 (1台)

    • segment: 64G 内存, 2T 磁盘 (10台)

    1.2 域名解析配置

    • 登录各台主机, vim /etc/hosts, 将IP和域名映射配置添加到末尾, 从而使5台机器能通过域名访问。

      127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
      ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
      10.4.37.16 GP-Data-1 sdw1
      10.4.37.17 GP-Data-2 sdw2
      10.4.37.18 GP-Data-3 sdw3
      10.4.37.19 GP-Data-4 sdw4
      10.4.37.20 GP-Data-5 sdw5
      10.4.37.21 GP-Data-6 sdw6
      10.4.37.22 GP-Data-7 sdw7
      10.4.37.23 GP-Data-8 sdw8
      10.4.37.24 GP-Data-9 sdw9
      10.4.37.25 GP-Data-10 sdw10
      10.4.37.15 GP-Master mdw
      

    1.3 准备工作(11台)

    • 关闭selinux

      • vim /etc/selinux/config

        SELINUX=disabled
        
    • 关闭防火墙

      • 查看防火墙状态

        firewall-cmd --state
        
      • 停止firewall

        systemctl stop firewalld.service
        

    1.4 设置系统参数

    • vim /etc/sysctl.conf 修改内核配置

    • 参数案例

      kernel.shmall = 4000000000
      kernel.shmmax = 500000000
      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
      
    • 备注:

      备注<1><2> 
      kernel.shmall(共享内存页总数)
      kernel.shmmax (共享内存段的最大值)
      一般来讲,这两个参数的值应该是物理内存的一半,可以通过操作系统的值_PHYS_PAGES和PAGE_SIZE计算得出。
       
      kernel.shmall = ( _PHYS_PAGES / 2)
      kernel.shmmax = ( _PHYS_PAGES / 2) * PAGE_SIZE
       
      也可以通过以下两个命令得出这两个参数的值:
       
      $ echo $(expr $(getconf _PHYS_PAGES) / 2) 
      $ echo $(expr $(getconf _PHYS_PAGES) / 2 * $(getconf PAGE_SIZE))
       
      如果得出的kernel.shmmax值小于系统的默认值,则引用系统默认值即可
       
      备注<3>
      segment使用的端口是6000开始
      segment mirror使用的端口是7000开始
      所以配置默认值即可
      net.ipv4.ip_local_port_range = 10000 65535
       
       
      备注<5>
      对于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
      
    • 修改后使用的参数

      # master
      kernel.shmall = 68719476736
      kernel.shmmax = 4294967296
      # segment
      kernel.shmall = 4000000000
      kernel.shmmax = 500000000
      
      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
      
    • 执行命令使之生效

      sysctl -p 
      

    1.5 配置资源限制参数(11台)

    • vim /etc/security/limits.conf

      * soft nofile 524288
      * hard nofile 524288
      * soft nproc 131072
      * hard nproc 131072
      

    1.6 创建用户及用户组(11台)

    • 创建gpadmin用户及用户组, 将其作为安装greenplum的操作系统用户。

    • 如果已经存在, 先删除

      groupdel gpadmin
      userdel gpadmin
      
    • 创建新的用户和用户组

      groupadd -g 530 gpadmin
      useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
      
    • 对文件夹进行赋权, 为新用户创建密码

      chown -R gpadmin:gpadmin /home/gpadmin/
      passwd gpadmin
      

    2.1 RPM方式安装到指定目录

    • github下载rpm包, 地址: https://github.com/greenplum-db/gpdb/releases

    • 上传后执行以下命令将greenplum安装到指定目录:

      rpm -ivh --prefix=/opt/greenplum  greenplum-db-6.9.0-rhel7-x86_64.rpm
      
    • 赋予权限

      chown -R gpadmin:gpadmin /opt/greenplum/greenplum*
      
    • 应用环境变量

      • 安装完成后,greenplum的环境变量,已经在 greenplum_path.sh 中设置了,这里需要应用一下变量。用 gpadmin 用户,登录到 master host:

        su gpadmin
        source /opt/greenplum/greenplum-db/greenplum_path.sh
        

    2.2 配置免密登录(每台机器)

    • 切换用户gpadmin

      su gpadmin
      cd ~
      ssh-keygen -t rsa
      
    • 在~目录下vim .ssh/authorized_keys:

      将几台虚拟机公钥都存入该文件中, 每台的authorized_keys都一致

      cd .ssh
      touch authorized_keys
      cat id_rsa.pub >> authorized_keys
      
    • 如果发现还是要密码:

      chown gpadmin: /home/gpadmin/.ssh  
      chown gpadmin: /home/gpadmin/.ssh/*  
      chmod 700 /home/gpadmin/.ssh  
      chmod 600 /home/gpadmin/.ssh/*  
      
    • 免密登录成功案例:

      tmp02

    • 创建hostlist, seg_hosts(Master)

      • 创建目录/home/gpadmin/conf,再分别创建hostlist,seg_hosts。 hostlist 中填写所有节点的主机别名,seg_hosts 中填写所有Segment 的主机别名。

        mkdir /home/gpadmin/conf
        cd /home/gpadmin/conf
        touch hostlist
        touch seg_hosts
        
    • 使用gpssh-exkeys打通所有服务器(Master)

      cd /home/gpadmin/conf
      gpssh-exkeys -f hostlist
      
    • 在打通所有机器通道之后,我们就可以使用 gpssh 命令对所有机器进行批量操作了。

      gpssh -f hostlist
      
      • 优势: 只需要操作一次,就完成到全部集群的操作

    2.3 分发数据库文件

    • 打包

      cd /opt/greenplum
      tar -cf gp6.tar greenplum-db-6.9.0
      chown -R gpadmin:gpadmin /opt/greenplum/gp6.tar
      
      • 打包的时候权限不够,我换成root,然后再把.tar的权限还给gpadmin。
    • 分发(切回gpadmin)

      source /opt/greenplum/greenplum-db/greenplum_path.sh
      gpscp -f /home/gpadmin/conf/hostlist gp6.tar =:/opt/greenplum
      
    • 这里报错:

      Error:scp: /opt/greenplum/gp6.tar: Permission denied
      
      • 原因是: 别的机器上还没有此目录,在其他几台机器上要创建/opt/greenplum目录并修改权限

        mkdir -p /opt/greenplum
        chown -R gpadmin:gpadmin /opt/greenplum
        
      • 再次执行后成功

    • 解压(master上运行, 一台上操作所有)

      gpssh -f /home/gpadmin/conf/hostlist
      cd /opt/greenplum
      tar -xf gp6.tar
      ln -s greenplum-db-6.9.0 greenplum-db
      exit
      

    2.4 环境配置

    • 创建数据存储空间

      • Master

        mkdir -p /home/gpadmin/data/master
        
      • Segment

        source /opt/greenplum/greenplum-db/greenplum_path.sh
        
        gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datap1'
        
        gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datap2'
        
         gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datap3'
        
          gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datam1'
        
          gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datam2'
        
          gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/datam3'
        
    • 配置.bash_profile 环境变量(11台都配了)

      source /opt/greenplum/greenplum-db/greenplum_path.sh
      export MASTER_DATA_DIRECTORY=/home/gpadmin/data/master/gpseg-1
      export PGPORT=5432
      export PGUSER=gpadmin
      
      # 没配db默认使用postgres
      
      • 使之生效:

        source /home/gpadmin/.bash_profile
        
    • 初始化配置文件

      mkdir /home/gpadmin/gpconfigs
      cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
      
      • #数据库代号
        ARRAY_NAME="Greenplum"
        
        #segment前缀
        SEG_PREFIX=gpseg
        
        #primary segment 起始的端口号
        PORT_BASE=33000
        
        #指定primary segment的数据目录,网上写的是多个相同目录,多个目录表示一台机器有多个segment
        declare -a DATA_DIRECTORY=(/home/gpadmin/data/datap1 /home/gpadmin/data/datap2 /home/gpadmin/data/datap3)
        
        #master所在机器的host name
        MASTER_HOSTNAME=mdw
        
        #master的数据目录
        MASTER_DIRECTORY=/home/gpadmin/data/master
        
        #master的端口
        MASTER_PORT=5432
        
        #指定bash的版本
        TRUSTED_SHELL=/usr/bin/ssh
        
        #将日志写入磁盘的间隔,每个段文件通常 =16MB < 2 * CHECK_POINT_SEGMENTS + 1
        CHECK_POINT_SEGMENTS=8
        
        #字符集
        ENCODING=UNICODE
        
        #mirror segment 起始的端口号
        MIRROR_PORT_BASE=44000
        
        # mirror的数据目录,和主数据一样,一个对一个,多个对多个
        declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/data/datam1 /home/gpadmin/data/datam2 /home/gpadmin/data/datam3)
        
    • host文件: hostfile_gpinitsystem

      sdw1
      sdw2
      sdw3
      sdw4
      sdw5
      sdw6
      sdw7
      sdw8
      sdw9
      sdw10
      

    3.1 初始化数据库

    • 安装

      cd ..
      source /opt/greenplum/greenplum-db/greenplum_path.sh
      gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem
      
    • 没有报错的话一路yes, 之前是因为多了hostfile_gpinitsystem多了mdw所以报错了。

    3.2 使用数据库

    • 登录

      psql -d postgres
      
    • 允许外部登录

      • navicat登录

        • 由于gp有空值权限, 并不是所有的机器都可以连接到数据库, 需要在pg_hba.conf文件增加客户端机器的权限。

        • 先给gpadmin创建密码

          alter role gpadmin with password 'gpadmin';
          
        • 找到pg_hba.conf位置

          find / -type f -name pg_hba.conf
          
          • 在/home/gpadmin/data/master/gpseg-1目录下, vim 添加一行:

            host     all         gpadmin     10.4.36.3/32   trust
            
        • 刷新

          pg_ctl reload -D /home/gpadmin/data/master/gpseg-1
          
        • Navicat测试连接成功

    4.1 Greenplum6调参

    (1)全局死锁检测开关
    在Greenplum 6中其默认关闭,需要打开它才可以支持并发更新/删除操作;
    gpconfig -c gp_enable_global_deadlock_detector -v on
    
    (2) 禁用GPORCA优化器(GPDB6默认的优化器为:GPORCA, 还不够成熟)
    gpconfig -c optimizer -v off
    
    (3)关闭日志
    此GUC减少不必要的日志,避免日志输出对I/O性能的干扰。
    gpconfig -c log_statement -v none
    
    
  • 相关阅读:
    C语言静态库与动态库(Windows下测试)
    gcc编译过程
    IFC2x3标准阅读
    ES6学习笔记(二十二)ArrayBuffer
    tensorflow学习笔记(一)安装
    ES6学习笔记(二十一)编程风格
    ES6学习笔记(二十)Module 的加载实现
    ES6学习笔记(十九)Module 的语法-export和import
    ES6学习笔记(十七)Class 的基本语法
    4、配置文件Json(未解决开通云开发)
  • 原文地址:https://www.cnblogs.com/ronnieyuan/p/13702022.html
Copyright © 2011-2022 走看看