Greenplum安裝


最近需要安裝Greenplum測試一些東西,在安裝過程中出現了許多問題,所以在這里將安裝過程整理一下,主要參考《Greenplum企業應用實踐》和http://jxzhfei.blog.51cto.com/1382161/1767126,鏈接的文章和書中的安裝是基本吻合的,但是比書上更加詳細一些。

我安裝的平台有兩個:win虛擬機和雲服務器,有區別的地方我會注明的。

下面我詳細記錄一下安裝過程:

1.安裝centOS操作系統

我使用的是CentOS6.5。需要注意的是CenOS6和CentOS7的差別還是很大的。

1.CenOS7似乎比CenOS6占用的內存更多一些。

我最初是在win虛擬機上安裝CenOS7的Gnome版本,我的win是4G內存,裝兩個CenOS7就已經跑不動了;之后改為CenOS6.5之后也安裝Gnome桌面,同樣的內存,可以支持三個CenOS6.5同時跑,每個虛擬機分配的內存是512M。后來做一些操作發現也跑不動了,之后將內存加為6G才基本可以跑,但是發現也有較大的內存交換。

發生內存交換的時候,我查看了win的任務管理器,發現其實內存並沒有達到100%,占用的一般是3.x/4G或者5.x/6G,而硬盤的使用率是100%。剛開始不知道是發生了交換,以為內存是夠用的,可是硬盤為什么達到100%使用率,后來問了其他人才得知這是內存不夠用發生了交換,所以硬盤的寫壓力比較大。

2.CenOS7的mini版本中有很多命令都沒有安裝,例如ifconfig在mini版本中就不能執行,但是在CenOS6中是可以的

3.CenOS7的防火牆與CentOS6也不相同,CentOS7的防火牆默認使用的是firewall,與CentOS6使用iptables不一樣。所以關掉防火牆的方法也不相同,因為之后安裝Greenplum時需要關閉防火牆,所以比較關心這個問題

4.CenOS7的桌面版本有Gnome版本和KDE版本,發現KDE版本其實還挺難用的,所以后來也舍棄了;CentOS6在安裝的過程中只看到了Desktop版本,並不區分Gnome和KDE版本,所以我姑且認為CentOS6只有KDE版本。

由於這個不同,我后來放棄了CentOS7,使用了CentOS6版本。其實安裝Greenplum不需要使用桌面,只需要命令行就可以了,但是由於本人水平有限,需要借助一些桌面,所以在虛擬機上安裝了CentOS的桌面版。

2.配置系統信息做安裝Greenplum的准備工作

1.Greenplum集群介紹

這里使用1個master,3個segment的集群,ip為

196.168.0.56

196.168.0.57

196.168.0.58

196.168.0.59

其中196.168.0.56為master,其余為segment。

2.修改/etc/hosts文件(所有的機器都要修改)

這里主要是為之后Greenplum能夠在各個節點之間相互通信做准備

