Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/build-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,15 @@ jobs:
build_image bigdata latest docker_bigdata/Dockerfile --build-arg "ARG_PROFILE_JAVA=base" --build-arg "VERSION_JDK=11"
push_image

qpod_cloudberry:
name: "cloudberry"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
source ./tool.sh
build_image cloudberry latest docker_cloudberry/Dockerfile && push_image

qpod_elasticsearch:
name: "elasticsearch"
runs-on: ubuntu-latest
Expand Down
16 changes: 8 additions & 8 deletions docker_greenplum/Dockerfile → docker_cloudberry/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ FROM ${BASE_NAMESPACE:+$BASE_NAMESPACE/}${BASE_IMG} AS builder

COPY rootfs /

RUN set -x && source /opt/utils/script-utils.sh \
&& install_apt /opt/utils/install_list_greenplum.apt \
RUN set -exu && source /opt/utils/script-utils.sh \
&& install_apt /opt/utils/install_list_cloudberry.apt \
&& apt-get -qq install -yq --no-install-recommends gcc g++ bison flex cmake pkg-config ccache ninja-build \
# && VERSION_GPDB_RELEASE=$(curl -sL https://github.com/greenplum-db/gpdb/releases.atom | grep 'releases/tag' | grep "/7." | head -1 | grep -Po '\d[\d.]+' ) \
# && URL_GBDP="https://github.com/greenplum-db/gpdb/archive/refs/tags/${VERSION_GPDB_RELEASE}.tar.gz" \
&& URL_GBDP="https://github.com/greenplum-db/gpdb-archive/archive/refs/heads/main.tar.gz" \
&& echo "Downloading GBDP src release ${VERSION_GPDB_RELEASE:-archive} from: ${URL_GBDP}" \
&& install_tar_gz $URL_GBDP && mv /opt/gpdb-* /opt/gpdb_src \
&& cd /opt/gpdb_src \
# && VER_CLOUDBERRY=$(curl -sL https://github.com/apache/cloudberry/releases.atom | grep 'releases/tag' | grep "/7." | head -1 | grep -Po '\d[\d.]+' ) \
# && URL_CLOUDBERRY="https://github.com/apache/cloudberry/archive/refs/tags/${VER_CLOUDBERRY}.tar.gz" \
&& URL_CLOUDBERRY="https://github.com/apache/cloudberry/archive/refs/heads/main.tar.gz" \
&& echo "Downloading cloudberry src release ${VER_CLOUDBERRY:-archive} from: ${URL_CLOUDBERRY}" \
&& install_tar_gz $URL_CLOUDBERRY && mv /opt/cloudberry-* /opt/cloudberry_src \
&& cd /opt/cloudberry_src \
&& PYTHON=/opt/conda/bin/python3 ./configure --prefix=/opt/gpdb --with-perl --with-python --with-libxml --with-gssapi --with-openssl \
&& sudo make -j16 && sudo make install -j16

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# GPDB安装文档
# Cloudberry安装文档

本文档介绍GPDB的安装,以目前Github上开源的最新版本为例。
本文档介绍Cloudberry的安装,以目前Github上开源的最新版本为例。

GPDB集群为主从模式,主结点称为master结点或者coordinator结点,从结点称为segment结点。
Cloudberry集群为主从模式,主结点称为master结点或者coordinator结点,从结点称为segment结点。

## 准备工作(均为必须)

### 1.1 建立用户gpadmin

在每台服务器上,为GPDB创建新用户:gpadmin,并为该用户设置初始密码,并建立密钥:
在每台服务器上,为Cloudberry创建新用户:gpadmin,并为该用户设置初始密码,并建立密钥:

