跳到主要内容

在 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 仓库
  2. 安装依赖项
  3. 执行平台准备工作
  4. 构建 Apache Cloudberry
  5. 验证集群

第 1 步:克隆 GitHub 仓库

将 GitHub 仓库 apache/cloudberry 克隆到目标机器:

git clone https://github.com/apache/cloudberry.git

第 2 步:安装依赖项

进入仓库目录,根据你的操作系统安装依赖项:

  1. 安装开发工具 Development Tools。

    sudo yum group install -y "Development Tools"
  2. 安装依赖项。

    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
  3. 执行 README.Rhel-Rocky.bash 脚本安装更多依赖项。

    cd ~/cloudberry/deploy/build/
    ./README.Rhel-Rocky.bash

第 3 步:执行平台准备工作

在操作系统上安装所有依赖项后,在构建 Apache Cloudberry 之前你还需要执行一些平台准备工作。这些操作包括在平台上手动运行 ldconfig、创建 gpadmin 用户以及设置密码以启动 Apache Cloudberry 并进行测试。

  1. 确保将 /usr/local/lib/usr/local/lib64 添加到 /etc/ld.so.conf 文件中。

    echo -e "/usr/local/lib \n/usr/local/lib64" >> /etc/ld.so.conf
    ldconfig
  2. 创建 gpadmin 用户并设置 SSH 密钥。根据不同的操作系统手动创建 SSH 密钥,这样你就可以在不输入密码的情况下运行 ssh localhost

    useradd 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 了。按顺序执行以下命令。

  1. 进入 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
  2. 编译源码并安装数据库。

    make -j8
    make -j8 install
  3. 将 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
  4. 启动示例集群。

    make create-demo-cluster
  5. 执行以下命令,以准备测试。此命令将为测试配置端口和环境变量。

    该命令会配置端口和环境变量,例如 PGPORT(主节点的默认端口)和 COORDINATOR_DATA_DIRECTORY(主节点的数据目录)。

    source gpAux/gpdemo/gpdemo-env.sh

第 5 步:验证集群

  1. 你可以通过以下命令来验证集群是否已成功启动。如果成功启动,你会看到端口在 70007007 之间的多个 postgres 进程。

    ps -ef | grep postgres
  2. 连接至 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)