Centos部署Doris集群实战指南

Centos部署Doris集群实战指南

本文系统介绍了基于 CentOS 7 的 Apache Doris 集群搭建过程,涵盖从环境准备到集群管理的关键步骤。文中首先列出了操作系统的配置要求,包括关闭防火墙、调整内核参数、配置时钟同步及免密登录等,确保系统能够满足 Doris 的性能需求,同时附上相关配置链接供详细查阅。

集群规划方面,将三台服务器分别设置为 masternode1node2,并明确角色分工,如 FE、BE 和 BROKER。这部分强调了路径和集群 IP 的修改要求,操作优先使用非 root 用户。

安装部分是本文的重点,详细展示了模块化的安装步骤,包括 FE、BE 和 BROKER 的配置、启动及节点关联方法,提供了分布式操作工具 xsync 的使用及 Mysql 客户端管理 FE 的方式。同时,文中附带了各模块端口调整与内存限制的建议设置。

最后,文章介绍了集群验证、管理功能,包括节点状态检查、Web 管理界面登录及一键式管理脚本的编写,方便集群的启动、停止与监控操作。

本文结合官方文档及实践经验,提供了清晰的操作指南,是搭建高性能数据分析集群的重要参考。

环境准备

需要有三台 Centos7 服务器,并都需要完成下面的配置要求:

  • 关闭防火墙
  • 新建普通用户me
  • 阿里云时钟同步服务器
  • 配置免密登陆
  • 永久关闭selinux
  • 永久关闭swap分区
  • 永久调整句柄数和进程限制
  • 永久调整虚拟内存区域限制
  • 临时禁用透明大页
  • 配置xsyncxcall同步脚本
  • 配置jdk8环境

环境准备可以参考我下面的博文:

centos防火墙常用命令

centos新建普通用户

centos系统时间同步

centos配置免密登录

centos关闭SElinux

centos关闭swap分区

centos调整句柄数和进程限制

centos调整虚拟内存区域限制

centos禁用透明大页

centos配置xsync和xcall同步脚本

centos安装jdk8

集群规划

说明:

  1. 除特别说明外,本文的所有操作均在master节点、使用me这个非root用户执行
  2. 命令中出现的IP,均需要替换为自己集群中的IP【必须】
  3. 命令中出现的/home/lbs/software路径,可选择替换为自定义路径【可选】
hostname IP 角色
master 10.0.0.87 FE(LEADER)+ BE + BROKER
node1 10.0.0.81 FE(FOLLOWER)+ BE + BROKER
node2 10.0.0.82 FE(FOLLOWER)+ BE + BROKER

正式安装

下载资源包apache-doris-2.1.6-bin-x64.tar.gz,并解压到指定安装路径

1
2
3
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.1.6-bin-x64.tar.gz
tar -zxvf apache-doris-2.1.6-bin-x64.tar.gz -C /home/lbs/software
mv /home/lbs/software/apache-doris-2.1.6-bin-x64 /home/lbs/software/doris

安装FE

  1. 修改fe.conf配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    vi /home/lbs/software/doris/fe/conf/fe.conf

    # 修改各种端口,防止与hadoop集群冲突(可选,端口不冲突不用)
    http_port = 8130
    rpc_port = 9120
    query_port = 9130
    edit_log_port = 9110

    # 绑定集群ip网段
    priority_networks = 10.0.0.0/24
  2. 分发fe目录到集群的其他的两个机器上

    1
    xsync /home/lbs/software/doris/fe

安装BE

  1. 修改be.conf配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    vi /home/lbs/software/doris/be/conf/be.conf

    # 修改各种端口,防止与hadoop集群冲突(可选,端口不冲突不用)
    be_port = 9160
    webserver_port = 8140
    heartbeat_service_port = 9150
    brpc_port = 8160

    # 绑定集群ip网段
    priority_networks = 10.0.0.0/24

    # 新增配置内容,限制be内存占用
    mem_limit = 30%
  2. 分发be目录到集群的其他的两个机器上

    1
    xsync /home/lbs/software/doris/be

