Doris的部署

Doris 是一款基于 MPP 架构的高性能、实时分析型数据库,部署主要涉及 Frontend (FE)Backend (BE) 两个核心组件,以及可选的 Broker(用于读取外部存储如 HDFS/S3 数据)。以下是 Doris 部署的详细步骤和注意事项:

一、部署前准备

1. 环境要求
  • 操作系统:Linux 发行版(CentOS 7+/Ubuntu 16.04+,推荐 CentOS 7/8),64 位系统。
  • 硬件配置
    • FE:至少 4C8G 内存,元数据目录(meta_dir)建议 SSD 硬盘,磁盘空间 ≥ 100GB(生产环境建议 16C32G+)。
    • BE:至少 8C16G 内存,数据目录(storage_root_path)建议 SSD 或 SATA 硬盘,磁盘空间 ≥ 500GB(生产环境建议 16C64G+,且 BE 节点数 ≥ 3)。
  • 软件依赖
    • FE:JDK 8(OpenJDK 或 Oracle JDK,推荐 OpenJDK 8u202+),需配置 JAVA_HOME 环境变量。
    • BE:依赖 libstdc++zlibsnappylz4 等库,可通过 yum install -y libstdc++-devel zlib-devel snappy-devel lz4-devel 安装。
    • 所有节点:安装 mysql-client(用于连接 FE)、ntp(时间同步),关闭防火墙 / SELinux(或开放指定端口)。
  • 网络要求
    • 所有节点之间网络互通(FE、BE、Broker 节点两两通信)。
    • FE 需开放端口:http_port(默认 8030)、rpc_port(默认 9020)、query_port(默认 9030)、edit_log_port(默认 9010)。
    • BE 需开放端口:be_port(默认 9060)、webserver_port(默认 8040)、heartbeat_service_port(默认 9050)、brpc_port(默认 8060)。
    • Broker 需开放端口:broker_ipc_port(默认 8000)。
2. 节点规划(示例)
节点 IP 角色 说明
192.168.1.10 FE (Leader) 主 FE 节点(元数据管理)
192.168.1.11 FE (Follower) 从 FE 节点(高可用)
192.168.1.12 BE 数据存储与计算节点
192.168.1.13 BE 数据存储与计算节点
192.168.1.14 BE 数据存储与计算节点
192.168.1.15 Broker 外部存储访问代理(可选)

生产环境中,FE 建议部署 3 节点(1 Leader + 2 Follower/Observer),BE 建议部署 3+ 节点,Broker 按需部署(如仅本地数据可不用)。

3. 系统优化(可选,生产环境建议)
  • 关闭 swapswapoff -a,并修改 /etc/fstab 注释 swap 分区。

  • 调整文件描述符限制 :在 /etc/security/limits.conf 中添加:

    复制代码
    * soft nofile 65535
    * hard nofile 65535
    * soft nproc 65535
    * hard nproc 65535
  • 调整内核参数 :在 /etc/sysctl.conf 中添加:

    复制代码
    vm.swappiness = 0
    net.core.somaxconn = 65535
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30

    执行 sysctl -p 生效。

