跳到主要内容

编译部署

1. 概述

本文档详细介绍了 Doris 存算分离模式下的编译和部署流程,重点说明了与存算一体模式的区别,特别是新增 Meta Service (MS) 模块的编译、配置和管理。

2. 获取二进制

2.1 直接下载

已编译好的二进制文件(包含所有 Doris 模块)可从 Doris 下载页面 获取(选择 3.0.2 或更高版本)。

2.2 编译产出 (可选)

使用代码库自带的 build.sh 脚本进行编译。新增的 MS 模块通过 --cloud 参数编译。

sh build.sh --fe --be --cloud 

编译完成后,在 output 目录下会新增 ms 目录:

output
├── be
├── fe
└── ms
├── bin
├── conf
└── lib

3. Meta Service 部署

3.1 配置

./conf/doris_cloud.conf 文件中,主要需要修改以下两个参数:

  1. brpc_listen_port:Meta Service 的监听端口,默认为 5000。
  2. fdb_cluster:FoundationDB 集群的连接信息,部署 FoundationDB 时可以获取。(如果使用 Doris 提供的 fdb_ctl.sh 部署的话,可在 $FDB_HOME/conf/fdb.cluster 文件里获取该值)。

示例配置:

brpc_listen_port = 5000
fdb_cluster = xxx:yyy@127.0.0.1:4500

注意:fdb_cluster 的值应与 FoundationDB 部署机器上的 /etc/foundationdb/fdb.cluster 文件内容一致 (如果使用 Doris 提供的 fdb_ctl.sh 部署的话,可在 $FDB_HOME/conf/fdb.cluster 文件里获取该值)。

示例, 文件的最后一行就是要填到doris_cloud.conf 里 fdb_cluster 字段的值

cat /etc/foundationdb/fdb.cluster

# DO NOT EDIT!
# This file is auto-generated, it is not to be edited by hand.
cloud_ssb:A83c8Y1S3ZbqHLL4P4HHNTTw0A83CuHj@127.0.0.1:4500

3.2 启动与停止

环境要求

确保已正确设置 JAVA_HOME 环境变量,指向 OpenJDK 17,进入 ms 目录。

启动命令

export JAVA_HOME=${path_to_jdk_17}
bin/start.sh --daemon

停止命令

bin/stop.sh

验证启动

检查 doris_cloud.out 文件中是否有 successfully started 的输出信息。

生产环境中请确保至少有 3 个 Meta Service 节点。

4. 数据回收功能独立部署(可选)

信息

Meta Service 本身具备了元数据管理和回收功能,这两个功能可以独立部署,如果你想独立部署,可以参考这一节。

准备工作

  1. 创建新的工作目录(如 recycler)。

  2. 复制 ms 目录内容到新目录:

    cp -r ms recycler

配置

在新目录的配置文件中修改 BRPC 监听端口 brpc_listen_portfdb_cluster 的值。

启动数据回收功能

export JAVA_HOME=${path_to_jdk_17}
bin/start.sh --recycler --daemon

启动仅元数据操作功能

export JAVA_HOME=${path_to_jdk_17}
bin/start.sh --meta-service --daemon

5. FE 和 BE 的启动流程

本节详细说明了在存算分离架构下启动 FE(Frontend)和 BE(Backend)的步骤。

5.1 启动顺序

  1. 以 MASTER 角色启动实例的第一个 FE
  2. 向实例中添加其他 FE 和 BE
  3. 添加第一个 Storage Vault

5.2 启动 MASTER 角色的 FE

5.2.1 配置 fe.conf

fe.conf 文件中,需要配置以下关键参数:

  1. deploy_mode

    • 描述:指定 doris 启动模式
    • 格式:cloud 表示存算分离模式,其它存算一体模式
    • 示例:cloud
  2. cluster_id

    • 描述:存算分离架构下集群的唯一标识符,不同的集群必须设置不同的 cluster_id
    • 格式:int 类型
    • 示例:可以使用如下 shell 脚本生成一个随机 id 使用。
      echo $(($((RANDOM << 15)) | $RANDOM))
      警告

      不同的集群必须设置不同的 cluster_id

  3. meta_service_endpoint

    • 描述:Meta Service 的地址和端口
    • 格式:IP地址:端口号
    • 示例:127.0.0.1:5000, 可以用逗号分割配置多个meta service。

5.2.2 启动 FE

启动命令示例:

bin/start_fe.sh --daemon

第一个 FE 进程初始化集群并以 FOLLOWER 角色工作。使用 mysql 客户端连接 FE 使用 show frontends 确认刚才启动的 FE 是 master。

5.3 添加其他 FE 节点

