Greenplum学习笔记——第二部分:集群部署
Greenplum 安裝
前期準備
1、Greenplum集群規劃
192.168.5.107 Master sdw1
192.168.5.108 sdw2
192.168.5.109 sdw3
192.168.5.107即作為Master節點也作為Segment節點,正式環境不推薦此做法,正式環境下Master應該單獨一臺服務器;192.168.5.108、192.168.5.109作為Segment節點,每個機器上配置兩個Primary Segment和兩個Mirror Segment。
2、操作系統準備
Greenplum沒有Windows版本,只能安裝在類UNIX的操作系統上,我們選擇Centos7進行安裝。
3、數據庫存儲
對于Greenplum數據庫來說,在性能上磁盤IO很容易成為瓶頸,由于數據庫的特性,每一個SQL基本都是對全部數據進行分析,每次處理的數據量非常大,數據基本上都是沒有緩存的(數據字典除外),極度消耗IO資源(全表掃描主要都是順序IO),所以Greenplum對于存儲的要求比較高。在文件系統上,Linux下建議使用XFS,在Solaris下建議使用ZFS,對于性能有更高的要求,可以選擇Raid 1+0。
4、網絡
在確定機器配置時,要保證所有機器的網絡都是通的,并且每臺機器的防火墻都是關閉的,避免存在網絡不通的問題。
在配置/etc/hosts時,習慣將Master機器叫做mdw,將Segment機器叫做sdw,配置好后,使用ping命令確定所有hostname都是通的。
在所有機器配置:
# dw-greenplum-* 是機器主機名 192.168.5.107 dw-greenplum-1 mdw sdw1 192.168.5.108 dw-greenplum-2 sdw2 192.168.5.109 dw-greenplum-3 sdw35、時間
方法一:啟用master節點上的NTP,并在Segment節點上配置和啟用NTP。
方法二:同步其他機器的時間,需要確保目標機器已經開啟了NTP服務。
1、安裝ntpdate
yum install ntpdate -y2、同步時間
# 同步目標主機時間,需要確保目標機器已經開啟了NTP服務 ntpdate -u 目標主機系統配置
1、配置Selinux
臨時關閉:輸入命令setenforce 0,重啟系統后還會開啟。
永久關閉:輸入命令vi /etc/selinux/config,將SELINUX=enforcing改為SELINUX=permissive,然后保存退出。
2、服務器參數調整
~ cat /etc/sysctl.confkernel.shmmax = 500000000 kernel.shmmni = 4096 kernel.shmall = 4000000000 kernel.sem = 50100 128256000 50100 2560 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 1 net.ipv4.ip_forward = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.defalut.arp_filter = 1 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 kernel.core_pattern = /var/core/core.%h.%t3、系統資源限制調整
~ cat /etc/security/limits.conf* soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 * soft core unlimited4、創建用戶及用戶組
創建gpadmin用戶及用戶組,將其作為安裝Greenplum的操作系統用戶
創建新的用戶和用戶組:
groupadd -g 530 gpadmin useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin對文件夾進行賦權,為新用戶創建密碼:
chown -R gpadmin:gpadmin /home/gpadmin passwd gpadminGreenplum安裝
1、安裝數據庫軟件
下載地址:https://network.pivotal.io/products/vmware-tanzu-greenplum 選擇所需要的下載版本與對應的操作系統,下載時需要注冊一個Greenplum用戶,請耐心注冊。
當下載好安裝包后你已經成功一半了。
以6.16.1為例:
安裝包名稱:greenplum-db-6.16.1-rhel7-x86_64.rpm
安裝步驟:
(1)執行yum 安裝 或 rpm安裝,大家安裝時不要緊張,Greenplum軟件按照相對簡單,按步驟執行就好。
yum install greenplum-db-6.16.1-rhel7-x86_64.rpm -y 或 rpm -ivh greenplum-db-6.16.1-rhel7-x86_64.rpm默認的安裝路徑是/usr/local,當軟件安裝成功后,需要修改該路徑gpadmin操作權限:
chown -R gpadmin:gpadmin /usr/local這時切換到gpadmin,刷新Greenplum環境變量查看Greenplum是否安裝完成
$ su - gpadmin $ source /usr/local/greenplum-db/greenplum_path.sh $ gpstate --version # 顯示以下信息說明Greenplum軟件安裝成功 gpstate version 6.16.1 build commit:10171814c15886ff864fad19b89b3a7c224e0a97(2)配置集群hostlist文件,打通節點
a. 創建hostlist文件與seg_hosts文件,hostlist文件包含所有主機信息,seg_hosts包含Segment主機信息。
hostlist
[gpadmin@dw-greenplum-1 ~]$ more hostlist mdw sdw1 sdw2 sdw3seg_hosts
[gpadmin@dw-greenplum-1 ~]$ more seg_hosts sdw1 sdw2 sdw3b. 配置ssh免密連接。
$ su - gpadmin $ source /usr/local/greenplum-db/greenplum_path.sh $ gpssh-exkeys -f hostlist # 然后按要求執行即可測試免密連接是否成功:
# root賬號 和 gpadmin賬號免密遠程Segment節點是否成功 $ ssh sdw2 # gpssh 工具批量控制其他服務器是否成功 $ gpssh -f hostlist => pwd [sdw3] /home/gpadmin [ mdw] /home/gpadmin [sdw2] /home/gpadmin =>如果使用gpssh-exkeys打通各節點失敗,大家可以使用Linux自帶的免密登錄打通
# 需要在root用戶和gpadmin用戶都執行,確保集群間能過通過這兩個用戶免密登錄 # 生成密鑰 ssh-keygen -t rsa # 拷貝密鑰到其他主機 ssh-copy-id sdw22、在Segment節點上安裝Greenplum
在各個子節點進行文件夾賦權:
# 創建合適的目錄,并為其授權 mkdir /xswork chown gpadmin:gpadmin work在主節點打包安裝包并復制到各個子節點:
tar -cf /home/gpadmin/gp6.16.tar.gz greenplum-db-6.16.1/ cd /usr/local chown gpadmin:gpadmin gp6.16.tar.gz su - gpadmin gpscp -f hostlist gp6.16.tar.gz =:/xswork/這個時候如果沒有意外,greenplum的文件已經復制到各個Segment機器的/xswork目錄下了,可以去各個字節點檢查一下
su - gpadmin gpssh -f seg_hosts => cd /xswork [sdw2] [sdw3] [sdw1] => ll [sdw2] total 535780 [sdw2] -rw-------. 1 gpadmin gpadmin 548638720 Jul 6 15:22 gp6.16.tar.gz [sdw3] total 535780 [sdw3] -rw-------. 1 gpadmin gpadmin 548638720 Jul 6 15:22 gp6.16.tar.gz [sdw1] total 535780 [sdw1] -rw-------. 1 gpadmin gpadmin 548638720 Jul 6 15:21 gp6.16.tar.gz =>沒有問題的話批量解壓:
su - gpadmin gpssh -f seg_hosts => cd /xswork [sdw3] [sdw1] [sdw2] => tar -xf gp6.16.tar.gz [sdw3] [sdw1] [sdw2] #建立軟鏈接 => ln -s greenplum-db-6.16.1 greenplum-db [sdw3] [sdw1] [sdw2] =>3、初始化集群
(1)創建資源目錄
# 主節點上執行 su - gpadmin # 創建主節點目錄 mkdir -p /xswork/data/master/gpseg-1 # 創建各個Segment節點目錄 gpssh -f seg_hosts # 因為我們每個集群計劃部署兩個Segment節點與鏡像,因此創建兩個目錄即可,也可只創建/xswork/primary 和 /xswork/mirror目錄,初始化時會按目錄有區分,這個根據個人喜好創建 => mkdir -p /xswork/primary/gpdatap1 => mkdir -p /xswork/primary/gpdatap2 => mkdir -p /xswork/mirror/gpdatam1 => mkdir -p /xswork/mirror/gpdatam2(2)配置環境變量
su - gpadmin # 主節點配置環境變量 vi ~/.bash_profile # .bash_profile# Get the aliases and functions if [ -f ~/.bashrc ]; then. ~/.bashrc fi# User specific environment and startup programs source /xswork/greenplum-db/greenplum_path.sh export MASTER_DATA_DIRECTORY=/xswork/data/master/gpseg-1/gpseg-1 export PGPORT=12354 export PGDATABASE=testDB PATH=$PATH:$HOME/.local/bin:$HOME/binexport PATH主節點配置好后復制到Segment節點
(3)初始化前測試集群機器的性能
網絡測試:
gpcheckperf -d 目錄 upload -r N -f 主機列表文件文件系統性能驗證:
gpcheckperf -d 目錄1 -d 目錄2 upload -r ds -D -f 主機列表文件(4)執行初始化
初始化 Greenplum 配置文件模板都在/usr/local/greenplum-db/docs/cli_help/gpconfigs目錄下,gpinitsystem_config是初始化 Greenplum 的模板。
gpinitsystem_config
# FILE NAME: gpinitsystem_config# Configuration file needed by the gpinitsystem################################################ #### REQUIRED PARAMETERS #################################################### Name of this Greenplum system enclosed in quotes. ARRAY_NAME="Greenplum Data Platform"#### Naming convention for utility-generated data directories. SEG_PREFIX=gpseg#### Base number by which primary segment port numbers #### are calculated. PORT_BASE=6000#### File system location(s) where primary segment data directories #### will be created. The number of locations in the list dictate #### the number of primary segments that will get created per #### physical host (if multiple addresses for a host are listed in #### the hostfile, the number of segments will be spread evenly across #### the specified interface addresses). declare -a DATA_DIRECTORY=(/xswork/primary/gpdatap1 /xswork/primary/gpdatap2)#### OS-configured hostname or IP address of the master host. MASTER_HOSTNAME=mdw#### File system location where the master data directory #### will be created. MASTER_DIRECTORY=/xswork/data/master/gpseg-1#### Port number for the master instance. MASTER_PORT=5432#### Shell utility used to connect to remote hosts. TRUSTED_SHELL=ssh#### Maximum log file segments between automatic WAL checkpoints. CHECK_POINT_SEGMENTS=8#### Default server-side character set encoding. ENCODING=UNICODE################################################ #### OPTIONAL MIRROR PARAMETERS #################################################### Base number by which mirror segment port numbers #### are calculated. MIRROR_PORT_BASE=7000REPLICATION_PORT_BASE=8000 MIRROR_REPLICATION_PORT_BASE=9000 #### File system location(s) where mirror segment data directories #### will be created. The number of mirror locations must equal the #### number of primary locations as specified in the #### DATA_DIRECTORY parameter. declare -a MIRROR_DATA_DIRECTORY=(/xswork/mirror/gpdatam1 /xswork/mirror/gpdatam2)################################################ #### OTHER OPTIONAL PARAMETERS #################################################### Create a database of this name after initialization. #DATABASE_NAME=name_of_database#### Specify the location of the host address file here instead of #### with the -h option of gpinitsystem. MACHINE_LIST_FILE=/home/gpadmin/seg_hosts執行初始化
gpinitsystem -c gpconfigs/gpinitsystem_config然后按要求執行整個集群就初始化完成了。
總結
安裝Greenplum主要有以下步驟:
1、集群的規劃與服務器準備;
2、服務器的配置;
3、在Master安裝Greenplum軟件,這一步在Master節點操作就好;
4、復制Master安裝好的Greenplum軟件到Segment節點中;
5、配置gpinitsystem_config配置文件,需要注意的是MASTER_DIRECTORY、DATA_DIRECTORY、MIRROR_DATA_DIRECTORY參數;
6、執行初始化 gpinitsystem -c gpconfigs/gpinitsystem_config,初始化時如果不指定主機,則默認使用gpinitsystem_config配置中MACHINE_LIST_FILE指定的主機列表;
總結
以上是生活随笔為你收集整理的Greenplum学习笔记——第二部分:集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚幻引擎和实时3D技术人才的需求已达到空
- 下一篇: python数据可视化:使用dash给博