在 Rocky Linux 8 和 Ubuntu 系统上编译和安装 Apache Cloudberry
本文档来自 GitHub 仓库 apache/cloudberry
。
本文档分享如何在 Rocky Linux 8 和 Ubuntu 上编译和安装 Apache Cloudberry。请注意,本文档仅供开发人员在单节点环境中尝试 Apache Cloudberry。请勿将本文档用于生产环境。
若想了解如何在 Rocky Linux 9 上编译和安装 Apache Cloudberry,请参考 在 Rocky Linux 9 上编译。
按照以下步骤设置开发环境:
第 1 步:克隆 GitHub 仓库
将 GitHub 仓库 apache/cloudberry
克隆到目标机器:
git clone https://github.com/apache/cloudberry.git
第 2 步:安装依赖项
进入仓库目录,根据你的操作系统安装依赖项:
- RHEL 8 和 Rocky Linux 8
- Ubuntu 18.04 或更新版本
-
安装开发工具 Development Tools。
sudo yum group install -y "Development Tools"
-
安装依赖项。
sudo yum install -y epel-release
sudo yum install -y apr-devel bison bzip2-devel cmake3 flex gcc gcc-c++ krb5-devel libcurl-devel libevent-devel libkadm5 libxml2-devel libzstd-devel openssl-devel perl-ExtUtils-Embed python3-devel python3-pip readline-devel xerces-c-devel zlib-devel -
执行
README.Rhel-Rocky.bash
脚本安装更多依赖项。cd ~/cloudberry/deploy/build/
./README.Rhel-Rocky.bash
-
执行
deploy/build
目录下的README.Ubuntu.bash
脚本,以安装依赖项。# 执行该脚本需要输入密码。
sudo ~/cloudberry/deploy/build/README.Ubuntu.bash提示- 当执行
README.Ubutnu.bash
脚本安装依赖项时,会提示你配置 Kerberos 的realm
。你可以输入任意realm
,因为这只是用于测试,而且在测试期间,系统会重新配置本地服务器/客户端。如果你想跳过此手动配置,请执行export DEBIAN_FRONTEND=noninteractive
。 - 如果脚本下载安装包失败,请尝试使用另一个 Ubuntu 软件源。
- 当执行
-
安装 GCC 10。Ubuntu 18.04 及以上版本应当使用 GCC 10 或以上版本:
# 安装 gcc-10
sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt install gcc-10 g++-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100
第 3 步:执行平台准备工作
在操作系统上安装所有依赖项后,在构建 Apache Cloudberry 之前你还需要执行一些平台准备工作。这些操作包括在平台上手动运行 ldconfig
、创建 gpadmin
用户以及设置密码以启动 Apache Cloudberry 并进行测试。
-
确保将
/usr/local/lib
和/usr/local/lib64
添加到/etc/ld.so.conf
文件中。echo -e "/usr/local/lib \n/usr/local/lib64" >> /etc/ld.so.conf
ldconfig -
创建
gpadmin
用户并设置 SSH 密钥。根据不同的操作系统手动创建 SSH 密钥,这样你就可以在不输入密码的情况下运行ssh localhost
。- Rocky Linux 和 RHEL 8
- Ubuntu
useradd gpadmin # 创建 gpadmin 用户
su - gpadmin # 切换到 gpadmin 用户
ssh-keygen # 创建 SSH 密钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
exituseradd -r -m -s /bin/bash gpadmin # 创建 gpadmin 用户
su - gpadmin # 切换到 gpadmin 用户
ssh-keygen # 创建 SSH 密钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
exit
第 4 步:构建 Apache Cloudberry
安装完所有依赖项并执行了平台准备工作后,你就可以开始构建 Apache Cloudberry 了。按顺序执行以下命令。
-
进入
cloudberry
目录,执行configure
脚本。cd ../..
./configure --with-perl --with-python --with-libxml --with-gssapi --prefix=/usr/local/cloudberrydb提示Apache Cloudberry 默认使用 GPORCA 构建。如果你希望构建出不使用 GPORCA 的 Apache Cloudberry,请在
./configure
命令中添加--disable-orca
参数。./configure --disable-orca --with-perl --with-python --with-libxml --prefix=/usr/local/cloudberry
-
编译源码并安装数据库。
make -j8
make -j8 install -
将 Greenplum 的环境变量引入运行中的 shell。
cd ..
cp -r cloudberry/ /home/gpadmin/
cd /home/gpadmin/
chown -R gpadmin:gpadmin cloudberry/
su - gpadmin
cd cloudberry/
source /usr/local/cloudberry/greenplum_path.sh -
启动示例集群。
- Ubuntu、Rocky Linux 和 RHEL
make create-demo-cluster
-
执行以下命令,以准备测试。此命令将为测试配置端口和环境变量。
该命令会配置端口和环境变量,例如
PGPORT
(主节点的默认端口)和COORDINATOR_DATA_DIRECTORY
(主节点的数据目录)。source gpAux/gpdemo/gpdemo-env.sh
第 5 步:验证集群
-
你可以通过以下命令来验证集群是否已成功启动。如果成功启动,你会看到端口在
7000
到7007
之间的多个postgres
进程。ps -ef | grep postgres
-
连接至 Apache Cloudberry,通过查询系统表
gp_segement_configuration
查看活跃 segment 的信息。有关此系统表的详细描述,参见 Greenplum 文档。psql -p 7000 postgres
psql (14.4, server 14.4)
Type "help" for help.SELECT VERSION();
version
-------------------------------------------------------------------------------------
PostgreSQL 14.4 (Apache Cloudberry 1.6.0+dev.1383.g5cdbab19af build dev) on x86_64-pc-li
nux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-23), 64-bit compiled on Feb
26 2025 18:20:10
(1 row)SELECT * FROM gp_segment_configuration;
dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir | warehouseid
------+---------+------+----------------+------+--------+------+------------+------------+------------------------------------------------------------------------------+-------------
1 | -1 | p | p | n | u | 7000 | i-6wvpa9wt | i-6wvpa9wt | /home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/qddir/demoDataDir-1 | 0
8 | -1 | m | m | s | u | 7001 | i-6wvpa9wt | i-6wvpa9wt | /home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/standby | 0
3 | 1 | p | p | s | u | 7003 | i-6wvpa9wt | i-6wvpa9wt | /home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast2/demoDataDir1 | 0
6 | 1 | m | m | s | u | 7006 | i-6wvpa9wt | i-6wvpa9wt | /home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast_mirror2/demoDataDir1 | 0
2 | 0 | p | p | s | u | 7002 | i-6wvpa9wt | i-6wvpa9wt | /home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0 | 0
5 | 0 | m | m | s | u | 7005 | i-6wvpa9wt | i-6wvpa9wt | /home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0 | 0
4 | 2 | p | p | s | u | 7004 | i-6wvpa9wt | i-6wvpa9wt | /home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast3/demoDataDir2 | 0
7 | 2 | m | m | s | u | 7007 | i-6wvpa9wt | i-6wvpa9wt | /home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast_mirror3/demoDataDir2 | 0
(8 rows)