最详细且简单的Doris集群搭建教程(2.1.6)

3,030 阅读6分钟

环境准备

需要有三台 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路径,可选择替换为自定义路径【可选】
hostnameIP角色
master10.0.0.87FE(LEADER)+ BE + BROKER
node110.0.0.81FE(FOLLOWER)+ BE + BROKER
node210.0.0.82FE(FOLLOWER)+ BE + BROKER

正式安装

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

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配置文件

    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目录到集群的其他的两个机器上

    xsync /home/lbs/software/doris/fe
    

安装BE

  1. 修改be.conf配置文件

    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目录到集群的其他的两个机器上

    xsync /home/lbs/software/doris/be
    

安装BROKER

  1. 修改apache_hdfs_broker.conf配置文件

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

    xsync /home/lbs/software/doris/extensions
    

创建集群

启动并关联FE

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

    # 启动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

    # 启动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客户端

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

    # 密码为空
    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列值都为trueSHOW 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客户端

    # 启动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数据库中。

    # 登录到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列值都为trueSHOW 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客户端

    # 启动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数据库中。

    # 登录到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列值都为trueSHOW 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各节点的状态

    # 登录到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 | 空 |

    image.png

集群管理

启动集群

# 启动集群中所有的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

停止集群

# 停止集群中所有的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

集群状态

# 登录到FE的数据库
mysql -h 10.0.0.87 -P 9130 -uroot

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

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

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

管理脚本

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官网文档-弹性扩缩容