其他节点同样根据上述步骤修改配置文件并启动,使用 mysql 客户端连接 Master 角色的 FE,并用以下 SQL 命令添加额外的 FE 节点:

ALTER SYSTEM ADD FOLLOWER "host:port";

host:port 替换为 FE 节点的实际地址和编辑日志端口。更多信息请参见 ADD FOLLOWERADD OBSERVER

生产环境中请确保在 FOLLOWER 角色中的前端 (FE) 节点总数,包括第一个 FE,保持为奇数。一般来说,三个 FOLLOWER 就足够了。OBSERVER 角色的前端节点可以是任意数量。

5.4 添加 BE 节点

要向集群添加 Backend 节点,请对每个 Backend 执行以下步骤:

5.4.1 配置 be.conf

be.conf 文件中,需要配置以下关键参数:

  1. deploy_mode

    • 描述:指定 doris 启动模式
    • 格式:cloud 表示存算分离模式,其它存算一体模式
    • 示例:cloud
  2. file_cache_path

    • 描述: 用于文件缓存的磁盘路径和其他参数,以数组形式表示,每个磁盘一项。path 指定磁盘路径,total_size 限制缓存的大小;-1 或 0 将使用整个磁盘空间。
    • 格式: [{"path":"/path/to/file_cache","total_size":21474836480},{"path":"/path/to/file_cache2","total_size":21474836480}]
    • 示例: [{"path":"/path/to/file_cache","total_size":21474836480},{"path":"/path/to/file_cache2","total_size":21474836480}]
    • 默认: [{"path":"${DORIS_HOME}/file_cache"}]

5.4.1 启动和添加 BE

  1. 启动 Backend:

    使用以下命令启动 Backend:

    bin/start_be.sh --daemon
  2. 将 Backend 添加到集群:

    使用 MySQL 客户端连接到任意 Frontend,并执行:

    ALTER SYSTEM ADD BACKEND "<ip>:<heartbeat_service_port>" [PROTERTIES propertires];

    <ip> 替换为新 Backend 的 IP 地址,将 <heartbeat_service_port> 替换为其配置的心跳服务端口(默认为 9050)。

    可以通过 PROPERTIES 设置 BE 所在的 计算组。

    更详细的用法请参考 ADD BACKENDREMOVE BACKEND

  3. 验证 Backend 状态:

    检查 Backend 日志文件(be.log)以确保它已成功启动并加入集群。

    您还可以使用以下 SQL 命令检查 Backend 状态:

    SHOW BACKENDS;

    这将显示集群中所有 Backend 及其当前状态。

6. 创建 Storage Vault

Storage Vault 是 Doris 存算分离架构中的重要组件。它们代表了存储数据的共享存储层。您可以使用 HDFS 或兼容 S3 的对象存储创建一个或多个 Storage Vault 。可以将一个 Storage Vault 设置为默认 Storage Vault ,系统表和未指定 Storage Vault 的表都将存储在这个默认 Storage Vault 中。默认 Storage Vault 不能被删除。以下是为您的 Doris 集群创建 Storage Vault 的方法:

6.1 创建 HDFS Storage Vault

要使用 SQL 创建 Storage Vault ,请使用 MySQL 客户端连接到您的 Doris 集群

CREATE STORAGE VAULT IF NOT EXISTS hdfs_vault
PROPERTIES (
"type"="hdfs",
"fs.defaultFS"="hdfs://127.0.0.1:8020"
);

6.2 创建 S3 Storage Vault

要使用兼容 S3 的对象存储创建 Storage Vault ,请按照以下步骤操作:

  1. 使用 MySQL 客户端连接到您的 Doris 集群。

  2. 执行以下 SQL 命令来创建 S3 Storage Vault :

CREATE STORAGE VAULT IF NOT EXISTS s3_vault
PROPERTIES (
"type"="S3",
"s3.endpoint"="s3.us-east-1.amazonaws.com",
"s3.access_key" = "ak",
"s3.secret_key" = "sk",
"s3.region" = "us-east-1",
"s3.root.path" = "ssb_sf1_p2_s3",
"s3.bucket" = "doris-build-1308700295",
"provider" = "S3"
);

要在其他对象存储上创建 Storage Vault ,请参考 创建 Storage Vault

6.3 设置默认 Storage Vault

使用如下 SQL 语句设置一个默认 Storage Vault 。

SET <storage_vault_name> AS DEFAULT STORAGE VAULT

7. 注意事项

  • 仅元数据操作功能的 Meta Service 进程应作为 FE 和 BE 的 meta_service_endpoint 配置目标。
  • 数据回收功能进程不应作为 meta_service_endpoint 配置目标。