yagagagaga commented on code in PR #1072: URL: https://github.com/apache/doris-website/pull/1072#discussion_r1776631325
########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/compilation-and-deployment.md: ########## @@ -48,18 +54,23 @@ output └── lib ``` -## Meta Service 部署 +## 3. Meta Service 部署 + +### 3.1 配置 + +在 `./conf/doris_cloud.conf` 文件中,主要需要修改以下两个参数: -### 配置 +1. `brpc_listen_port`:Meta Service 的监听端口,默认为 5000。 +2. `fdb_cluster`:FoundationDB 集群的连接信息,部署 FoundationDB 时可以获取。 -通常情况下,只需在`./conf` 目录下的默认配置文件 `doris_cloud.conf`中修改 `brpc_listen_port` 和 `fdb_cluster` 两个参数。(Meta Service 配置只需一个配置文件。) +示例配置: ```Shell brpc_listen_port = 5000 fdb_cluster = xxx:yyy@127.0.0.1:4500 ``` -上述 `brpc_listen_port = 5000` 是 Meta Service 的默认端口。其中,`fdb_cluster` 是 FoundationDB 集群的连接信息,其值是 FoundationDB 所部署机器上的 `/etc/foundationdb/fdb.cluster` 文件内容。 +注意:`fdb_cluster` 的值应与 FoundationDB 部署机器上的 `/etc/foundationdb/fdb.cluster` 文件内容一致。 Review Comment: ```suggestion 注意:`fdb_cluster` 的值应与 FoundationDB 部署机器上的 `fdb.cluster` 文件内容一致。 ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/before-deployment.md: ########## @@ -24,420 +24,119 @@ specific language governing permissions and limitations under the License. --> -Doris 存算分离架构部署方式示意图如下,共需要 3 个模块参与工作: +# Doris 存算分离模式部署准备 -- **FE**:负责接收用户请求,负责存储库表的元数据,目前是有状态的,未来会和 BE 类似,演化为无状态。 -- **BE**:无状态化的 Doris BE 节点,负责具体的计算任务。BE 上会缓存一部分 Tablet 元数据和数据以提高查询性能。 -- **MS**:存算分离模式新增模块,Meta Service,它主要有两个功能:元数据操作,数据回收。 - - **元数据操作**:元数据管理,提供元数据操作的服务,例如创建 Tablet,新增 Rowset,Tablet 查询以及 Rowset 元数据查询等功能。 - - **数据回收**:通过定期对记录已标记删除的数据的元数据进行扫描,实现对数据的定期异步正向回收(文件实际存储在 S3 或 HDFS 上),而无须列举数据对象进行元数据对比。 +## 1. 概述 - +本文档介绍了 Apache Doris 存算分离模式的部署准备工作。存算分离架构旨在提高系统的可扩展性和性能,适用于大规模数据处理场景。 -Meta Service 是一种无状态化的服务,依赖了一个高性能分布式事务 KV(即 [FoundationDB](https://github.com/apple/foundationdb))来存储元数据,大幅简化了元数据管理流程,同时提供强大的横向的扩展能力。 +## 2. 架构组件 - +Doris 存算分离架构包含三个主要模块: -Doris 存算分离架构依赖于两个外部开源项目,为确保部署顺利,请在开始前预先安装以下依赖: +1. **Frontend (FE)**:处理用户请求和管理元数据。 +2. **Backend (BE)**:无状态计算节点,执行查询任务。 +3. **Meta Service (MS)**:管理元数据操作和数据回收。 -- **FoundationDB (FDB)** -- **OpenJDK17**: 需要安装到所有部署 Meta Service 的节点上。 +## 3. 系统要求 +### 3.1 硬件要求 -## 部署步骤 +- 最小配置:3 台服务器 +- 推荐配置:5 台或更多服务器 -Doris 存算分离模式部署按照模块与分工"自下而上"部署: -1. 存算分离模式机器规划,这一步骤在[本文档](./before-deployment.md)介绍。 -2. 部署 FoundationDB 以及运行环境等基础的依赖,这一步骤不需要 Doris 的编译产出即可完成,在[本文档](./before-deployment.md)介绍。 -3. [部署 Meta Service](./compilation-and-deployment.md) -4. [部署 FE 以及 BE](./creating-cluster.md) +### 3.2 软件依赖 -:::info 备注 -注意:一套 FoundationDB + Meta Service 基础环境可以支撑多个存算分离模式的 Doris 实例(即多套 FE + BE )。 -::: - -## 部署规划 -一般来说 Doris 存算分离模式适用于比较大型的集群(多台机器),机器越多,越能发挥存算分离模式的优势。 -Doris存算分离模式推荐的方式是按照模块划分,尽量避免模块间相互影响。推荐的部署方式以及规划: -* Meta Service 以及 FDB 使用同一批机器(前者消耗CPU,后者消耗IO)。要求大于等于3台。 - * 存算分离模式要正常运行至少要部署一个 Meta Service 进程。这两种进程是无状态的,可以按需增加部署数量,一般每种进程部署3个能够满足需求。 - * 为了保证 FDB 的性能,可靠性以及扩展性,FDB 需要使用多副本部署的方式。 -* FE单独部署,至少1台,可以按需实际查询需要多部署一些 -* BE单独部署,至少1台,可以按需实际查询需要多部署一些 - -**我们也可以根据不同的部署需求进行不同的部署规划:** -1. 测试体验部署:体验存算分离的功能,多个模块混部在一台机器,不能用于生产环境。 -2. 小规模生产部署:最少 3 台机器部署,保证数据的可靠以及后续往规模的扩展性。部分模块混部。 -3. 大规模生产部署:最少 5 台机器部署,保证数据的可靠以及后续往规模的扩展性。最大限度保证模块的隔离。 - -接下来我们给出上述每个具体的部署示例。 - -### 测试体验部署 - -所有模块都混部在一个机器上。FDB 使用单机部署方案,具体参考本文档”安装 FoundationDB“章节,完成单机部署 FDB 部分即可。 -**注意:此方案一定不能用于生产环境。** - -``` - host1 - .------------------. - | FE | - | BE | - | Meta Service | - | FDB | - '------------------' -``` +- FoundationDB (FDB) 7.1.38 或更高版本 +- OpenJDK 17 -### 小规模生产部署 +## 4. 部署规划 -如果机器数量有限,可以使用全混部的方式,但是最少也要求使用3台机器用于 FDB 的部署, -然后所有模块部署在同一批机器,如下是一种可行的规划: -1. 3 台机器部署一个最小规模的 FDB 高可靠高可用集群 -2. 其中 1 台再混部上 FE + BE + Meta Service -3. 另外 2 台再混部上 BE +### 4.1 测试环境部署 -**注意:这个部署方案,BE 如果有大查询可能会影响到 FDB 的工作, CPU 内存 IO 资源。 -这个部署保证了数据的可靠性和扩展性,我们后续可以根据需求增加机器逐渐横向扩展成大规模的部署** +单机部署所有模块,不适用于生产环境。 -``` - host1 host2 host3 - .------------------. .------------------. .------------------. - | FE | | BE | | BE | - | | | | | | - | Meta Service | | | | | - | FDB | | FDB | | FDB | - '------------------' '------------------' '------------------' -``` +### 4.2 生产部署 -### 大规模生产部署 +- 3 台或更多机器部署 FDB +- 3 台或更多机器部署 FE 和 Meta Service +- 3 台或更多机器部署 BE -下图展示了一种比较大规模的部署方案,这个部署方式可以由小规模部署方案逐渐横向扩展形成。 -1. FE 使用 2 台独立机器部署(按需增加机器,可以使用多于 2 台机器,但是一般 2 台足够),保证请求的高可用(互备)。 -2. BE 使用 3 台独立机器部署(按需增加机器,可以使用多于 3 台机器),面对大查询 BE 产生的IO 以及 CPU 影响不会影响到其他模块。 -3. Meta Service 以及 FDB 混部在 3 台独立机器(可以使用多于 3 台机器,一般来说 3 台已经足够服务几十台以上的 FE+BE),充分利用这些机器的 CPU 内存 以及 IO 资源。 +机器配置高时,可以考虑 FDB、FE 和 Meta Service 混布,但是磁盘不要混用。 -``` - host1,2 host3,4,5 - .------------------. .------------------. - | .------------------. | .------------------. - | | | | | .------------------. - | | FE | | | | | - '-| | '-| | BE | - '------------------' '-| | - '------------------' - - host6 host7 host8 - .------------------. .------------------. .------------------. - | Meta Service | | Meta Service | | Meta Service | - | FDB | | FDB | | FDB | - '------------------' '------------------' '------------------' -``` +## 5. 安装步骤 -注意:大规模生产如果对于 Meta Service 的在线(元数据操作)和离线(数据回收)功能有隔离性的需求可以参考 -[部署 Meta Service](./compilation-and-deployment.md) 的”将数据回收功能作为单独进程部署“ 章节。 +### 5.1. 安装 FoundationDB -## 安装 FoundationDB +本节提供了使用提供的脚本 `fdb_vars.sh` 和 `fdb_ctl.sh` 配置、部署和启动 FDB(FoundationDB)服务的分步指南。 Review Comment: ```suggestion 本节提供了脚本 `fdb_vars.sh` 和 `fdb_ctl.sh` 配置、部署和启动 FDB(FoundationDB)服务的分步指南。这些脚本位于 Doris 安装包的 `tools/fdb` 目录下。 ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/compilation-and-deployment.md: ########## @@ -71,73 +82,221 @@ cat /etc/foundationdb/fdb.cluster cloud_ssb:A83c8Y1S3ZbqHLL4P4HHNTTw0A83CuHj@127.0.0.1:4500 ``` -### 启停 +### 3.2 启动与停止 -Meta Service 依赖 JAVA 运行环境,并使用 OpenJDK 17。在启动前这两个服务前,请确保已正确设置 `export JAVA_HOME` 环境变量。 +*环境要求* -`doris_cloud` 部署的 `bin` 目录下提供了启停脚本,调用对应的启停脚本即可完成启停。 +确保已正确设置 `JAVA_HOME` 环境变量,指向 OpenJDK 17,进入 `ms` 目录。 -在 `ms` 目录中: +*启动命令* ```Shell export JAVA_HOME=${path_to_jdk_17} bin/start.sh --daemon +``` + +*停止命令* +``` shell bin/stop.sh ``` -若 Meta Service 进程正常启动,将能在 `doris_cloud.out` 文件中观察到 `successfully started` 的输出信息。以下为一个启动的输出信息示例 +*验证启动* -``` -2024-09-02 21:03:53 try to start doris_cloud -process working directory: "/mnt/disk1/gavinchou/debug/doris-cloud/ms" -pid=810125 written to file=./bin/doris_cloud.pid -version:{doris_cloud-0.0.0-debug} code_version:{commit=7d94417e6ca10f3c77bea07caf4994af155b6e99 time=2024-09-02 21:03:01 +0800} build_info:{initiator=gavinchou@VM-10-11-centos build_at=2024-09-02 21:03:01 +0800 build_on=NAME="TencentOS Se -rver" VERSION="3.1 (Final)" } - -run doris_cloud as meta_service and recycler by default -meta-service started -recycler started -successfully started brpc listening on port=6000 time_elapsed_ms=139 -``` +检查 `doris_cloud.out` 文件中是否有 `successfully started` 的输出信息。 -## 将数据回收功能作为单独进程部署 +生产环境中请确保至少有 3 个 Meta Service 节点。 -在一些场景中为了更好的隔离性以及稳定性,我们需要将元数据操作功能和数据回收功能分开不同的进程部署。 +## 4. 数据回收功能独立部署(可选) -在成功部署并启动 Meta Service 之后,Doris 存算分离模式的底座便已完成搭建。 +*准备工作* Review Comment: ```suggestion :::info Meta Service 本身具备了元数据管理和回收功能,这两个功能可以独立部署,如果你想独立部署,可以参考这一节。 ::: *准备工作* ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/compilation-and-deployment.md: ########## @@ -71,73 +82,221 @@ cat /etc/foundationdb/fdb.cluster cloud_ssb:A83c8Y1S3ZbqHLL4P4HHNTTw0A83CuHj@127.0.0.1:4500 ``` -### 启停 +### 3.2 启动与停止 -Meta Service 依赖 JAVA 运行环境,并使用 OpenJDK 17。在启动前这两个服务前,请确保已正确设置 `export JAVA_HOME` 环境变量。 +*环境要求* -`doris_cloud` 部署的 `bin` 目录下提供了启停脚本,调用对应的启停脚本即可完成启停。 +确保已正确设置 `JAVA_HOME` 环境变量,指向 OpenJDK 17,进入 `ms` 目录。 -在 `ms` 目录中: +*启动命令* ```Shell export JAVA_HOME=${path_to_jdk_17} bin/start.sh --daemon +``` + +*停止命令* +``` shell bin/stop.sh ``` -若 Meta Service 进程正常启动,将能在 `doris_cloud.out` 文件中观察到 `successfully started` 的输出信息。以下为一个启动的输出信息示例 +*验证启动* -``` -2024-09-02 21:03:53 try to start doris_cloud -process working directory: "/mnt/disk1/gavinchou/debug/doris-cloud/ms" -pid=810125 written to file=./bin/doris_cloud.pid -version:{doris_cloud-0.0.0-debug} code_version:{commit=7d94417e6ca10f3c77bea07caf4994af155b6e99 time=2024-09-02 21:03:01 +0800} build_info:{initiator=gavinchou@VM-10-11-centos build_at=2024-09-02 21:03:01 +0800 build_on=NAME="TencentOS Se -rver" VERSION="3.1 (Final)" } - -run doris_cloud as meta_service and recycler by default -meta-service started -recycler started -successfully started brpc listening on port=6000 time_elapsed_ms=139 -``` +检查 `doris_cloud.out` 文件中是否有 `successfully started` 的输出信息。 -## 将数据回收功能作为单独进程部署 +生产环境中请确保至少有 3 个 Meta Service 节点。 -在一些场景中为了更好的隔离性以及稳定性,我们需要将元数据操作功能和数据回收功能分开不同的进程部署。 +## 4. 数据回收功能独立部署(可选) -在成功部署并启动 Meta Service 之后,Doris 存算分离模式的底座便已完成搭建。 +*准备工作* -`ms`目录也可以用于启动为数据回收功能进程,只需使用不同启动参数启动即可。 -需要注意的是,需要单独准备一个独立的工作目录,二进制以及配置文件都是单独的一份。 +1. 创建新的工作目录(如 `recycler`)。 +2. 复制 `ms` 目录内容到新目录: -使用以下命令从`ms`目录中拷贝二进制文件至一个新的 Recycler 工作目录`re`。 -```Shell -cp -r ms re -``` + ```shell + cp -r ms recycler + ``` + +*配置* -Meta Service 启动脚本可以接受 `--meta-service` 和 `--recycler` 两个参数指定的是当前 Meta Service 进程拥有什么样的能力。 -前者为元数据操作(主要提供一些在线实时元数据操作), 后者为数据回收功能(离线异步数据回收等流程)。 +在新目录的配置文件中修改 BRPC 监听端口。 Review Comment: ```suggestion 在新目录的配置文件中修改 BRPC 监听端口 `brpc_listen_port` 和 `fdb_cluster` 的值。 ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/compilation-and-deployment.md: ########## @@ -48,18 +54,23 @@ output └── lib ``` -## Meta Service 部署 +## 3. Meta Service 部署 + +### 3.1 配置 + +在 `./conf/doris_cloud.conf` 文件中,主要需要修改以下两个参数: -### 配置 +1. `brpc_listen_port`:Meta Service 的监听端口,默认为 5000。 +2. `fdb_cluster`:FoundationDB 集群的连接信息,部署 FoundationDB 时可以获取。 Review Comment: ```suggestion 2. `fdb_cluster`:FoundationDB 集群的连接信息,部署 FoundationDB 时可以获取。(如果使用 Doris 提供的 fdb_ctl.sh 部署的话,可在 `$FDB_HOME/conf/fdb.cluster` 文件里获取该值) ``` ########## docs/compute-storage-decoupled/before-deployment.md: ########## @@ -24,384 +24,117 @@ specific language governing permissions and limitations under the License. --> -The diagram below visualizes the deployment architecture of Doris in the compute-storage mode. It involves three modules: +## 1. Overview -- **FE**: Responsible for receiving user requests and storing the meta data of databases and tables. It is currently stateful, but will evolve to be stateless like BE. -- **BE**: Stateless BE nodes, responsible for computation. The BE will cache a portion of the Tablet metadata and data to improve query performance. -- **Meta Service**: A new module added in the compute-storage decoupled mode, with the program name `doris_cloud`, which can be specified as one of the following two roles by starting with different parameters: - - **Meta Service**: Responsible for metadata management. It provides services for metadata operations, such as creating Tablets, adding Rowsets, and querying metadata of Tablets and Rowsets. - - **Recycler**: Responsible for data recycling. It implements periodic asynchronous forward recycling of data by regularly scanning the metadata of the data marked for deletion (the data files are stored on S3 or HDFS), without the need to list the data objects for metadata comparison. +This document describes the deployment preparation work for the Apache Doris compute-storage decoupled mode. The decoupled architecture aims to improve system scalability and performance, suitable for large-scale data processing scenarios. - +## 2. Architecture Components -The Meta Service is a stateless service that relies on [FoundationDB](https://github.com/apple/foundationdb), a high-performance distributed transactional KV store, to store metadata. This greatly simplifies the metadata management process and provides high horizontal scalability. +The Doris compute-storage decoupled architecture consists of three main modules: - +1. **Frontend (FE)**: Handles user requests and manages metadata. +2. **Backend (BE)**: Stateless compute nodes that execute query tasks. +3. **Meta Service (MS)**: Manages metadata operations and data recovery. -Deploying Doris in the compute-storage decoupled mode relies on two open-source projects. Please install the following dependencies before proceeding: +## 3. System Requirements -- **FoundationDB (FDB)** -- **OpenJDK17**: Needs to be installed on all nodes where the Meta Service is deployed. +### 3.1 Hardware Requirements -## Deployment steps +- Minimum configuration: 3 servers +- Recommended configuration: 5 or more servers -Given the modules and their functionalities, it is recommended to deploy Doris in the compute-storage decoupled mode from bottom up: +### 3.2 Software Dependencies -1. Machine planning: Follow the instructions on [this page](./before-deployment.md). -2. Deployment of FoundationDB and the required runtime dependencies: This step can be completed without the need for any Doris compilation outputs. Follow the instructions on [this page](./before-deployment.md). -3. [Deploy Meta Service and Recycler](./compilation-and-deployment.md) -4. [Deploy FE and BE](./creating-cluster.md) +- FoundationDB (FDB) version 7.1.38 or higher +- OpenJDK 17 -:::info -Note: A single FoundationDB + Meta Service + Recycler infrastructure can support multiple Doris instances (i.e., multiple FE + BE setups) running in the compute-storage decoupled mode. -::: +## 4. Deployment Planning -## Deployment planning +### 4.1 Testing Environment Deployment -To avoid inter-module interference as much as possible, the recommended deployment is to deploy module by module. +Deploy all modules on a single machine, not suitable for production environments. -- The Meta Service, Recycler, and FoundationDB modules use the same set of machines, with a minimum requirement of 3 machines. - - To enable the compute-storage decoupled mode, at least one Meta Service process and one Recycler process must be deployed. These stateless processes can be scaled as needed, typically with 3 instances for each. - - To ensure the performance, reliability, and scalability of FoundationDB, a multi-replica deployment is required. -- FE is deployed independently, with a minimum of 1 machine, and can be scaled out based on the actual query demands. -- BE is deployed independently, with a minimum of 1 machine, and can be scaled out based on the actual query demands. +### 4.2 Production Deployment +- Deploy FDB on 3 or more machines +- Deploy FE and Meta Service on 3 or more machines +- Deploy BE on 3 or more machines -``` - Host1 Host2 - .------------------. .------------------. - | | | | - | FE | | BE | - | | | | - '------------------' '------------------' - - Host3 Host4 Host5 -.------------------. .------------------. .------------------. -| Recycler | | Recycler | | Recycler | -| Meta Service | | Meta Service | | Meta Service | -| FoundationDB | | FoundationDB | | FoundationDB | -'------------------' '------------------' '------------------' +When machine configurations are high, consider mixing FDB, FE, and Meta Service, but do not mix disks. Review Comment: not good ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/before-deployment.md: ########## @@ -24,420 +24,119 @@ specific language governing permissions and limitations under the License. --> -Doris 存算分离架构部署方式示意图如下,共需要 3 个模块参与工作: +# Doris 存算分离模式部署准备 -- **FE**:负责接收用户请求,负责存储库表的元数据,目前是有状态的,未来会和 BE 类似,演化为无状态。 -- **BE**:无状态化的 Doris BE 节点,负责具体的计算任务。BE 上会缓存一部分 Tablet 元数据和数据以提高查询性能。 -- **MS**:存算分离模式新增模块,Meta Service,它主要有两个功能:元数据操作,数据回收。 - - **元数据操作**:元数据管理,提供元数据操作的服务,例如创建 Tablet,新增 Rowset,Tablet 查询以及 Rowset 元数据查询等功能。 - - **数据回收**:通过定期对记录已标记删除的数据的元数据进行扫描,实现对数据的定期异步正向回收(文件实际存储在 S3 或 HDFS 上),而无须列举数据对象进行元数据对比。 +## 1. 概述 - +本文档介绍了 Apache Doris 存算分离模式的部署准备工作。存算分离架构旨在提高系统的可扩展性和性能,适用于大规模数据处理场景。 -Meta Service 是一种无状态化的服务,依赖了一个高性能分布式事务 KV(即 [FoundationDB](https://github.com/apple/foundationdb))来存储元数据,大幅简化了元数据管理流程,同时提供强大的横向的扩展能力。 +## 2. 架构组件 - +Doris 存算分离架构包含三个主要模块: -Doris 存算分离架构依赖于两个外部开源项目,为确保部署顺利,请在开始前预先安装以下依赖: +1. **Frontend (FE)**:处理用户请求和管理元数据。 +2. **Backend (BE)**:无状态计算节点,执行查询任务。 +3. **Meta Service (MS)**:管理元数据操作和数据回收。 -- **FoundationDB (FDB)** -- **OpenJDK17**: 需要安装到所有部署 Meta Service 的节点上。 +## 3. 系统要求 +### 3.1 硬件要求 -## 部署步骤 +- 最小配置:3 台服务器 +- 推荐配置:5 台或更多服务器 -Doris 存算分离模式部署按照模块与分工"自下而上"部署: -1. 存算分离模式机器规划,这一步骤在[本文档](./before-deployment.md)介绍。 -2. 部署 FoundationDB 以及运行环境等基础的依赖,这一步骤不需要 Doris 的编译产出即可完成,在[本文档](./before-deployment.md)介绍。 -3. [部署 Meta Service](./compilation-and-deployment.md) -4. [部署 FE 以及 BE](./creating-cluster.md) +### 3.2 软件依赖 -:::info 备注 -注意:一套 FoundationDB + Meta Service 基础环境可以支撑多个存算分离模式的 Doris 实例(即多套 FE + BE )。 -::: - -## 部署规划 -一般来说 Doris 存算分离模式适用于比较大型的集群(多台机器),机器越多,越能发挥存算分离模式的优势。 -Doris存算分离模式推荐的方式是按照模块划分,尽量避免模块间相互影响。推荐的部署方式以及规划: -* Meta Service 以及 FDB 使用同一批机器(前者消耗CPU,后者消耗IO)。要求大于等于3台。 - * 存算分离模式要正常运行至少要部署一个 Meta Service 进程。这两种进程是无状态的,可以按需增加部署数量,一般每种进程部署3个能够满足需求。 - * 为了保证 FDB 的性能,可靠性以及扩展性,FDB 需要使用多副本部署的方式。 -* FE单独部署,至少1台,可以按需实际查询需要多部署一些 -* BE单独部署,至少1台,可以按需实际查询需要多部署一些 - -**我们也可以根据不同的部署需求进行不同的部署规划:** -1. 测试体验部署:体验存算分离的功能,多个模块混部在一台机器,不能用于生产环境。 -2. 小规模生产部署:最少 3 台机器部署,保证数据的可靠以及后续往规模的扩展性。部分模块混部。 -3. 大规模生产部署:最少 5 台机器部署,保证数据的可靠以及后续往规模的扩展性。最大限度保证模块的隔离。 - -接下来我们给出上述每个具体的部署示例。 - -### 测试体验部署 - -所有模块都混部在一个机器上。FDB 使用单机部署方案,具体参考本文档”安装 FoundationDB“章节,完成单机部署 FDB 部分即可。 -**注意:此方案一定不能用于生产环境。** - -``` - host1 - .------------------. - | FE | - | BE | - | Meta Service | - | FDB | - '------------------' -``` +- FoundationDB (FDB) 7.1.38 或更高版本 +- OpenJDK 17 -### 小规模生产部署 +## 4. 部署规划 -如果机器数量有限,可以使用全混部的方式,但是最少也要求使用3台机器用于 FDB 的部署, -然后所有模块部署在同一批机器,如下是一种可行的规划: -1. 3 台机器部署一个最小规模的 FDB 高可靠高可用集群 -2. 其中 1 台再混部上 FE + BE + Meta Service -3. 另外 2 台再混部上 BE +### 4.1 测试环境部署 -**注意:这个部署方案,BE 如果有大查询可能会影响到 FDB 的工作, CPU 内存 IO 资源。 -这个部署保证了数据的可靠性和扩展性,我们后续可以根据需求增加机器逐渐横向扩展成大规模的部署** +单机部署所有模块,不适用于生产环境。 -``` - host1 host2 host3 - .------------------. .------------------. .------------------. - | FE | | BE | | BE | - | | | | | | - | Meta Service | | | | | - | FDB | | FDB | | FDB | - '------------------' '------------------' '------------------' -``` +### 4.2 生产部署 -### 大规模生产部署 +- 3 台或更多机器部署 FDB +- 3 台或更多机器部署 FE 和 Meta Service +- 3 台或更多机器部署 BE -下图展示了一种比较大规模的部署方案,这个部署方式可以由小规模部署方案逐渐横向扩展形成。 -1. FE 使用 2 台独立机器部署(按需增加机器,可以使用多于 2 台机器,但是一般 2 台足够),保证请求的高可用(互备)。 -2. BE 使用 3 台独立机器部署(按需增加机器,可以使用多于 3 台机器),面对大查询 BE 产生的IO 以及 CPU 影响不会影响到其他模块。 -3. Meta Service 以及 FDB 混部在 3 台独立机器(可以使用多于 3 台机器,一般来说 3 台已经足够服务几十台以上的 FE+BE),充分利用这些机器的 CPU 内存 以及 IO 资源。 +机器配置高时,可以考虑 FDB、FE 和 Meta Service 混布,但是磁盘不要混用。 -``` - host1,2 host3,4,5 - .------------------. .------------------. - | .------------------. | .------------------. - | | | | | .------------------. - | | FE | | | | | - '-| | '-| | BE | - '------------------' '-| | - '------------------' - - host6 host7 host8 - .------------------. .------------------. .------------------. - | Meta Service | | Meta Service | | Meta Service | - | FDB | | FDB | | FDB | - '------------------' '------------------' '------------------' -``` +## 5. 安装步骤 -注意:大规模生产如果对于 Meta Service 的在线(元数据操作)和离线(数据回收)功能有隔离性的需求可以参考 -[部署 Meta Service](./compilation-and-deployment.md) 的”将数据回收功能作为单独进程部署“ 章节。 +### 5.1. 安装 FoundationDB -## 安装 FoundationDB +本节提供了使用提供的脚本 `fdb_vars.sh` 和 `fdb_ctl.sh` 配置、部署和启动 FDB(FoundationDB)服务的分步指南。 -### 机器要求 +#### 5.1 机器要求 -通常情况下,需要至少 3 台机器组成一个双副本、允许单机故障的 FoundationDB 集群。 +通常,至少需要 3 台配备 SSD 的机器来形成具有双数据副本并允许单机故障的 FoundationDB 集群。 :::tip - -如果仅出于开发/测试需要,使用一台机器即可。 - -::: - -每台机器都需先安装 FoundationDB 服务。可通过[以下地址](https://github.com/apple/foundationdb/releases)选择一个版本下载 FoundationDB 安装包,目前通常推荐使用 [7.1.38](https://github.com/apple/foundationdb/releases/tag/7.1.38) 版本。 - -对于 CentOS (Red Hat) 和 Ubuntu 用户,以下是[下载链接](https://github.com/apple/foundationdb/releases/tag/7.1.38): - -- [clients-x86_64.rpm](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-clients-7.1.38-1.el7.x86_64.rpm) -- [server-x86_64.rpm](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-server-7.1.38-1.el7.x86_64.rpm) -- [clients-amd64.deb](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-clients_7.1.38-1_amd64.deb) -- [server-amd64.deb](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-server_7.1.38-1_amd64.deb) - -如果需要更高速的下载,也可使用如下镜像链接: - -- [clients-x86_64.rpm](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-clients-7.1.38-1.el7.x86_64.rpm) -- [server-x86_64.rpm](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-server-7.1.38-1.el7.x86_64.rpm) -- [clients-amd64.deb](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-clients_7.1.38-1_amd64.deb) -- [server-amd64.deb](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-server_7.1.38-1_amd64.deb) - -可以使用如下命令安装 FoundationDB 程序: - -```Shell -// Ubuntu 系统 user@host -$ sudo dpkg -i foundationdb-clients_7.1.23-1_amd64.deb \ foundationdb-server_7.1.23-1_amd64.deb - -// CentOS 系统 -user@host$ sudo rpm -Uvh foundationdb-clients-7.1.23-1.el7.x86_64.rpm \ foundationdb-server-7.1.23-1.el7.x86_64.rpm -``` - -安装完毕后,在命令行输入 `fdbcli` 查看是否安装成功。若返回结果显示如下 `available` 字样,则表示安装成功: - -```Plain -user@host$ fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. - -The database is available. - -Welcome to the fdbcli. For help, type `help'. -``` - -:::info 备注 - -安装成功后: - -- 默认将启动一个 FoundationDB 服务。 -- 默认集群信息文件 `fdb.cluster`将存放在`/etc/foundationdb/fdb.cluster`,默认集群配置文件 `foundationdb.conf` 将存放在`/etc/foundationdb/foundationdb.conf`。 -- 默认将数据和日志分别保存在`/var/lib/foundationdb/data/`和`/var/log/foundationdb`。 -- 默认将新建一个 FoundationDB 的 `user` 和 `group`,数据和日志的路径默认已具备 FoundationDB 的访问权限。 - +如果仅用于开发/测试目的,单台机器就足够了。 ::: -### 主机配置 - -从三台机器中选择一台作为主机。首先完成主机的配置,再配置其他机器。 - -### 更改 FoundationDB 配置 - -根据不同机型调整 FoundationDB 配置, 具体配置请参考 [FoundationDB 系统要求](https://apple.github.io/foundationdb/configuration.html#system-requirements)。 - -以下是一个基于 8 核 CPU、32GB 内存和一块 500GB SSD 数据盘的机器的`foundationdb.conf`示例(请确保正确设置 `data` 和 `log` 的存放路径;目前,数据盘一般挂载在 `mnt` 上): - -```shell -# foundationdb.conf -## -## Configuration file for FoundationDB server processes -## Full documentation is available at -## https://apple.github.io/foundationdb/configuration.html#the-configuration-file - -[fdbmonitor] -user = foundationdb -group = foundationdb - -[general] -restart-delay = 60 -## By default, restart-backoff = restart-delay-reset-interval = restart-delay -# initial-restart-delay = 0 -# restart-backoff = 60 -# restart-delay-reset-interval = 60 -cluster-file = /etc/foundationdb/fdb.cluster -# delete-envvars = -# kill-on-configuration-change = true - -## Default parameters for individual fdbserver processes -[fdbserver] -command = /usr/sbin/fdbserver -public-address = auto:$ID -listen-address = public -logdir = /mnt/foundationdb/log -datadir = /mnt/foundationdb/data/$ID -# logsize = 10MiB -# maxlogssize = 100MiB -# machine-id = -# datacenter-id = -# class = -# memory = 8GiB -# storage-memory = 1GiB -# cache-memory = 2GiB -# metrics-cluster = -# metrics-prefix = - -## An individual fdbserver process with id 4500 -## Parameters set here override defaults from the [fdbserver] section -[fdbserver.4500] -class = stateless -[fdbserver.4501] -class = stateless - -[fdbserver.4502] -class = storage - -[fdbserver.4503] -class = storage - -[fdbserver.4504] -class = log - -[backup_agent] -command = /usr/lib/foundationdb/backup_agent/backup_agent -logdir = /mnt/foundationdb/log - -[backup_agent.1] -``` - -首先,按照已配置的 `datadir` 和 `logdir` 路径在主机上创建相应的目录,并使其具有 `foundationdb` 的访问权限: +#### 5.2 `fdb_vars.sh` 配置 -```Shell -chown -R foundationdb:foundationdb /mnt/foundationdb/data/ /mnt/foundationdb/log -``` - -然后将 `/etc/foundationdb/foundationdb.conf` 的内容替换为上述相应配置。 - -### 配置访问权限 - -先设置 `/etc/foundationdb` 目录的访问权限: - -```Shell -chmod -R 777 /etc/foundationdb -``` - -在主机中修改 `/etc/foundationdb/fdb.cluster` 中的 `ip` 地址,默认是本机地址,修改为内网地址,如: - -```Shell -3OrXp9ei:diDqAjYV@127.0.0.1:4500 -> 3OrXp9ei:diDqAjYV@172.21.16.37:4500 -``` - -然后重启 FoundationDB 服务: - -```shell -# for service -user@host$ sudo service foundationdb restart - -# for systemd -user@host$ sudo systemctl restart foundationdb.service -``` - -### 配置新数据库 - -主机由于更改了 `data` 和 `log` 的存放路径,需新建 `database`。可在 `fdbcli` 中新建一个 以`ssd` 为存储引擎的 `database`。 - -```Shell -user@host$ fdbcli -fdb> configure new single ssd -Database created -``` - -最后通过 `fdbcli` 检测是否启动正常。 +##### 必需的自定义设置 -```Shell -user@host$ fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. +| 参数 | 描述 | 类型 | 示例 | 注意事项 | +|------|------|------|------|----------| +| `DATA_DIRS` | 指定 FoundationDB 存储的数据目录 | 以逗号分隔的绝对路径列表 | `/mnt/foundationdb/data1,/mnt/foundationdb/data2,/mnt/foundationdb/data3` | - 运行脚本前确保目录已创建<br>- 生产环境建议使用 SSD 和独立目录 | +| `FDB_CLUSTER_IPS` | 定义集群 IP | 字符串(以逗号分隔的 IP 地址) | `172.200.0.2,172.200.0.3,172.200.0.4` | - 生产集群至少应有 3 个 IP 地址<br>- 第一个 IP 地址将用作协调器<br>- 为高可用性,将机器放置在不同机架上 | +| `FDB_HOME` | 定义 FoundationDB 主目录 | 绝对路径 | `/fdbhome` | - 默认路径为 /fdbhome<br>- 确保此路径是绝对路径 | +| `FDB_CLUSTER_ID` | 定义集群 ID | 字符串 | `SAQESzbh` | - 每个集群的 ID 必须唯一<br>- 可使用 `mktemp -u XXXXXXXX` 生成 | +| `FDB_CLUSTER_DESC` | 定义 FDB 集群的描述 | 字符串 | `doris-fdb` | - 建议更改为对部署有意义的内容 | Review Comment: 这里使用`doris-fdb`的话,fdb 会报错`2104 Connection string invalid` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/before-deployment.md: ########## @@ -24,420 +24,119 @@ specific language governing permissions and limitations under the License. --> -Doris 存算分离架构部署方式示意图如下,共需要 3 个模块参与工作: +# Doris 存算分离模式部署准备 -- **FE**:负责接收用户请求,负责存储库表的元数据,目前是有状态的,未来会和 BE 类似,演化为无状态。 -- **BE**:无状态化的 Doris BE 节点,负责具体的计算任务。BE 上会缓存一部分 Tablet 元数据和数据以提高查询性能。 -- **MS**:存算分离模式新增模块,Meta Service,它主要有两个功能:元数据操作,数据回收。 - - **元数据操作**:元数据管理,提供元数据操作的服务,例如创建 Tablet,新增 Rowset,Tablet 查询以及 Rowset 元数据查询等功能。 - - **数据回收**:通过定期对记录已标记删除的数据的元数据进行扫描,实现对数据的定期异步正向回收(文件实际存储在 S3 或 HDFS 上),而无须列举数据对象进行元数据对比。 +## 1. 概述 - +本文档介绍了 Apache Doris 存算分离模式的部署准备工作。存算分离架构旨在提高系统的可扩展性和性能,适用于大规模数据处理场景。 -Meta Service 是一种无状态化的服务,依赖了一个高性能分布式事务 KV(即 [FoundationDB](https://github.com/apple/foundationdb))来存储元数据,大幅简化了元数据管理流程,同时提供强大的横向的扩展能力。 +## 2. 架构组件 - +Doris 存算分离架构包含三个主要模块: -Doris 存算分离架构依赖于两个外部开源项目,为确保部署顺利,请在开始前预先安装以下依赖: +1. **Frontend (FE)**:处理用户请求和管理元数据。 +2. **Backend (BE)**:无状态计算节点,执行查询任务。 +3. **Meta Service (MS)**:管理元数据操作和数据回收。 -- **FoundationDB (FDB)** -- **OpenJDK17**: 需要安装到所有部署 Meta Service 的节点上。 +## 3. 系统要求 +### 3.1 硬件要求 -## 部署步骤 +- 最小配置:3 台服务器 +- 推荐配置:5 台或更多服务器 -Doris 存算分离模式部署按照模块与分工"自下而上"部署: -1. 存算分离模式机器规划,这一步骤在[本文档](./before-deployment.md)介绍。 -2. 部署 FoundationDB 以及运行环境等基础的依赖,这一步骤不需要 Doris 的编译产出即可完成,在[本文档](./before-deployment.md)介绍。 -3. [部署 Meta Service](./compilation-and-deployment.md) -4. [部署 FE 以及 BE](./creating-cluster.md) +### 3.2 软件依赖 -:::info 备注 -注意:一套 FoundationDB + Meta Service 基础环境可以支撑多个存算分离模式的 Doris 实例(即多套 FE + BE )。 -::: - -## 部署规划 -一般来说 Doris 存算分离模式适用于比较大型的集群(多台机器),机器越多,越能发挥存算分离模式的优势。 -Doris存算分离模式推荐的方式是按照模块划分,尽量避免模块间相互影响。推荐的部署方式以及规划: -* Meta Service 以及 FDB 使用同一批机器(前者消耗CPU,后者消耗IO)。要求大于等于3台。 - * 存算分离模式要正常运行至少要部署一个 Meta Service 进程。这两种进程是无状态的,可以按需增加部署数量,一般每种进程部署3个能够满足需求。 - * 为了保证 FDB 的性能,可靠性以及扩展性,FDB 需要使用多副本部署的方式。 -* FE单独部署,至少1台,可以按需实际查询需要多部署一些 -* BE单独部署,至少1台,可以按需实际查询需要多部署一些 - -**我们也可以根据不同的部署需求进行不同的部署规划:** -1. 测试体验部署:体验存算分离的功能,多个模块混部在一台机器,不能用于生产环境。 -2. 小规模生产部署:最少 3 台机器部署,保证数据的可靠以及后续往规模的扩展性。部分模块混部。 -3. 大规模生产部署:最少 5 台机器部署,保证数据的可靠以及后续往规模的扩展性。最大限度保证模块的隔离。 - -接下来我们给出上述每个具体的部署示例。 - -### 测试体验部署 - -所有模块都混部在一个机器上。FDB 使用单机部署方案,具体参考本文档”安装 FoundationDB“章节,完成单机部署 FDB 部分即可。 -**注意:此方案一定不能用于生产环境。** - -``` - host1 - .------------------. - | FE | - | BE | - | Meta Service | - | FDB | - '------------------' -``` +- FoundationDB (FDB) 7.1.38 或更高版本 +- OpenJDK 17 -### 小规模生产部署 +## 4. 部署规划 -如果机器数量有限,可以使用全混部的方式,但是最少也要求使用3台机器用于 FDB 的部署, -然后所有模块部署在同一批机器,如下是一种可行的规划: -1. 3 台机器部署一个最小规模的 FDB 高可靠高可用集群 -2. 其中 1 台再混部上 FE + BE + Meta Service -3. 另外 2 台再混部上 BE +### 4.1 测试环境部署 -**注意:这个部署方案,BE 如果有大查询可能会影响到 FDB 的工作, CPU 内存 IO 资源。 -这个部署保证了数据的可靠性和扩展性,我们后续可以根据需求增加机器逐渐横向扩展成大规模的部署** +单机部署所有模块,不适用于生产环境。 -``` - host1 host2 host3 - .------------------. .------------------. .------------------. - | FE | | BE | | BE | - | | | | | | - | Meta Service | | | | | - | FDB | | FDB | | FDB | - '------------------' '------------------' '------------------' -``` +### 4.2 生产部署 -### 大规模生产部署 +- 3 台或更多机器部署 FDB +- 3 台或更多机器部署 FE 和 Meta Service +- 3 台或更多机器部署 BE -下图展示了一种比较大规模的部署方案,这个部署方式可以由小规模部署方案逐渐横向扩展形成。 -1. FE 使用 2 台独立机器部署(按需增加机器,可以使用多于 2 台机器,但是一般 2 台足够),保证请求的高可用(互备)。 -2. BE 使用 3 台独立机器部署(按需增加机器,可以使用多于 3 台机器),面对大查询 BE 产生的IO 以及 CPU 影响不会影响到其他模块。 -3. Meta Service 以及 FDB 混部在 3 台独立机器(可以使用多于 3 台机器,一般来说 3 台已经足够服务几十台以上的 FE+BE),充分利用这些机器的 CPU 内存 以及 IO 资源。 +机器配置高时,可以考虑 FDB、FE 和 Meta Service 混布,但是磁盘不要混用。 -``` - host1,2 host3,4,5 - .------------------. .------------------. - | .------------------. | .------------------. - | | | | | .------------------. - | | FE | | | | | - '-| | '-| | BE | - '------------------' '-| | - '------------------' - - host6 host7 host8 - .------------------. .------------------. .------------------. - | Meta Service | | Meta Service | | Meta Service | - | FDB | | FDB | | FDB | - '------------------' '------------------' '------------------' -``` +## 5. 安装步骤 -注意:大规模生产如果对于 Meta Service 的在线(元数据操作)和离线(数据回收)功能有隔离性的需求可以参考 -[部署 Meta Service](./compilation-and-deployment.md) 的”将数据回收功能作为单独进程部署“ 章节。 +### 5.1. 安装 FoundationDB -## 安装 FoundationDB +本节提供了使用提供的脚本 `fdb_vars.sh` 和 `fdb_ctl.sh` 配置、部署和启动 FDB(FoundationDB)服务的分步指南。 -### 机器要求 +#### 5.1 机器要求 -通常情况下,需要至少 3 台机器组成一个双副本、允许单机故障的 FoundationDB 集群。 +通常,至少需要 3 台配备 SSD 的机器来形成具有双数据副本并允许单机故障的 FoundationDB 集群。 :::tip - -如果仅出于开发/测试需要,使用一台机器即可。 - -::: - -每台机器都需先安装 FoundationDB 服务。可通过[以下地址](https://github.com/apple/foundationdb/releases)选择一个版本下载 FoundationDB 安装包,目前通常推荐使用 [7.1.38](https://github.com/apple/foundationdb/releases/tag/7.1.38) 版本。 - -对于 CentOS (Red Hat) 和 Ubuntu 用户,以下是[下载链接](https://github.com/apple/foundationdb/releases/tag/7.1.38): - -- [clients-x86_64.rpm](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-clients-7.1.38-1.el7.x86_64.rpm) -- [server-x86_64.rpm](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-server-7.1.38-1.el7.x86_64.rpm) -- [clients-amd64.deb](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-clients_7.1.38-1_amd64.deb) -- [server-amd64.deb](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-server_7.1.38-1_amd64.deb) - -如果需要更高速的下载,也可使用如下镜像链接: - -- [clients-x86_64.rpm](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-clients-7.1.38-1.el7.x86_64.rpm) -- [server-x86_64.rpm](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-server-7.1.38-1.el7.x86_64.rpm) -- [clients-amd64.deb](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-clients_7.1.38-1_amd64.deb) -- [server-amd64.deb](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-server_7.1.38-1_amd64.deb) - -可以使用如下命令安装 FoundationDB 程序: - -```Shell -// Ubuntu 系统 user@host -$ sudo dpkg -i foundationdb-clients_7.1.23-1_amd64.deb \ foundationdb-server_7.1.23-1_amd64.deb - -// CentOS 系统 -user@host$ sudo rpm -Uvh foundationdb-clients-7.1.23-1.el7.x86_64.rpm \ foundationdb-server-7.1.23-1.el7.x86_64.rpm -``` - -安装完毕后,在命令行输入 `fdbcli` 查看是否安装成功。若返回结果显示如下 `available` 字样,则表示安装成功: - -```Plain -user@host$ fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. - -The database is available. - -Welcome to the fdbcli. For help, type `help'. -``` - -:::info 备注 - -安装成功后: - -- 默认将启动一个 FoundationDB 服务。 -- 默认集群信息文件 `fdb.cluster`将存放在`/etc/foundationdb/fdb.cluster`,默认集群配置文件 `foundationdb.conf` 将存放在`/etc/foundationdb/foundationdb.conf`。 -- 默认将数据和日志分别保存在`/var/lib/foundationdb/data/`和`/var/log/foundationdb`。 -- 默认将新建一个 FoundationDB 的 `user` 和 `group`,数据和日志的路径默认已具备 FoundationDB 的访问权限。 - +如果仅用于开发/测试目的,单台机器就足够了。 ::: -### 主机配置 - -从三台机器中选择一台作为主机。首先完成主机的配置,再配置其他机器。 - -### 更改 FoundationDB 配置 - -根据不同机型调整 FoundationDB 配置, 具体配置请参考 [FoundationDB 系统要求](https://apple.github.io/foundationdb/configuration.html#system-requirements)。 - -以下是一个基于 8 核 CPU、32GB 内存和一块 500GB SSD 数据盘的机器的`foundationdb.conf`示例(请确保正确设置 `data` 和 `log` 的存放路径;目前,数据盘一般挂载在 `mnt` 上): - -```shell -# foundationdb.conf -## -## Configuration file for FoundationDB server processes -## Full documentation is available at -## https://apple.github.io/foundationdb/configuration.html#the-configuration-file - -[fdbmonitor] -user = foundationdb -group = foundationdb - -[general] -restart-delay = 60 -## By default, restart-backoff = restart-delay-reset-interval = restart-delay -# initial-restart-delay = 0 -# restart-backoff = 60 -# restart-delay-reset-interval = 60 -cluster-file = /etc/foundationdb/fdb.cluster -# delete-envvars = -# kill-on-configuration-change = true - -## Default parameters for individual fdbserver processes -[fdbserver] -command = /usr/sbin/fdbserver -public-address = auto:$ID -listen-address = public -logdir = /mnt/foundationdb/log -datadir = /mnt/foundationdb/data/$ID -# logsize = 10MiB -# maxlogssize = 100MiB -# machine-id = -# datacenter-id = -# class = -# memory = 8GiB -# storage-memory = 1GiB -# cache-memory = 2GiB -# metrics-cluster = -# metrics-prefix = - -## An individual fdbserver process with id 4500 -## Parameters set here override defaults from the [fdbserver] section -[fdbserver.4500] -class = stateless -[fdbserver.4501] -class = stateless - -[fdbserver.4502] -class = storage - -[fdbserver.4503] -class = storage - -[fdbserver.4504] -class = log - -[backup_agent] -command = /usr/lib/foundationdb/backup_agent/backup_agent -logdir = /mnt/foundationdb/log - -[backup_agent.1] -``` - -首先,按照已配置的 `datadir` 和 `logdir` 路径在主机上创建相应的目录,并使其具有 `foundationdb` 的访问权限: +#### 5.2 `fdb_vars.sh` 配置 -```Shell -chown -R foundationdb:foundationdb /mnt/foundationdb/data/ /mnt/foundationdb/log -``` - -然后将 `/etc/foundationdb/foundationdb.conf` 的内容替换为上述相应配置。 - -### 配置访问权限 - -先设置 `/etc/foundationdb` 目录的访问权限: - -```Shell -chmod -R 777 /etc/foundationdb -``` - -在主机中修改 `/etc/foundationdb/fdb.cluster` 中的 `ip` 地址,默认是本机地址,修改为内网地址,如: - -```Shell -3OrXp9ei:diDqAjYV@127.0.0.1:4500 -> 3OrXp9ei:diDqAjYV@172.21.16.37:4500 -``` - -然后重启 FoundationDB 服务: - -```shell -# for service -user@host$ sudo service foundationdb restart - -# for systemd -user@host$ sudo systemctl restart foundationdb.service -``` - -### 配置新数据库 - -主机由于更改了 `data` 和 `log` 的存放路径,需新建 `database`。可在 `fdbcli` 中新建一个 以`ssd` 为存储引擎的 `database`。 - -```Shell -user@host$ fdbcli -fdb> configure new single ssd -Database created -``` - -最后通过 `fdbcli` 检测是否启动正常。 +##### 必需的自定义设置 -```Shell -user@host$ fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. +| 参数 | 描述 | 类型 | 示例 | 注意事项 | +|------|------|------|------|----------| +| `DATA_DIRS` | 指定 FoundationDB 存储的数据目录 | 以逗号分隔的绝对路径列表 | `/mnt/foundationdb/data1,/mnt/foundationdb/data2,/mnt/foundationdb/data3` | - 运行脚本前确保目录已创建<br>- 生产环境建议使用 SSD 和独立目录 | +| `FDB_CLUSTER_IPS` | 定义集群 IP | 字符串(以逗号分隔的 IP 地址) | `172.200.0.2,172.200.0.3,172.200.0.4` | - 生产集群至少应有 3 个 IP 地址<br>- 第一个 IP 地址将用作协调器<br>- 为高可用性,将机器放置在不同机架上 | +| `FDB_HOME` | 定义 FoundationDB 主目录 | 绝对路径 | `/fdbhome` | - 默认路径为 /fdbhome<br>- 确保此路径是绝对路径 | +| `FDB_CLUSTER_ID` | 定义集群 ID | 字符串 | `SAQESzbh` | - 每个集群的 ID 必须唯一<br>- 可使用 `mktemp -u XXXXXXXX` 生成 | +| `FDB_CLUSTER_DESC` | 定义 FDB 集群的描述 | 字符串 | `doris-fdb` | - 建议更改为对部署有意义的内容 | -The database is available. +##### 可选的自定义设置 -Welcome to the fdbcli. For help, type `help'. -``` - -至此,主机的配置完成。 - -### 构建 FoundationDB 集群 - -:::tip - -如果仅部署一台机器进行开发/测试,可以跳过此步骤。 - -::: - -对于主机以外的机器,每台机器先按照主机配置步骤,创建 `data` 和 `log` 目录。 +| 参数 | 描述 | 类型 | 示例 | 注意事项 | +|------|------|------|------|----------| +| `MEMORY_LIMIT_GB` | 定义 FDB 进程的内存限制,单位为 GB | 整数 | `MEMORY_LIMIT_GB=16` | 根据可用内存资源和 FDB 进程的要求调整此值 | +| `CPU_CORES_LIMIT` | 定义 FDB 进程的 CPU 核心限制 | 整数 | `CPU_CORES_LIMIT=8` | 根据可用的 CPU 核心数量和 FDB 进程的要求设置此值 | -然后,设置 `/etc/foundationdb` 目录的访问权限: +#### 5.3 部署 FDB 集群 -```Shell -chmod -R 777 /etc/foundationdb -``` - -将主机的 `/etc/foundationdb/foundationdb.conf `和`/etc/foundationdb/fdb.cluster` 替换为本机的 `/etc/foundationdb/foundationdb.conf `和`/etc/foundationdb/fdb.cluster`。 - -随后在本机重启 FoundationDB 服务。 +使用 `fdb_vars.sh` 配置环境后,您可以在每个节点上使用 `fdb_ctl.sh` 脚本部署 FDB 集群。 -```shell -# for service -user@host$ sudo service foundationdb restart - -# for systemd -user@host$ sudo systemctl restart foundationdb.service +```bash +./fdb_ctl.sh deploy ``` -待所有机器操作完毕后,所有机器都已连接在同一集群上(即同一 `fdb.cluster`)。此时登录主机,配置双副本模式: +此命令启动 FDB 集群的部署过程。 -```Shell -user@host$ fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. +### 5.4 启动 FDB 服务 -The database is available. +FDB 集群部署完成后,您可以使用 `fdb_ctl.sh` 脚本启动 FDB 服务。 -Welcome to the fdbcli. For help, type `help'. -fdb> configure double -Configuration changed. +```bash +./fdb_ctl.sh start ``` -然后在主机配置 `fdb.cluster` 可被访问的机器和端口,用于容灾: +此命令启动 FDB 服务,使集群工作并获取 FDB 集群连接字符串,后续可以用于配置 MetaService。 -```Shell -user@host$ fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. +### 5.5 安装 OpenJDK 17 -The database is available. +1. 下载 [OpenJDK 17](https://download.java.net/java/GA/jdk17.0.1/2a2082e5a09d4267845be086888add4f/12/GPL/openjdk-17.0.1_linux-x64_bin.tar.gz) +2. 解压并设置环境变量 JAVA_HOME. -Welcome to the fdbcli. For help, type `help'. -fdb> coordinators ${主机ip}:4500 ${从机1ip}:4500 ${从机2ip}:4500(需要填写所有机器) -Coordinators changed -``` +## 6. 后续步骤 -最后,通过 `fdbcli` 中的 `status` 检测模式是否配置成功: - -```Shell -[root@ip-10-100-3-91 meta-service]# fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. - -The database is available. - -Welcome to the fdbcli. For help, type `help'. -fdb> status - -Using cluster file `/etc/foundationdb/fdb.cluster'. - -Configuration: - Redundancy mode - double - Storage engine - ssd-2 - Coordinators - 3 - Usable Regions - 1 - -Cluster: - FoundationDB processes - 15 - Zones - 3 - Machines - 3 - Memory availability - 6.1 GB per process on machine with least available - Fault Tolerance - 1 machines - Server time - 11/11/22 04:47:30 - -Data: - Replication health - Healthy - Moving data - 0.000 GB - Sum of key-value sizes - 0 MB - Disk space used - 944 MB - -Operating space: - Storage server - 473.9 GB free on most full server - Log server - 473.9 GB free on most full server - -Workload: - Read rate - 19 Hz - Write rate - 0 Hz - Transactions started - 5 Hz - Transactions committed - 0 Hz - Conflict rate - 0 Hz - -Backup and DR: - Running backups - 0 - Running DRs - 0 -``` - -## 安装 OpenJDK 17 +完成上述准备工作后,请参考以下文档继续部署: -OpenJDK 17 需安装到所有的节点上,可通过以下链接获取安装:[OpenJDK 17](https://download.java.net/java/GA/jdk17.0.1/2a2082e5a09d4267845be086888add4f/12/GPL/openjdk-17.0.1_linux-x64_bin.tar.gz) +1. [部署](./compilation-and-deployment.md) +2. [管理 Compute Group](./managing-compute-cluster.md) +3. [管理 Storage Vault](./manaing-storage-vault.md) Review Comment: ```suggestion 3. [管理 Storage Vault](./managing-storage-vault.md) ``` ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/before-deployment.md: ########## @@ -24,420 +24,119 @@ specific language governing permissions and limitations under the License. --> -Doris 存算分离架构部署方式示意图如下,共需要 3 个模块参与工作: +# Doris 存算分离模式部署准备 -- **FE**:负责接收用户请求,负责存储库表的元数据,目前是有状态的,未来会和 BE 类似,演化为无状态。 -- **BE**:无状态化的 Doris BE 节点,负责具体的计算任务。BE 上会缓存一部分 Tablet 元数据和数据以提高查询性能。 -- **MS**:存算分离模式新增模块,Meta Service,它主要有两个功能:元数据操作,数据回收。 - - **元数据操作**:元数据管理,提供元数据操作的服务,例如创建 Tablet,新增 Rowset,Tablet 查询以及 Rowset 元数据查询等功能。 - - **数据回收**:通过定期对记录已标记删除的数据的元数据进行扫描,实现对数据的定期异步正向回收(文件实际存储在 S3 或 HDFS 上),而无须列举数据对象进行元数据对比。 +## 1. 概述 - +本文档介绍了 Apache Doris 存算分离模式的部署准备工作。存算分离架构旨在提高系统的可扩展性和性能,适用于大规模数据处理场景。 -Meta Service 是一种无状态化的服务,依赖了一个高性能分布式事务 KV(即 [FoundationDB](https://github.com/apple/foundationdb))来存储元数据,大幅简化了元数据管理流程,同时提供强大的横向的扩展能力。 +## 2. 架构组件 - +Doris 存算分离架构包含三个主要模块: -Doris 存算分离架构依赖于两个外部开源项目,为确保部署顺利,请在开始前预先安装以下依赖: +1. **Frontend (FE)**:处理用户请求和管理元数据。 +2. **Backend (BE)**:无状态计算节点,执行查询任务。 +3. **Meta Service (MS)**:管理元数据操作和数据回收。 -- **FoundationDB (FDB)** -- **OpenJDK17**: 需要安装到所有部署 Meta Service 的节点上。 +## 3. 系统要求 +### 3.1 硬件要求 -## 部署步骤 +- 最小配置:3 台服务器 +- 推荐配置:5 台或更多服务器 -Doris 存算分离模式部署按照模块与分工"自下而上"部署: -1. 存算分离模式机器规划,这一步骤在[本文档](./before-deployment.md)介绍。 -2. 部署 FoundationDB 以及运行环境等基础的依赖,这一步骤不需要 Doris 的编译产出即可完成,在[本文档](./before-deployment.md)介绍。 -3. [部署 Meta Service](./compilation-and-deployment.md) -4. [部署 FE 以及 BE](./creating-cluster.md) +### 3.2 软件依赖 -:::info 备注 -注意:一套 FoundationDB + Meta Service 基础环境可以支撑多个存算分离模式的 Doris 实例(即多套 FE + BE )。 -::: - -## 部署规划 -一般来说 Doris 存算分离模式适用于比较大型的集群(多台机器),机器越多,越能发挥存算分离模式的优势。 -Doris存算分离模式推荐的方式是按照模块划分,尽量避免模块间相互影响。推荐的部署方式以及规划: -* Meta Service 以及 FDB 使用同一批机器(前者消耗CPU,后者消耗IO)。要求大于等于3台。 - * 存算分离模式要正常运行至少要部署一个 Meta Service 进程。这两种进程是无状态的,可以按需增加部署数量,一般每种进程部署3个能够满足需求。 - * 为了保证 FDB 的性能,可靠性以及扩展性,FDB 需要使用多副本部署的方式。 -* FE单独部署,至少1台,可以按需实际查询需要多部署一些 -* BE单独部署,至少1台,可以按需实际查询需要多部署一些 - -**我们也可以根据不同的部署需求进行不同的部署规划:** -1. 测试体验部署:体验存算分离的功能,多个模块混部在一台机器,不能用于生产环境。 -2. 小规模生产部署:最少 3 台机器部署,保证数据的可靠以及后续往规模的扩展性。部分模块混部。 -3. 大规模生产部署:最少 5 台机器部署,保证数据的可靠以及后续往规模的扩展性。最大限度保证模块的隔离。 - -接下来我们给出上述每个具体的部署示例。 - -### 测试体验部署 - -所有模块都混部在一个机器上。FDB 使用单机部署方案,具体参考本文档”安装 FoundationDB“章节,完成单机部署 FDB 部分即可。 -**注意:此方案一定不能用于生产环境。** - -``` - host1 - .------------------. - | FE | - | BE | - | Meta Service | - | FDB | - '------------------' -``` +- FoundationDB (FDB) 7.1.38 或更高版本 +- OpenJDK 17 -### 小规模生产部署 +## 4. 部署规划 -如果机器数量有限,可以使用全混部的方式,但是最少也要求使用3台机器用于 FDB 的部署, -然后所有模块部署在同一批机器,如下是一种可行的规划: -1. 3 台机器部署一个最小规模的 FDB 高可靠高可用集群 -2. 其中 1 台再混部上 FE + BE + Meta Service -3. 另外 2 台再混部上 BE +### 4.1 测试环境部署 -**注意:这个部署方案,BE 如果有大查询可能会影响到 FDB 的工作, CPU 内存 IO 资源。 -这个部署保证了数据的可靠性和扩展性,我们后续可以根据需求增加机器逐渐横向扩展成大规模的部署** +单机部署所有模块,不适用于生产环境。 -``` - host1 host2 host3 - .------------------. .------------------. .------------------. - | FE | | BE | | BE | - | | | | | | - | Meta Service | | | | | - | FDB | | FDB | | FDB | - '------------------' '------------------' '------------------' -``` +### 4.2 生产部署 -### 大规模生产部署 +- 3 台或更多机器部署 FDB +- 3 台或更多机器部署 FE 和 Meta Service +- 3 台或更多机器部署 BE -下图展示了一种比较大规模的部署方案,这个部署方式可以由小规模部署方案逐渐横向扩展形成。 -1. FE 使用 2 台独立机器部署(按需增加机器,可以使用多于 2 台机器,但是一般 2 台足够),保证请求的高可用(互备)。 -2. BE 使用 3 台独立机器部署(按需增加机器,可以使用多于 3 台机器),面对大查询 BE 产生的IO 以及 CPU 影响不会影响到其他模块。 -3. Meta Service 以及 FDB 混部在 3 台独立机器(可以使用多于 3 台机器,一般来说 3 台已经足够服务几十台以上的 FE+BE),充分利用这些机器的 CPU 内存 以及 IO 资源。 +机器配置高时,可以考虑 FDB、FE 和 Meta Service 混布,但是磁盘不要混用。 -``` - host1,2 host3,4,5 - .------------------. .------------------. - | .------------------. | .------------------. - | | | | | .------------------. - | | FE | | | | | - '-| | '-| | BE | - '------------------' '-| | - '------------------' - - host6 host7 host8 - .------------------. .------------------. .------------------. - | Meta Service | | Meta Service | | Meta Service | - | FDB | | FDB | | FDB | - '------------------' '------------------' '------------------' -``` +## 5. 安装步骤 -注意:大规模生产如果对于 Meta Service 的在线(元数据操作)和离线(数据回收)功能有隔离性的需求可以参考 -[部署 Meta Service](./compilation-and-deployment.md) 的”将数据回收功能作为单独进程部署“ 章节。 +### 5.1. 安装 FoundationDB -## 安装 FoundationDB +本节提供了使用提供的脚本 `fdb_vars.sh` 和 `fdb_ctl.sh` 配置、部署和启动 FDB(FoundationDB)服务的分步指南。 -### 机器要求 +#### 5.1 机器要求 -通常情况下,需要至少 3 台机器组成一个双副本、允许单机故障的 FoundationDB 集群。 +通常,至少需要 3 台配备 SSD 的机器来形成具有双数据副本并允许单机故障的 FoundationDB 集群。 :::tip - -如果仅出于开发/测试需要,使用一台机器即可。 - -::: - -每台机器都需先安装 FoundationDB 服务。可通过[以下地址](https://github.com/apple/foundationdb/releases)选择一个版本下载 FoundationDB 安装包,目前通常推荐使用 [7.1.38](https://github.com/apple/foundationdb/releases/tag/7.1.38) 版本。 - -对于 CentOS (Red Hat) 和 Ubuntu 用户,以下是[下载链接](https://github.com/apple/foundationdb/releases/tag/7.1.38): - -- [clients-x86_64.rpm](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-clients-7.1.38-1.el7.x86_64.rpm) -- [server-x86_64.rpm](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-server-7.1.38-1.el7.x86_64.rpm) -- [clients-amd64.deb](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-clients_7.1.38-1_amd64.deb) -- [server-amd64.deb](https://github.com/apple/foundationdb/releases/download/7.1.38/foundationdb-server_7.1.38-1_amd64.deb) - -如果需要更高速的下载,也可使用如下镜像链接: - -- [clients-x86_64.rpm](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-clients-7.1.38-1.el7.x86_64.rpm) -- [server-x86_64.rpm](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-server-7.1.38-1.el7.x86_64.rpm) -- [clients-amd64.deb](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-clients_7.1.38-1_amd64.deb) -- [server-amd64.deb](https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/toolkit/fdb/foundationdb-server_7.1.38-1_amd64.deb) - -可以使用如下命令安装 FoundationDB 程序: - -```Shell -// Ubuntu 系统 user@host -$ sudo dpkg -i foundationdb-clients_7.1.23-1_amd64.deb \ foundationdb-server_7.1.23-1_amd64.deb - -// CentOS 系统 -user@host$ sudo rpm -Uvh foundationdb-clients-7.1.23-1.el7.x86_64.rpm \ foundationdb-server-7.1.23-1.el7.x86_64.rpm -``` - -安装完毕后,在命令行输入 `fdbcli` 查看是否安装成功。若返回结果显示如下 `available` 字样,则表示安装成功: - -```Plain -user@host$ fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. - -The database is available. - -Welcome to the fdbcli. For help, type `help'. -``` - -:::info 备注 - -安装成功后: - -- 默认将启动一个 FoundationDB 服务。 -- 默认集群信息文件 `fdb.cluster`将存放在`/etc/foundationdb/fdb.cluster`,默认集群配置文件 `foundationdb.conf` 将存放在`/etc/foundationdb/foundationdb.conf`。 -- 默认将数据和日志分别保存在`/var/lib/foundationdb/data/`和`/var/log/foundationdb`。 -- 默认将新建一个 FoundationDB 的 `user` 和 `group`,数据和日志的路径默认已具备 FoundationDB 的访问权限。 - +如果仅用于开发/测试目的,单台机器就足够了。 ::: -### 主机配置 - -从三台机器中选择一台作为主机。首先完成主机的配置,再配置其他机器。 - -### 更改 FoundationDB 配置 - -根据不同机型调整 FoundationDB 配置, 具体配置请参考 [FoundationDB 系统要求](https://apple.github.io/foundationdb/configuration.html#system-requirements)。 - -以下是一个基于 8 核 CPU、32GB 内存和一块 500GB SSD 数据盘的机器的`foundationdb.conf`示例(请确保正确设置 `data` 和 `log` 的存放路径;目前,数据盘一般挂载在 `mnt` 上): - -```shell -# foundationdb.conf -## -## Configuration file for FoundationDB server processes -## Full documentation is available at -## https://apple.github.io/foundationdb/configuration.html#the-configuration-file - -[fdbmonitor] -user = foundationdb -group = foundationdb - -[general] -restart-delay = 60 -## By default, restart-backoff = restart-delay-reset-interval = restart-delay -# initial-restart-delay = 0 -# restart-backoff = 60 -# restart-delay-reset-interval = 60 -cluster-file = /etc/foundationdb/fdb.cluster -# delete-envvars = -# kill-on-configuration-change = true - -## Default parameters for individual fdbserver processes -[fdbserver] -command = /usr/sbin/fdbserver -public-address = auto:$ID -listen-address = public -logdir = /mnt/foundationdb/log -datadir = /mnt/foundationdb/data/$ID -# logsize = 10MiB -# maxlogssize = 100MiB -# machine-id = -# datacenter-id = -# class = -# memory = 8GiB -# storage-memory = 1GiB -# cache-memory = 2GiB -# metrics-cluster = -# metrics-prefix = - -## An individual fdbserver process with id 4500 -## Parameters set here override defaults from the [fdbserver] section -[fdbserver.4500] -class = stateless -[fdbserver.4501] -class = stateless - -[fdbserver.4502] -class = storage - -[fdbserver.4503] -class = storage - -[fdbserver.4504] -class = log - -[backup_agent] -command = /usr/lib/foundationdb/backup_agent/backup_agent -logdir = /mnt/foundationdb/log - -[backup_agent.1] -``` - -首先,按照已配置的 `datadir` 和 `logdir` 路径在主机上创建相应的目录,并使其具有 `foundationdb` 的访问权限: +#### 5.2 `fdb_vars.sh` 配置 -```Shell -chown -R foundationdb:foundationdb /mnt/foundationdb/data/ /mnt/foundationdb/log -``` - -然后将 `/etc/foundationdb/foundationdb.conf` 的内容替换为上述相应配置。 - -### 配置访问权限 - -先设置 `/etc/foundationdb` 目录的访问权限: - -```Shell -chmod -R 777 /etc/foundationdb -``` - -在主机中修改 `/etc/foundationdb/fdb.cluster` 中的 `ip` 地址,默认是本机地址,修改为内网地址,如: - -```Shell -3OrXp9ei:diDqAjYV@127.0.0.1:4500 -> 3OrXp9ei:diDqAjYV@172.21.16.37:4500 -``` - -然后重启 FoundationDB 服务: - -```shell -# for service -user@host$ sudo service foundationdb restart - -# for systemd -user@host$ sudo systemctl restart foundationdb.service -``` - -### 配置新数据库 - -主机由于更改了 `data` 和 `log` 的存放路径,需新建 `database`。可在 `fdbcli` 中新建一个 以`ssd` 为存储引擎的 `database`。 - -```Shell -user@host$ fdbcli -fdb> configure new single ssd -Database created -``` - -最后通过 `fdbcli` 检测是否启动正常。 +##### 必需的自定义设置 -```Shell -user@host$ fdbcli -Using cluster file `/etc/foundationdb/fdb.cluster'. +| 参数 | 描述 | 类型 | 示例 | 注意事项 | +|------|------|------|------|----------| +| `DATA_DIRS` | 指定 FoundationDB 存储的数据目录 | 以逗号分隔的绝对路径列表 | `/mnt/foundationdb/data1,/mnt/foundationdb/data2,/mnt/foundationdb/data3` | - 运行脚本前确保目录已创建<br>- 生产环境建议使用 SSD 和独立目录 | Review Comment: ```suggestion | `DATA_DIRS` | 指定 FoundationDB 存储的数据目录 | 以逗号分隔的绝对路径列表 | `/mnt/foundationdb/data1,/mnt/foundationdb/data2,/mnt/foundationdb/data3` | - 运行脚本前确保目录已创建<br />- 生产环境建议使用 SSD 和独立目录 | ``` `<b>` 会导致前端页面渲染出错 ########## i18n/zh-CN/docusaurus-plugin-content-docs/current/compute-storage-decoupled/compilation-and-deployment.md: ########## @@ -71,73 +82,221 @@ cat /etc/foundationdb/fdb.cluster cloud_ssb:A83c8Y1S3ZbqHLL4P4HHNTTw0A83CuHj@127.0.0.1:4500 ``` -### 启停 +### 3.2 启动与停止 -Meta Service 依赖 JAVA 运行环境,并使用 OpenJDK 17。在启动前这两个服务前,请确保已正确设置 `export JAVA_HOME` 环境变量。 +*环境要求* -`doris_cloud` 部署的 `bin` 目录下提供了启停脚本,调用对应的启停脚本即可完成启停。 +确保已正确设置 `JAVA_HOME` 环境变量,指向 OpenJDK 17,进入 `ms` 目录。 -在 `ms` 目录中: +*启动命令* ```Shell export JAVA_HOME=${path_to_jdk_17} bin/start.sh --daemon +``` + +*停止命令* +``` shell bin/stop.sh ``` -若 Meta Service 进程正常启动,将能在 `doris_cloud.out` 文件中观察到 `successfully started` 的输出信息。以下为一个启动的输出信息示例 +*验证启动* -``` -2024-09-02 21:03:53 try to start doris_cloud -process working directory: "/mnt/disk1/gavinchou/debug/doris-cloud/ms" -pid=810125 written to file=./bin/doris_cloud.pid -version:{doris_cloud-0.0.0-debug} code_version:{commit=7d94417e6ca10f3c77bea07caf4994af155b6e99 time=2024-09-02 21:03:01 +0800} build_info:{initiator=gavinchou@VM-10-11-centos build_at=2024-09-02 21:03:01 +0800 build_on=NAME="TencentOS Se -rver" VERSION="3.1 (Final)" } - -run doris_cloud as meta_service and recycler by default -meta-service started -recycler started -successfully started brpc listening on port=6000 time_elapsed_ms=139 -``` +检查 `doris_cloud.out` 文件中是否有 `successfully started` 的输出信息。 -## 将数据回收功能作为单独进程部署 +生产环境中请确保至少有 3 个 Meta Service 节点。 -在一些场景中为了更好的隔离性以及稳定性,我们需要将元数据操作功能和数据回收功能分开不同的进程部署。 +## 4. 数据回收功能独立部署(可选) -在成功部署并启动 Meta Service 之后,Doris 存算分离模式的底座便已完成搭建。 +*准备工作* -`ms`目录也可以用于启动为数据回收功能进程,只需使用不同启动参数启动即可。 -需要注意的是,需要单独准备一个独立的工作目录,二进制以及配置文件都是单独的一份。 +1. 创建新的工作目录(如 `recycler`)。 +2. 复制 `ms` 目录内容到新目录: -使用以下命令从`ms`目录中拷贝二进制文件至一个新的 Recycler 工作目录`re`。 -```Shell -cp -r ms re -``` + ```shell + cp -r ms recycler + ``` + +*配置* -Meta Service 启动脚本可以接受 `--meta-service` 和 `--recycler` 两个参数指定的是当前 Meta Service 进程拥有什么样的能力。 -前者为元数据操作(主要提供一些在线实时元数据操作), 后者为数据回收功能(离线异步数据回收等流程)。 +在新目录的配置文件中修改 BRPC 监听端口。 -在 re 目录下对配置文件中的 BRPC 的监听端口号按需进行必要修改,然后使用 `--recycler` 参数启动即可。 +*启动数据回收功能* ```Shell export JAVA_HOME=${path_to_jdk_17} bin/start.sh --recycler --daemon - -bin/stop.sh ``` -这样我们得到了一个只有数据回收功能的 Meta Service 进程,它不负责元数据的操作,**在 FE BE 的配置中不要将只有回收功能的 Meta Service 进程其作为 `meta_service_endpoint` 配置的目标**。 +*启动仅元数据操作功能* -同理,我们通过控制启动参数,也可以得到一个只有元数据操作功能的 Meta Service 进程 -在 ms 目录下使用以下参数启动 ```Shell export JAVA_HOME=${path_to_jdk_17} bin/start.sh --meta-service --daemon +``` -bin/stop.sh +## 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 类型 + - 示例:`12345678` + +3. `meta_service_endpoint` + - 描述:Meta Service 的地址和端口 + - 格式:`IP地址:端口号` + - 示例:`127.0.0.1:5000`, 可以用逗号分割配置多个meta service。 + +#### 5.2.2 启动 FE + +启动命令示例: + +```bash +bin/start_fe.sh --daemon +``` + +第一个 FE 进程初始化集群并以 FOLLOWER 角色工作。 + +### 5.3 添加其他 FE 节点 + +使用以下 SQL 命令添加额外的 FE 节点: Review Comment: ```suggestion 其他节点同样根据上述步骤修改配置文件并启动,使用 mysql 客户端 Master 角色的 FE,并用以下 SQL 命令添加额外的 FE 节点: ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org