二、下载与解压安装包

  1. 从 Doris 官网(https://doris.apache.org/)或镜像站下载最新稳定版安装包(如 apache-doris-2.1.0-bin-x86_64.tar.gz)。

  2. 在所有节点解压安装包到指定目录(如 /opt/doris):

    运行

    bash 复制代码
    mkdir -p /opt/doris
    tar -zxvf apache-doris-2.1.0-bin-x86_64.tar.gz -C /opt/doris
    cd /opt/doris 
    mv apache-doris-2.1.0-bin-x86_64/* . 
    rm -rf apache-doris-2.1.0-bin-x86_64
  3. 为 Doris 目录设置权限(如指定 doris 用户):

    运行

    bash 复制代码
    useradd -m doris
    chown -R doris:doris /opt/doris

三、部署 Frontend (FE)

1. 配置 FE(所有 FE 节点)

编辑 FE 配置文件 conf/fe.conf,关键参数如下:

复制代码
# 元数据存储目录(需提前创建,建议 SSD)
meta_dir = /data/doris/fe/meta

# FE 节点 IP(需填写本机内网 IP,不可用 127.0.0.1)
priority_networks = 192.168.1.0/24  # 或具体 IP 如 192.168.1.10/24

# JVM 内存配置(根据节点内存调整,FE 建议 4G+)
JAVA_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=500"

# 端口配置(默认即可,若冲突需修改)
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010

priority_networks 用于指定 FE 绑定的网卡网段,解决多网卡环境下的 IP 选择问题,必须配置。

  1. 创建元数据目录(所有 FE 节点):

    运行

    bash 复制代码
    mkdir -p /data/doris/fe/meta
    chown -R doris:doris /data/doris/fe
2. 启动 FE Leader 节点

doris 用户在 Leader FE 节点执行:

运行

bash 复制代码
cd /opt/doris
./bin/start_fe.sh --daemon  # 后台启动
  • 查看启动日志:tail -f log/fe.log,若出现 start frontend service success 则启动成功。
  • 访问 FE Web UI:http://<FE_IP>:8030,默认用户名 root,密码为空(首次登录建议修改密码)。
3. 加入 FE Follower/Observer 节点(高可用)
  1. 在 Follower/Observer 节点执行启动命令(需先完成配置):

    运行

    bash 复制代码
    ./bin/start_fe.sh --daemon --helper leader_fe_ip:edit_log_port

    示例:./bin/start_fe.sh --daemon --helper 192.168.1.10:9010

  2. 登录 FE 的 MySQL 客户端(Leader 节点),确认 FE 节点状态: 运行

    bash 复制代码
    mysql -h 192.168.1.10 -P 9030 -u root

    执行 SQL:

    sql 复制代码
    SHOW FRONTENDS;

    Alive 列为 trueRole 列为 FOLLOWER/OBSERVER,则加入成功。

Observer 节点为只读节点,不参与投票选举,适合跨机房部署;Follower 节点参与投票,需部署奇数个(如 1 Leader + 2 Follower)。

四、部署 Backend (BE)

1. 配置 BE(所有 BE 节点)

编辑 BE 配置文件 conf/be.conf,关键参数如下:

复制代码
# 数据存储目录(需提前创建,多个目录用逗号分隔,建议不同磁盘)
storage_root_path = /data/doris/be/data1,/data/doris/be/data2

# BE 节点 IP(同 FE,需配置网段)
priority_networks = 192.168.1.0/24

# 端口配置(默认即可,若冲突需修改)
be_port = 9060
webserver_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060

# 内存配置(根据节点内存调整,BE 建议 8G+)
mem_limit = 16G  # 总内存限制(包括系统内存和JVM内存)
  1. 创建数据存储目录(所有 BE 节点):

    运行

    bash 复制代码
    mkdir -p /data/doris/be/data1 /data/doris/be/data2
    chown -R doris:doris /data/doris/be
2. 向 FE 注册 BE 节点

登录 FE 的 MySQL 客户端,执行 SQL:

sql 复制代码
ALTER SYSTEM ADD BACKEND "be_ip:heartbeat_service_port";

示例(添加 3 个 BE 节点):

sql 复制代码
ALTER SYSTEM ADD BACKEND "192.168.1.12:9050";
ALTER SYSTEM ADD BACKEND "192.168.1.13:9050";
ALTER SYSTEM ADD BACKEND "192.168.1.14:9050";
3. 启动 BE 节点

doris 用户在所有 BE 节点执行:

运行

bash 复制代码
cd /opt/doris
./bin/start_be.sh --daemon  # 后台启动
  • 查看启动日志:tail -f log/be.log,若出现 start backend service success 则启动成功。

  • 登录 FE 的 MySQL 客户端,确认 BE 节点状态:

    sql 复制代码
    SHOW BACKENDS;

    Alive 列为 true,则 BE 节点加入成功(首次启动可能需要 1-2 分钟同步)。

五、部署 Broker(可选)

1. 配置 Broker(所有 Broker 节点)

编辑 Broker 配置文件 conf/broker.conf,关键参数:

复制代码
# Broker 端口(默认 8000)
broker_ipc_port = 8000

# 网段配置(同 FE/BE)
priority_networks = 192.168.1.0/24
2. 向 FE 注册 Broker 节点

登录 FE 的 MySQL 客户端,执行 SQL:

sql 复制代码
ALTER SYSTEM ADD BROKER broker_name "broker_ip:broker_ipc_port";

示例:

sql 复制代码
ALTER SYSTEM ADD BROKER hdfs_broker "192.168.1.15:8000";
3. 启动 Broker 节点

doris 用户在 Broker 节点执行:

运行

bash 复制代码
cd /opt/doris
./bin/start_broker.sh --daemon
  • 查看启动日志:tail -f log/broker.log,确认启动成功。

  • 验证 Broker 状态:

    sql 复制代码
    SHOW BROKERS;

    Alive 列为 true,则 Broker 加入成功。

六、部署验证

  1. 功能验证:登录 FE 的 MySQL 客户端,创建数据库和表,插入数据并查询:

    sql 复制代码
    CREATE DATABASE test_db;
    USE test_db;
    CREATE TABLE test_tbl (
        id INT,
        name STRING
    ) DISTRIBUTED BY HASH(id) BUCKETS 3;
    INSERT INTO test_tbl VALUES (1, 'doris'), (2, 'apache');
    SELECT * FROM test_tbl;

    若查询结果正常,则 Doris 集群部署成功。

  2. 集群状态检查

    • FE Web UI:http://<FE_IP>:8030,可查看集群拓扑、节点状态、负载等信息。
    • 执行 SHOW PROC '/frontends'SHOW PROC '/backends' 查看节点详细信息。

七、常见问题与注意事项

  1. FE 启动失败

    • 检查 meta_dir 权限是否为 doris 用户所有。
    • 检查 priority_networks 配置是否正确(网段 / IP 错误会导致节点无法通信)。
    • 检查 JDK 版本是否为 8(FE 不支持 JDK 11+,部分版本可兼容但不推荐)。
  2. BE 节点 Alivefalse

    • 检查 FE 与 BE 之间的网络连通性(ping + 端口 telnet 测试)。
    • 检查 BE 的 storage_root_path 目录是否存在且权限正确。
    • 查看 BE 日志 log/be.log,若出现 heartbeat timeout,需检查网络或 FE 配置。
  3. 端口冲突 :使用 netstat -tulnp | grep <端口号> 检查端口是否被占用,若冲突需修改配置文件中的端口参数。

  4. 元数据备份 :FE 的 meta_dir 存储集群元数据,需定期备份(可通过 FE Web UI 或 cp 命令备份)。

  5. 集群扩容

    • FE 扩容:新增 Follower/Observer 节点,执行 start_fe.sh --helper 并注册。
    • BE 扩容:新增 BE 节点,向 FE 注册后启动即可(数据会自动均衡)。

八、停止集群(如需)

  • 停止 FE./bin/stop_fe.sh
  • 停止 BE./bin/stop_be.sh
  • 停止 Broker./bin/stop_broker.sh

停止集群时建议先停 BE,再停 FE;启动时先启 FE,再启 BE。

以上为 Doris 单机 / 集群部署的标准流程,实际部署时需根据硬件资源和业务需求调整配置参数,生产环境建议参考官方文档(https://doris.apache.org/docs/)进行精细化配置和优化。

相关推荐
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码3 天前
嵌入式学习路线
学习
毛小茛3 天前
计算机系统概论——校验码
学习
babe小鑫3 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms3 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下3 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。3 天前
2026.2.25监控学习
学习
im_AMBER3 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J3 天前
从“Hello World“ 开始 C++
c语言·c++·学习