```shell
USERNAME=gpadmin \
Expand All @@ -32,7 +32,7 @@ ssh-keygen -t rsa -b 4096 -N "" -C `hostname` -f ~/.ssh/id_rsa

在主节点上,也即第1台服务器上,授权通过ssh访问各台服务器:
建议先安装sshpass: apt-get install sshpass,然后再从第1台服务器上执行下面的命令(最后一个参数为主机名)
```sshpass -p "P@ssw0rd!" ssh-copy-id -o StrictHostKeyChecking=no gpadmin@GPDB-001```
```sshpass -p "P@ssw0rd!" ssh-copy-id -o StrictHostKeyChecking=no gpadmin@Cloudberry-001```

### 1.3 安装依赖

Expand All @@ -58,15 +58,15 @@ sudo pip3 install conan

```txt
# IP Address Node Name
30.23.109.100 GPDB-001
30.23.109.101 GPDB-002
30.23.109.102 GPDB-003
30.23.109.100 Cloudberry-001
30.23.109.101 Cloudberry-002
30.23.109.102 Cloudberry-003
```

## 2 编译安装GPDB
## 2 编译安装Cloudberry

在第一台服务器上,以gpadmin用户,从gpdb的源代码编译安装GPDB到/opt/gpdb/
本例中,下载的源代码来自于gpdb官方代码库的master branch: https://github.com/greenplum-db/gpdb.git
在第一台服务器上,以gpadmin用户,从Cloudberry的源代码编译安装Cloudberry到/opt/gpdb/
本例中,下载的源代码来自于Cloudberry官方代码库的master branch: https://github.com/apache/cloudberry.git
master branch编译出的版本为基于PostgreSQL 12.x的版本,且该版本可以只使用Python3。

### 2.1 准备Python依赖
Expand All @@ -80,9 +80,9 @@ sudo bash ./Miniconda3-latest-Linux-x86_64.sh -f -b -p /opt/conda \
&& echo "export PATH=/opt/conda/bin:$PATH" >> ~/.bashrc
```

### 2.2 编译GPDB源代码
### 2.2 编译Cloudberry源代码

下载解压GPDB源代码之后,进入源代码目录,进行编译配置(注意这里设置了prefix及PYTHON的路径):
下载解压Cloudberry源代码之后,进入源代码目录,进行编译配置(注意这里设置了prefix及PYTHON的路径):

```shell
# Configure the project first
Expand All @@ -96,7 +96,7 @@ sudo make -j16 && sudo make install -j16
sudo chown -R gpadmin:gpadmin /opt/gpdb
```

### 2.3 配置GPDB的路径
### 2.3 配置Cloudberry的路径

在gpadmin用户下,执行下面的命令,使gpadmin登录后能默认找到GBDP各组件,如gpssh、gpscp等。

Expand All @@ -106,7 +106,7 @@ echo "source /opt/gpdb/greenplum_path.sh" >> ~/.bashrc

### 2.4 将GDPB自带的python模块软链接到Python的包目录

GPDB自带了一个名为`gppylib`的Python包,用来管理和控制GPDB。通过下面的步骤,使默认的Python能够找到该包。
Cloudberry自带了一个名为`gppylib`的Python包,用来管理和控制Cloudberry。通过下面的步骤,使默认的Python能够找到该包。

```shell
PYTHON_SITE=$(python3 -c 'import sys;print(list(filter(lambda s: "site" in s, sys.path))[0])') \
Expand All @@ -115,26 +115,26 @@ PYTHON_SITE=$(python3 -c 'import sys;print(list(filter(lambda s: "site" in s, sy

### 2.5. 配置服务器列表文件

在第1台服务器上,安装gpdb目录文件到/opt/gpdb之后,进行下面的操作:
在第1台服务器上,安装Cloudberry目录文件到/opt/gpdb之后,进行下面的操作:

创建服务器ID列表文件:在/opt/gpdb/conf目录下创建下面的两个文件(hostlist和seg_host)

```txt
# hostlist
GPDB-001
GPDB-002
GPDB-003
Cloudberry-001
Cloudberry-002
Cloudberry-003
```

```txt
# seg_host
GPDB-002
GPDB-003
Cloudberry-002
Cloudberry-003
```

### 2.6 授权服务器之间SSH互访

在第1台服务器上,通过下面的命令,来进行各主机之间的ssh访问互通,然后将编译好的gpdb目录复制到各个服务器上
在第1台服务器上,通过下面的命令,来进行各主机之间的ssh访问互通,然后将编译好的Cloudberry目录复制到各个服务器上

```bash
gpssh-exkeys -f hostlist
Expand All @@ -149,7 +149,7 @@ gpscp -f seg_host /opt/conda /opt/gpdb =:~/
例如通过下面的echo命令来追加到/etc/hosts文件(参照步骤1.4):

```shell
sudo echo "30.23.109.100 GPDB-001" >> /etc/hosts
sudo echo "30.23.109.100 Cloudberry-001" >> /etc/hosts
```