安装BROKER

  1. 修改apache_hdfs_broker.conf配置文件

    1
    2
    3
    4
    vi /home/lbs/software/doris/extensions/apache_hdfs_broker/conf/apache_hdfs_broker.conf

    # 修改内容如下(默认为8000):
    broker_ipc_port = 8100
  2. 分发extensions目录到集群的其他的两个机器上

    1
    xsync /home/lbs/software/doris/extensions

创建集群

启动并关联FE

  1. 登录master节点启动 FE 作为 LEADER,并查看doris进程

    1
    2
    3
    4
    5
    # 启动FE
    /home/lbs/software/doris/fe/bin/start_fe.sh --daemon

    # 查看 Doris 进程
    ps -ef | grep doris

    image.png

  2. 再分别登录到node1node2两个机器执行下面命令,用于分别启动 FE 作为两个 FOLLOWER,并查看doris进程

    注意:

    --helper 10.0.0.87:9110 仅在首次启动时需要添加,后续无需添加

    10.0.0.87LEADER 节点的IP,9110 为 FE 的 edit_log_port

    1
    2
    3
    4
    5
    # 启动FE,并连接到LEADER
    /home/lbs/software/doris/fe/bin/start_fe.sh --helper 10.0.0.87:9110 --daemon

    # 查看 Doris 进程
    ps -ef | grep doris

    image.png

    image.png

  3. 回到master机器,安装mysql客户端

    1
    sudo yum install -y mysql
  4. 通过Mysql-client连接 FE LEADER 的 Mysql,将 两个 FOLLOWER 添加进去。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 密码为空
    mysql -h 10.0.0.87 -P 9130 -uroot

    # 添加three、four为follower节点
    ALTER SYSTEM ADD FOLLOWER "10.0.0.81:9110";
    ALTER SYSTEM ADD FOLLOWER "10.0.0.82:9110";

    # 查看状态(需要多等待一会儿,直到Alive列值都为true)
    SHOW PROC '/frontends';

    添加节点:ALTER SYSTEM ADD FOLLOWER[OBSERVER] "fe_host:edit_log_port";

    删除节点:ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

启动并关联BE

  1. 启动集群中的三台机器上的BE,并查看doris进程

    先退出mysql客户端

    1
    2
    3
    4
    5
    # 启动BE
    xcall /home/lbs/software/doris/be/bin/start_be.sh --daemon

    # 查看 Doris 进程
    ps -ef | grep doris

    image.png
    image.png
    image.png

  2. 添加集群中的三台机器上的BEFEMySQL数据库中。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 登录到FE的Mysql数据库
    mysql -h 10.0.0.87 -P 9130 -uroot

    # 添加集群中三个节点的BE
    ALTER SYSTEM ADD BACKEND "10.0.0.87:9150";
    ALTER SYSTEM ADD BACKEND "10.0.0.81:9150";
    ALTER SYSTEM ADD BACKEND "10.0.0.82:9150";

    # 查看状态(需要多等待一会儿,直到Alive列值都为true)
    SHOW PROC '/backends';

    优雅删除节点(将此BE数据迁移到其他BE节点):ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

    强制删除节点(会直接删除BE及上面的数据):ALTER SYSTEM DROPP BACKEND "be_host:be_heartbeat_service_port";

启动并关联BROKER

  1. 启动集群中的三台机器上的BROKER,并查看Doris进程

    先退出mysql客户端

    1
    2
    3
    4
    5
    # 启动broker
    xcall /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/start_broker.sh --daemon

    # 查看 Doris 进程
    ps -ef | grep doris

    image.png
    image.png
    image.png

  2. 同时添加集群中的三台机器上的BROKERFEMySQL数据库中。

    1
    2
    3
    4
    5
    6
    7
    8
    # 登录到FE的Mysql数据库
    mysql -h 10.0.0.87 -P 9130 -uroot

    # 添加集群中三个节点的broker
    ALTER SYSTEM ADD BROKER broker_name "10.0.0.87:8100","10.0.0.81:8100","10.0.0.82:8100";

    # 查看状态(需要多等待一会儿,直到Alive列值都为true)
    SHOW PROC "/brokers";

    添加 BROKER 节点:ALTER SYSTEM ADD BROKER broker_name "broker_host1:broker_ipc_port1","broker_host2:broker_ipc_port2",...;

    删除 BROKER 节点:ALTER SYSTEM DROP BROKER broker_name "broker_host1:broker_ipc_port1","broker_host2:broker_ipc_port2",...;

    删除所有 BROKER 节点:ALTER SYSTEM DROP ALL BROKER broker_name;

