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/)进行精细化配置和优化。

相关推荐
小清兔2 小时前
一个unity中URP的环境下旋转天空盒的脚本(RotationSky)
开发语言·数据库·学习·程序人生·unity·c#·游戏引擎
喵了meme3 小时前
Linux学习日记16:守护进程
linux·服务器·学习
武哥聊编程3 小时前
基于Springboot3+Vue3的仓库管理系统,经典项目,免费学习
java·学习·mysql·vue·springboot·课程设计
学编程的闹钟3 小时前
85【CSS选择器简介】
学习
学编程的闹钟3 小时前
编写VMP爆破插件 (上)
学习
小猪佩奇TONY4 小时前
OpenGL-ES 学习(18) ---- 实例化渲染
学习·elasticsearch·信息可视化
一只乔哇噻4 小时前
java后端工程师+AI大模型开发进修ing(研一版‖day61)
java·开发语言·学习·算法·语言模型
车载测试工程师5 小时前
CAPL学习-SOME/IP交互层-回调函数
学习·tcp/ip·交互·以太网·capl·canoe
jtymyxmz5 小时前
《Maya 2024 超级学习手册》3.4.7 实例:制作哑铃模型
学习