### 2.8. 修改Linux系统配置
Expand Down Expand Up @@ -201,45 +201,45 @@ vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
```

## 3 准备启动GPDB集群
## 3 准备启动Cloudberry集群

### 3.1 创建GPDB初始化配置文件
### 3.1 创建Cloudberry初始化配置文件

这里需要创建GPDB配置的初始化选项文件,然后配置启动选项,主要关注DATA_DIRECTORY和MIRROR_DATA_DIRECTORY两个选项。
这里需要创建Cloudberry配置的初始化选项文件,然后配置启动选项,主要关注DATA_DIRECTORY和MIRROR_DATA_DIRECTORY两个选项。

初始化的文件模板可以通过GPDB自带的文件,基于此进行修改:
初始化的文件模板可以通过Cloudberry自带的文件,基于此进行修改:

```shell
mkdir -pv /opt/gpdb/conf
cp /opt/gpdb/docs/cli_help/gpconfigs/gpinitsystem_config /opt/gpdb/conf/gpinitsystem_config
mkdir -pv /data/gpdb/coordinator
mkdir -pv /data/gpdb/primary1 /data/gpdb/primary2 /data/gpdb/mirror1 /data/gpdb/mirror2
mkdir -pv /data/Cloudberry/coordinator
mkdir -pv /data/Cloudberry/primary1 /data/Cloudberry/primary2 /data/Cloudberry/mirror1 /data/Cloudberry/mirror2
```

注意,在下面配置文件中的目录,各个目录名都需要预先创建好。
同时也需要规划好磁盘空间,例如上面的`/data/gpdb`目录,将来就会用来作为数据存储空间,需要预留一定磁盘空间。
同时也需要规划好磁盘空间,例如上面的`/data/Cloudberry`目录,将来就会用来作为数据存储空间,需要预留一定磁盘空间。

配置文件具体配置项如下:

```conf
#集群名称
ARRAY_NAME="GPDB"
ARRAY_NAME="Cloudberry"

SEG_PREFIX="gpseg"

MACHINE_LIST_FILE="/opt/gpdb/conf/seg_host"

# Master结点主机名
COORDINATOR_HOSTNAME=GPDB-001
COORDINATOR_HOSTNAME=Cloudberry-001

#master的数据目录
COORDINATOR_DIRECTORY=/data/gpdb/coordinator
COORDINATOR_DIRECTORY=/data/Cloudberry/coordinator

#指定primary segment的数据目录,网上写的是多个相同目录,多个目录表示一台机器有多个segment
declare -a DATA_DIRECTORY=(/data/gpdb/primary1 /data/gpdb/primary1 /data/gpdb/primary1 /data/gpdb/primary2 /data/gpdb/primary2 /data/gpdb/primary2)
declare -a DATA_DIRECTORY=(/data/Cloudberry/primary1 /data/Cloudberry/primary1 /data/Cloudberry/primary1 /data/Cloudberry/primary2 /data/Cloudberry/primary2 /data/Cloudberry/primary2)

# mirror的数据目录,和主数据一样,一个对一个,多个对多个
declare -a MIRROR_DATA_DIRECTORY=(/data/gpdb/mirror1 /data/gpdb/mirror1 /data/gpdb/mirror1 /data/gpdb/mirror2 /data/gpdb/mirror2 /data/gpdb/mirror2)
declare -a MIRROR_DATA_DIRECTORY=(/data/Cloudberry/mirror1 /data/Cloudberry/mirror1 /data/Cloudberry/mirror1 /data/Cloudberry/mirror2 /data/Cloudberry/mirror2 /data/Cloudberry/mirror2)
```

### 3.2 执行数据初始化
Expand All @@ -253,15 +253,15 @@ gpinitsystem -c gpinitsystem_config
### 3.3 集群基本配置

完成上述步骤之后,集群即启动完成,可以通过master结点的IP和端口进行连接。下面进行一下初始化操作:
在master结点上,进入到目录`/data/gpdb/coordinator/gpseg-1/`,修改配置文件`pg_hba.conf`使得客户端能连接到GPDB的master结点。如果需要允许任何IP访问,添加下面一行即可:
在master结点上,进入到目录`/data/Cloudberry/coordinator/gpseg-1/`,修改配置文件`pg_hba.conf`使得客户端能连接到Cloudberry的master结点。如果需要允许任何IP访问,添加下面一行即可:

```conf
host all all 0.0.0.0/0 trust
```

然后执行`pg_ctl reload -D ./`

### 3.4 为GPDB配置用户
### 3.4 为Cloudberry配置用户

之后从master服务器的本地连接到集群,为gpadmin用户修改密码,之后即可从其他服务器连接访问集群。

Expand Down
4 changes: 2 additions & 2 deletions docker_greenplum/README.md → docker_cloudberry/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# GreenplumDB
# Cloudberry

This is the docker contianer for starting a GreenplumDB 7 cluster.
This is the docker contianer for starting a Cloudberry 7 cluster.
https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/landing-index.html

Note: After the creation of a cluster, it is required to initialize the cluster using the functions in `$GPHOME/entrypoint.sh`.
Expand Down
Loading