验证集群

  1. 登录FE的数据库,查看FEBEBROKER各节点的状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 登录到FE的数据库
    mysql -h 10.0.0.87 -P 9130 -uroot

    # 查看集群中所有的FE节点状态
    SHOW PROC '/frontends';

    # 查看集群中所有的BE节点状态
    SHOW PROC '/backends';

    # 查看集群中所有的BROKER节点状态
    SHOW PROC "/brokers";
  2. 浏览器输入下面的地址、账号,进入DorisWeb页面。

    地址 账号 密码
    http://10.0.0.87:8130 (http://fe_hostname:fe_http_port) root

集群管理

启动集群

1
2
3
4
5
6
7
8
# 启动集群中所有的FE节点
xcall /home/lbs/software/doris/fe/bin/start_fe.sh --daemon

# 启动集群中所有的BE节点
xcall /home/lbs/software/doris/be/bin/start_be.sh --daemon

# 启动集群中所有的BROKER节点
xcall /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/start_broker.sh --daemon

停止集群

1
2
3
4
5
6
7
8
# 停止集群中所有的BROKER节点
xcall /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/stop_broker.sh --daemon

# 停止集群中所有的BE节点
xcall /home/lbs/software/doris/be/bin/stop_be.sh --daemon

# 停止集群中所有的FE节点
xcall /home/lbs/software/doris/fe/bin/stop_fe.sh --daemon

集群状态

1
2
3
4
5
6
7
8
9
10
11
# 登录到FE的数据库
mysql -h 10.0.0.87 -P 9130 -uroot

# 查看集群中所有的FE节点状态
SHOW PROC '/frontends';

# 查看集群中所有的BE节点状态
SHOW PROC '/backends';

# 查看集群中所有的BROKER节点状态
SHOW PROC "/brokers";

管理脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
cat > /home/lbs/software/doris/doris-cluster.sh <<EOF
#!/bin/bash
case $1 in
"start"){
for i in 10.0.0.87 10.0.0.81 10.0.0.82
do
echo -------------------------------- $i doris 启动 ---------------------------
ssh $i "source /etc/profile; /home/lbs/software/doris/fe/bin/start_fe.sh --daemon; /home/lbs/software/doris/be/bin/start_be.sh --daemon; /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/start_broker.sh --daemon"
done
}
;;
"stop"){
for i in 10.0.0.87 10.0.0.81 10.0.0.82
do
echo -------------------------------- $i doris 停止 ---------------------------
ssh $i "source /etc/profile; /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/stop_broker.sh --daemon; /home/lbs/software/doris/be/bin/stop_be.sh --daemon; /home/lbs/software/doris/fe/bin/stop_fe.sh --daemon"
done
}
;;
"status"){
for i in 10.0.0.87 10.0.0.81 10.0.0.82
do
echo -------------------------------- $i doris 状态 ---------------------------
status=$(ssh $i "source /etc/profile; ps -ef | grep doris")
if [[ -z "$status" ]]
then
echo "Doris not running!"
else
echo "$status"
fi
done
}
;;
esac
EOF

参考文献:

Doris官网文档-标准部署

Doris官网文档-弹性扩缩容

Centos部署Doris集群实战指南

https://lbs.wiki/pages/1c0d9a3d/

作者

李博帅

发布于

2023-10-12

更新于

2025-06-05

许可协议