[root@mdw ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.0.56     mdw   mdw

192.168.0.57     sdw1   sdw1

192.168.0.58     sdw2   sdw2

192.168.0.59     sdw3   sdw3
(主機ip地址    主機名  hostlist配置中的名字)

注意一定要按照這個格式寫,三個參數分別代表的含義在括號中已經做了說明。

配置了這個文件之后,一定要同時修改 /etc/sysconfig/network這個文件如下(所有機器都要修改):

[root@mdw ~]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=mdw

 

這里的HOSTNAME一定要與/etc/hosts中的主機名一致,最終可以使用ping命令測試是否配置好了:

[root@mdw ~]# ping sdw1
PING sdw1 (192.168.0.57) 56(84) bytes of data.
64 bytes from sdw1 (192.168.0.57): icmp_seq=1 ttl=64 time=1.14 ms
64 bytes from sdw1 (192.168.0.57): icmp_seq=2 ttl=64 time=0.726 ms
64 bytes from sdw1 (192.168.0.57): icmp_seq=3 ttl=64 time=0.714 ms
^C
--- sdw1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2279ms
rtt min/avg/max/mdev = 0.714/0.862/1.148/0.204 ms
[root@mdw ~]# ping sdw2
PING sdw2 (192.168.0.58) 56(84) bytes of data.
64 bytes from sdw2 (192.168.0.58): icmp_seq=1 ttl=64 time=0.940 ms
^C
--- sdw2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 971ms
rtt min/avg/max/mdev = 0.940/0.940/0.940/0.000 ms
[root@mdw ~]# ping sdw3
PING sdw3 (192.168.0.59) 56(84) bytes of data.
64 bytes from sdw3 (192.168.0.59): icmp_seq=1 ttl=64 time=1.62 ms
64 bytes from sdw3 (192.168.0.59): icmp_seq=2 ttl=64 time=0.669 ms
^C
--- sdw3 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1146ms
rtt min/avg/max/mdev = 0.669/1.148/1.627/0.479 ms

一定要使用主機名來測試,使用ip地址測試無效。

注:修改了/etc/sysconfig/network文件之后,可以將/home/gpadmin/.gphostcache刪除掉,因為如果在修改network文件之前執行過gpssh-exkeys,可能會在gphostcache文件中生成主機名和hostlist配置中的名字形成對應關系,而greenplum之后不會再修改這個文件,所以這里是個坑。。

3.創建用戶和用戶組(所有機器都要創建)

[root@mdw ~]# groupadd -g 530 gpadmin
[root@mdw ~]# useradd -g 530 -u530 -m -d /home/gpadmin -s /bin/bash gpadmin
[root@mdw ~]# passwd gpadmin
Changing password for user gpadmin.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

4.修改系統內核(所有機器,可以參考書上216頁)

[root@mdw ~]# vi /etc/sysctl.conf
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
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.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.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2

[root@dw-greenplum-1~]# sysctl -p(讓配置生效)

注意每台機器都要修改,不然就會初始化不成功,我在操作的過程中segment結點復制的時候不小心少了一塊內容,死活不能gpinitsystem成功,花了好多時間調試,一直找不到問題。

5.修改文件打開限制(每台機器都要修改):

[root@mdw ~]# vi /etc/security/limits.conf
# End of file
* soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072

在這個文件文末添加上面四行就可以了。

6.關閉防火牆(每台機器都要)

[root@mdw ~]#chkconfig iptables off

除此之外

[root@mdw selinux]# cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

好了現在准備工作已經做好了,可以開始安裝Greenplum了

3.安裝Greenplum

1.創建安裝文件目錄(每台機器)

[root@mdw ~]# mkdir /opt/greenplum
[root@mdw ~]# chown -R gpadmin:gpadmin /opt/greenplum

之后安裝文件就放在這個目錄下面

2.下載安裝包

官網https://network.pivotal.io/products/pivotal-gpdb#/releases/1683

上圖中選擇最新發布版本,

上圖中選擇最后一個

上圖中選擇最后一個。

3.master上安裝Greenplum(只需master即可)

將下載的文件放在CenOS系統中自己能找到的位置即可,給該文件賦予執行權限,之后執行該文件,即開始安裝

[root@mdw ~]# chmod +x greenplum-db-4.3.3.1-build-1-RHEL5-x86_64.bin
[root@mdw ~]# ./greenplum-db-4.3.3.1-build-1-RHEL5-x86_64.bin

期間需要修改默認安裝目錄,輸入/opt/greenplum/greenplum-db-4.8.3.1

之后即可安裝成功,此時master上的Greenplum安裝成功了。但是之前我們都是以root身份安裝的,所以要將安裝目錄下的文件的所有者都修改為gpadmin

[root@mdw ~]# chown -R gpadmin:gpadmin /opt/greenplum

因為只在master上安裝了Greenplum,所以下面要將安裝包批量發送到每個segment上,才能算是整個Greenplum集群完整安裝了Greenplum。下面的操作都是為了連接所有節點,並將安裝包發送到每個節點。

4.創建配置文件

[root@mdw ~]# su gpadmin
[gpadmin@mdw root]$ cd
[gpadmin@mdw ~]$ cat ./conf/hostlist 
mdw
sdw1
sdw2
sdw3
[gpadmin@mdw ~]$ cat ./conf/seg_hosts 
sdw1
sdw2
sdw3

注意此時需要轉換成gpadmin身份來操作了,按照上面的文件內容創建hostlist和seg_hosts文件,備用。

這里文件中的mdw、sdw1、sdw2、sdw3即為之前在/etc/hosts文件中配置的最后一個參數。

5.打通所有節點

greenplum_path.sh中保存了運行Greenplum的一些環境變量設置,包括GPHOOME、PYTHONHOME等設置

[gpadmin@mdw ~]$ source /opt/greenplum/greenplum-db/greenplum_path.sh 
[gpadmin@mdw ~]$ gpssh-exkeys -f /home/gpadmin/conf/hostlist 
[STEP 1 of 5] create local ID and authorize on local host
  ... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped

[STEP 2 of 5] keyscan all hosts and update known_hosts file

[STEP 3 of 5] authorize current user on remote hosts
  ... send to sdw1
  ... send to sdw2
  ... send to sdw3

[STEP 4 of 5] determine common authentication file content

[STEP 5 of 5] copy authentication files to all remote hosts
  ... finished key exchange with sdw1
  ... finished key exchange with sdw2
  ... finished key exchange with sdw3

[INFO] completed successfully

這就說明成功打通了,之后就可以使用下面的命令開啟批量操作,如下:

注意gpssh-exkeys命令使用的時候一定要用gpadmin身份,因為這個命令會生成ssh的免密碼登錄的秘鑰,在/home/gpadmin/.ssh這里。如果使用root身份使用gpssh-exkeys命令,那么生成的.ssh秘鑰在root的home下面或者是在/home/gpadmin下面但是是root的所有者,如果之后使用gpadmin身份執行相應操作的時候就沒有權限。

[gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/hostlist 
Note: command history unsupported on this machine ... => pwd [sdw1] /home/gpadmin [sdw3] /home/gpadmin [sdw2] /home/gpadmin [ mdw] /home/gpadmin => exit

這里pwd命令是linux中的查看路徑命令,這里也是查看一下批量操作時所處的位置,從中可以看到同時連接到了4個節點。這里如果/etc/hosts文件中參數只設置了兩個,沒有設置主機名,就只能同時連接2個節點,而且是隨機的。發生這個錯誤當時也是找了好長時間。

這里我們只是測試一下,exit之后先做一些其他的操作。

6.將安裝包分發到每個子節點

打通之后需要將master中的greenplum安裝包批量復制到各個segment節點上。

[gpadmin@mdw conf]$ cd /opt/greenplum/
打包:
[gpadmin@mdw greenplum]$ tar -cf gp.4.3.tar greenplum-db-4.3.8.1/ 然后利用gpscp命令將這個文件復制到每一台機器上: [gpadmin@mdw greenplum]$ gpscp -f /home/gpadmin/conf/hostlist gp.4.3.tar =:/opt/greenplum/

ok,如果沒有意外,就批量復制成功了,可以去子節點的相應文件夾查看,之后要將tar包解壓,我們使用批量操作

[gpadmin@mdw conf]$ gpssh -f hostlist
=> cd /opt/greenplum
[sdw3]
[sdw1]
[sdw2]
[mdw]
=> tar -xf gp.4.3.tar
[sdw3]
[sdw1]
[sdw2]
[mdw]
 
建立軟鏈接
=> ln -s ./greenplum-db-4.3.8.1 greenplum-db
[sdw3]
[sdw1]
[sdw2]
[mdw]
=> ll(可以使用ll查看一下是否已經安裝成功)

這樣就完成了所有節點的安裝。

4.初始化數據庫

在初始化之前的的幾個步驟都是做一些准備工作。

1.批量創建Greenplum數據存放目錄

[gpadmin@mdw conf]$ gpssh -f hostlist
=> mkdir gpdata [sdw3] [ mdw] [sdw2] [sdw1] => cd gpdata [sdw3] [ mdw] [sdw2] [sdw1] => mkdir gpmaster gpdatap1 gpdatap2 gpdatam1 gpdatam2 [sdw3] [ mdw] [sdw2] [sdw1] => ll [sdw3] 總用量 20 [sdw3] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatam1 [sdw3] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatam2 [sdw3] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatap1 [sdw3] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatap2 [sdw3] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpmaster [ mdw] 總用量 20 [ mdw] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatam1 [ mdw] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatam2 [ mdw] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatap1 [ mdw] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatap2 [ mdw] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpmaster [sdw2] 總用量 20 [sdw2] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatam1 [sdw2] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatam2 [sdw2] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatap1 [sdw2] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatap2 [sdw2] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpmaster [sdw1] 總用量 20 [sdw1] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatam1 [sdw1] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatam2 [sdw1] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatap1 [sdw1] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpdatap2 [sdw1] drwxrwxr-x 2 gpadmin gpadmin 4096 7月 18 19:46 gpmaster => exit

2.配置.bash_profile環境變量(每台機器)

[gpadmin@mdw ~]$ cd
[gpadmin@mdw ~]$ cat .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH source /opt/greenplum/greenplum-db/greenplum_path.sh export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1 export PGPORT=2345 export PGDATABASE=testDB

[gpadmin@mdw ~]$ source .bash_profile(讓環境變量生效)

我自己是覺得這個環境變量使用source有時候不能生效,所以需要重啟機器。

這里有個問題,Greenplum自己會安裝一個Python包,是2.6.6的,具體是干什么用的忘了,之后再補充。而CentOS6.5本身自帶有個一Python包,是2.6.2的,設置了以上的環境變量了之后,使用yum安裝一些軟件的時候就會出現問題(因為yum是基於Python的),因為系統就發現自己有兩個Python包,他不知道用哪一個了。我還沒有試過更新系統的Python包,需要安裝軟件的時候,我就將環境變量都注釋掉,安裝完之后再讓他生效。

3.初始化配置文件

[gpadmin@mdw ~]$ cat /home/gpadmin/conf/gpinitsystem_config 
ARRAY_NAME="Greenplum"
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1  /home/gpadmin/gpdata/gpdatap2)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster 
MASTER_PORT=2345
TRUSTED_SHELL=/usr/bin/ssh
MIRROR_PORT_BASE=43000
REPLICATION_PORT_BASE=34000
MIRROR_REPLICATION_PORT_BASE=44000
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts

4.初始化數據庫

[gpadmin@mdw ~]$ gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config -s sdw3

其中sdw3是指master的standby所在的節點,我看書上和網上的一些資料都將standby放在最后一個節點,可能是約定俗成的吧。

如果上面有一些配置有問題,gpinitsystem就不能成功,日志在主節點/home/gpadmin/gpAdminLogs/的gpinitsystem_2016XXXX.log文件中。

需要注意的是如果初始化失敗,一定要認真查看這個日志文件,一味重復安裝沒有太大意義,重要的是要找到主要原因。我在/etc/sysctl.conf文件中粘貼的時候出現了一些錯誤,所以一直找不到原因,最后聯系到Greenplum官方社區,很感謝給與我幫助的人!

 

問題:

1.我使用虛擬機(使用橋接模式)配置的時候,出現過“sdw1文件不能復制到sdw2”,在stackoverflow中看到有人說要設置DNS,我設置DNS之后果真可以gpinitsystem成功了!但是一直不太明白為什么要設置DNS,因為確實不需要DNS解析什么啊。。

2.我在使用虛擬機時,為了省力,先安裝一個CentOS,這個CentOS會在硬盤上有一個安裝包,將這個安裝包拷貝之后,發現拷貝安裝包的CentOS中網卡名與源安裝包的網卡名不一樣,沒有使用eth0,使用了eth1或者Auto-eth1。

 

心得:

1.安裝過程中遇到很多很多問題,很多事關於linux網絡的問題,不過還好,了解之后就好解決了

2.gpinitsystem失敗的原因有很多,一定要認真去看日志,日志會告訴我們錯誤的原因,一次一次的嘗試並不能解決問題。

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM