動態

詳情 返回 返回

【趙渝強老師】基於PostgreSQL的MPP集羣:Greenplum - 動態 詳情

Greenplum本質上是一個基於PostgreSQL的關係型數據庫集羣,實際上是由多個獨立的數據庫服務組合而成的一個邏輯數據庫。與Oracle的RAC不同,這種數據庫集羣採取的是MPP(Massively Parallel Processing,大規模並行處理)架構。Greenplum最大的特點就是基於低成本的開放平台基礎上提供強大的並行數據計算性能和海量數據管理能力。下圖展示了Greenplum的體系架構。
image.png

視頻講解如下:
https://www.bilibili.com/video/BV1yNpyzTEun/?aid=115213554685...

Greenplum的體系架構由三部分組成:Master Host、Segment Host、Interconnect,其中每個Segment Host相當於一個獨立的PostgreSQL數據庫實例。下表列舉了每個組成部分的功能和作用。
image.png

在瞭解到了Greenplum的基本知識後,本小節將通過具體的操作步驟來演示如何安裝和配置Greenplum集羣。
image.png

一、以下步驟使用root用户在每台主機上執行

(1)禁用SELinux和防火牆

(2)編輯文件/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.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

(3)生效內核配置參數。

sysctl -p

(4)編輯文件/etc/security/limits.conf配置資源限制參數。

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

(5)編輯文件/etc/hosts配置主機名和IP地址的映射關係。

192.168.79.11 node11
192.168.79.12 node12
192.168.79.13 node13
192.168.79.14 node14

(6)創建用户和用户組

groupadd gpadmin
useradd -g gpadmin gpadmin
passwd gpadmin

(7)創建需要的目錄,並授權給gpadmin。

mkdir -p /home/gpadmin/data       (可以只在Segment上創建)
mkdir -p /home/gpadmin/master     (可以只在Master上創建)
chown -R gpadmin:gpadmin /home/gpadmin

(8)編輯文件/etc/sudoers給gpadmin用户加上sudo權限。

gpadmin ALL=(ALL)       ALL

(9)重啓服務器。
(10)安裝Greenplum。

yum -y install greenplum-db-6.24.3-rhel7-x86_64.rpm

# 這一步將會把Greenplum默認安裝到/usr/local/目錄下。
# 這裏需要配置阿里雲YUM源和DNS
cd /etc/yum.repos.d/
rm -rf *
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 配置DNS
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

(11)授權給gpadmin。

chown -R gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*

(12)切換到gpadmin用户配置免密碼登錄

su - gpadmin
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub gpadmin@node11
....

二、以下步驟使用gpadmin用户在master主機上執行。

(13)在gpadmin用户主目錄創建名為all_host的文件,內容為所有Greenplum主機名

node11
node12
node13
node14

(14)在gpadmin用户主目錄創建名為seg_host的文件,內容為所有segment主機名

node11
node12
node13

(15)設置Greenplum環境。

source /usr/local/greenplum-db-6.24.3/greenplum_path.sh

(16)確認軟件安裝

gpssh -f all_host -e 'ls -l /usr/local/greenplum-db-6.24.3/'

# 如果Greenplum安裝成功,應該能夠在沒有密碼提示的情況下登錄到所有主機。

(17)驗證主機環境(這裏需要等待一段時間)

檢查點對點網絡傳輸速度
    
# 雙向同時發包,適合偶數個網口的情況
gpcheckperf -f all_host -r N -d /tmp > subnet1.out
# 單向順序發包,適合奇數或偶數個網口的情況
gpcheckperf -f all_host -r n -d /tmp > subnet2.out

檢查全矩陣多對多網絡傳輸速度
gpcheckperf -f all_host -r M -d /tmp > subnet3.out
    
驗證磁盤I/O和內存帶寬性能
gpcheckperf -f seg_host -r ds -D -d /home/gpadmin/data > io.out

(18)編輯Greenplum初始化配置文件initgp_config,輸入下面的內容:

SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/data)
MASTER_HOSTNAME=node14
MASTER_PORT=5432
MASTER_DIRECTORY=/home/gpadmin/master
DATABASE_NAME=gpdb

(19)初始化數據庫。

gpinitsystem -c initgp_config -h seg_host

# 輸出的信息如下:
......
gpinitsystem:node14:gpadmin-[INFO]:-Greenplum Primary Segment Configuration
gpinitsystem:node14:gpadmin-[INFO]:----------------------------------------
gpinitsystem:node14:gpadmin-[INFO]:-node11     33000     node11     /home/gpadmin/data/gpseg0 2
gpinitsystem:node14:gpadmin-[INFO]:-node12     33000     node12     /home/gpadmin/data/gpseg1 3
gpinitsystem:node14:gpadmin-[INFO]:-node13     33000     node13     /home/gpadmin/data/gpseg2 4

Continue with Greenplum creation Yy|Nn (default=N):
> y  這裏輸入y

(20)數據庫初始化完成後會自動啓動數據庫集羣,並輸出下面的信息:

gpinitsystem:node14:gpadmin-[WARN]:-*******************************************************
gpinitsystem:node14:gpadmin-[INFO]:-Greenplum Database instance successfully created
gpinitsystem:node14:gpadmin-[INFO]:-------------------------------------------------------

三、驗證集羣環境

(1)登錄Greenplum集羣

psql -d gpdb

(2)查詢版本信息

gpdb=# select version();

#輸出的信息如下
          version                   
-----------------------------------------------------------------------
 PostgreSQL 9.4.26 (Greenplum Database 6.24.3) on x86_64-unknown-linux-gnu
 compiled by gcc (GCC) 6.4.0, 64-bit compiled on May  3 2023 20:34:57
(1 row)

(3)查詢節點信息

gpdb=# select * from gp_segment_configuration;

# 輸出的信息如下:
......| port  | hostname | address |           datadir            
------+-------+----------+---------+------------------------------
......|  5432 | node14   | node14  | /home/gpadmin/master/gpseg-1
......| 33000 | node11   | node11  | /home/gpadmin/data/gpseg0
......| 33000 | node12   | node12  | /home/gpadmin/data/gpseg1
......| 33000 | node13   | node13  | /home/gpadmin/data/gpseg2
(4 rows)
user avatar zohocrm 頭像 free_like_bird 頭像 yansudeshanyang 頭像
點贊 3 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.