Doris集群启停脚步

Apache Doris 是一个基于 MPP(大规模并行处理)架构的高性能、实时的分析型数据库。在 Doris 中,FE(Frontend)、BE(Backend)和 Broker 组件有特定的启动和关闭顺序,下面详细介绍一下。

一、启动顺序

通常按照 FE -> BE -> Broker 的顺序启动,以下是对该顺序的详细解释:

  1. 启动 FE
    • FE 是 Doris 的前端节点,负责元数据管理、查询规划、权限管理等功能,是整个系统的核心控制节点。
    • 只有 FE 正常启动并完成初始化后,才能为后续的 BE 和 Broker 提供元数据服务和管理接口。如果 FE 未启动,BE 和 Broker 无法与集群建立有效的连接和通信。
    • 启动 FE 的命令示例(以单节点为例):
./bin/start_fe.sh --daemon
  1. 启动 BE
    • BE 是 Doris 的后端节点,负责数据存储和查询执行。
    • 在 FE 启动并正常运行后,BE 需要向 FE 进行注册,获取元数据信息,了解集群的拓扑结构和数据分布情况。只有成功注册到 FE 后,BE 才能参与到数据存储和查询处理的工作中。
    • 启动 BE 的命令示例:
./bin/start_be.sh --daemon
  1. 启动 Broker
    • Broker 是 Doris 提供的外部存储访问服务,用于读取和写入 HDFS、S3 等外部存储系统的数据。
    • 当 FE 和 BE 都正常运行后,才需要启动 Broker。因为 Broker 主要是为 FE 和 BE 提供外部数据访问的支持,在 FE 进行查询规划和 BE 执行查询时,如果涉及到外部存储的数据,会调用 Broker 进行数据的读写操作。
    • 启动 Broker 的命令示例(以 HdfsBroker 为例):
./bin/start_broker.sh --daemon

二、关闭顺序

关闭顺序与启动顺序相反,即 Broker -> BE -> FE,以下是详细说明:

  1. 关闭 Broker
    • 由于 Broker 主要是为 FE 和 BE 提供外部数据访问支持,在关闭系统时,首先关闭 Broker 不会影响 FE 和 BE 本身的数据存储和元数据管理。
    • 关闭 Broker 可以避免在后续关闭 FE 和 BE 过程中,可能出现的 Broker 与 FE、BE 之间的通信异常问题。
    • 关闭 Broker 的命令示例(以 HdfsBroker 为例):
./bin/stop_broker.sh
  1. 关闭 BE
    • BE 负责数据存储和查询执行,在关闭 Broker 后,关闭 BE 可以确保数据的一致性和完整性。
    • 在 BE 关闭过程中,会将内存中的数据刷新到磁盘,并进行必要的清理工作。关闭 BE 后,系统将不再进行数据的存储和查询处理。
    • 关闭 BE 的命令示例:
./bin/stop_be.sh
  1. 关闭 FE
    • FE 是整个系统的核心控制节点,最后关闭 FE 可以确保在关闭过程中,对整个集群的状态进行有序管理。
    • FE 会在关闭前记录必要的元数据信息,保证下次启动时能够正常恢复。
    • 关闭 FE 的命令示例:
./bin/stop_fe.sh

遵循上述启动和关闭顺序,可以确保 Doris 集群的稳定运行和数据的安全性。

三、集群启停脚本

集群角色规划:

节点(node1) 节点(node2) 节点(node3)
FE(leader) fe(follower) fe(observer)
BE BE BE
BROKER BROKER BROKER

3.1 集群启动脚本

#! /bin/bash

echo "------正在启动Doris集群------"
SERVERS="node1 node2 node3"
MASTER="node1"
DORIS_HOME="/opt/module/apache-doris-0.15.0"

start_fe() {
    for SERVER in $SERVERS
    do
         echo "------正在启动${SERVER}上的FE进程------"

         # Start MASTER role
         if [ "$SERVER" = "$MASTER" ]; then
            ssh $SERVER "${DORIS_HOME}/fe/bin/start_fe.sh --daemon;jps -m"
         else
            # if not MASTER role, start it's Follower or Observer
            ssh $SERVER "${DORIS_HOME}/fe/bin/start_fe.sh --helper $MASTER:9010 --daemon; jps -m"
         fi
    done
}

start_be() {
    echo "------正在启动${SERVER}上的BE进程------"

    for SERVER in $SERVERS
    do
         ssh $SERVER "${DORIS_HOME}/be/bin/start_be.sh --daemon; ps -aux |grep _be"
    done
}

start_broker() {
    echo "------正在启动${SERVER}上的Broker进程------"

    for SERVER in $SERVERS
    do
         ssh $SERVER "${DORIS_HOME}/apache_hdfs_broker/bin/start_broker.sh --daemon; jps -m"
    done
}

echo "------启动FE集群------"
start_fe

echo "------启动BE集群------"
start_be

echo "------启动Broker节点------"
start_broker

3.2 集群关闭脚本

#! /bin/bash

echo "------正在关闭Doris集群------"
SERVERS="node1 node2 node3"
MASTER="node1"
DORIS_HOME="/opt/module/apache-doris-0.15.0"

stop_broker() {
    echo "------正在关闭${SERVER}上的Broker进程------"

    for SERVER in $SERVERS
    do
         ssh $SERVER "${DORIS_HOME}/apache_hdfs_broker/bin/stop_broker.sh"
    done
}

stop_be() {
    echo "------正在关闭${SERVER}上的BE进程------"

    for SERVER in $SERVERS
    do
         ssh $SERVER "${DORIS_HOME}/be/bin/stop_be.sh"
    done

    #检查be进程是否关闭
    ps -aux|grep _be
}

stop_fe() {
    for SERVER in $SERVERS
    do
         echo "------正在关闭${SERVER}上的FE进程------"
         ssh $SERVER "${DORIS_HOME}/fe/bin/stop_fe.sh"
    done
}

echo "------关闭Broker节点------"
stop_broker

echo "------关闭BE集群------"
stop_be

echo "------关闭FE集群------"
stop_fe

你可能感兴趣的:(数据仓库)