暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MPP分析型数据库Apache Doris

学习面试 2022-06-07
1789

说明 :本教程基于Doris 0.15.0+Flink 1.14并兼顾Doris 1.0

第1章 Doris概述

1.1 Doris是什么

Doris是一个现代化的MPP架构的分析型数据库产品,由百度大数据部门研发,之前叫Palo,Palo 这个词来自OLAP 的反转,寓意这是一个 OLAP 系统。2018年Palo被贡献到Apache社区后,因为重名问题更名为Doris。

Doris在百度内部支持超过200个产品线,集群规模上千台,数据规模超10PB,经受了长期的生产验证。

1.2 Doris的核心特性

1.3 Doris架构

Doris借鉴了Google Mesa数据模型,改造Apache Impala(MPP Query Engine),基于Apache ORCFile (存储格式,编码和压缩)自研存储引擎。

Doris之所以要借鉴整合这三项技术,主要基于如下原因:

  • Mesa可以满足我们许多存储需求的需求,但是Mesa本身不提供SQL查询引擎。

  • Impala是一个非常好的MPP SQL查询引擎,但是缺少完美的分布式存储引擎。

  • 自研列列式存储:存储层对存储数据的管理通过storage_root_path路径进行配置,路径可以是多个。存储目录下一层按照分桶进行组织,分桶目录下存放具体的tablet,按照tablet_id命名子目录。

因此选择了这三种技术的组合。

Doris 的架构很简洁,主要只设 FE(Frontend)BE(Backend)两种角色、两类进程,不依赖于外部组件,方便部署和运维。FE、BE都可以线性扩展。

  • FE

    • Leader 和 Follower:主要是用来保证元数据的高可用,保证单节点宕机的情况下, 元数据能够实时地在线恢复,而不影响整个服务。Leader是基于paxos协议选举出来的(负责读写)。

    • observer只是用来扩展查询节点,就是说如果在发现集群压力非常大的情况下,需要去扩展整个查询的能力,那么可以加observer的节点。observer不参与任何的写入,只参与读取(读)。

    • Doris 系统的元数据管理(存储、维护集群元数据)

    • 负责接收、解析查询请求,规划查询计划,调度查询执行,返回查询结果

    • 节点调度,在导入流程中主要负责导入 plan 生成和导入任务的调度工作

    • Java语言开发,主要负责三方面工作:

    • FE又分为三种角色:

  • BE

    • C++语言开发,Doris 系统的计算和存储节点,执行SQL计划等。在导入流程中主要负责数据的 ETL 和存储。

  • MySQL Client

    • Doris 借助 MySQL 协议,用户使用任意 MySQL 的 ODBC/JDBC以及MySQL 的客户端,都可以直接访问 Doris。

  • Broker

    • Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力,包括HDFS,S3,BOS等

1.4 横向对比

OLAP优点缺点外部依赖SQL支持运维成本适用场景存储引擎
ClickHouse高效列列式存储单节点性能强劲向量化查询保留明细数据运维成本较高在线扩展能力稍显不足非标准全面纯列式OLAP
Druid实时摄取列式存储位图索引高并发使用门槛高运维复杂仅支持聚合查询非标准很高局限MOLAP
TiDBHTAP同时支持明细和聚合查询高度兼容MySQLOLAP能力不足兼容MySQL协议全面HTAP
Kylin预聚合之后多维分析性能强悍支持超大规模数据支持标准SQL易用性好1.x、2.x、3.x依赖Hadoop仅支持聚合查询SQL标准局限MOLAP
Doris主键更新高效Rollup高并发和高吞吐可选支持聚合和明细查询没有外部依赖生态成熟度不足兼容MySQL协议全面ROLAP

1.5 适用场景

Apache Doris 可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等(基于明细数据)。

1.6 谁在使用Doris

第2章 快速开始

对于想快速熟悉 Doris的同学,可以参考官方的快速开始文档非常便捷的搭建一个学习环境,详见如下链接:

https://doris.apache.org/zh-CN/get-starting/get-starting.html#%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87

注意:想学习生产环境如何部署的,请参考《第3章 编译部署》

第3章 编译部署

3.1 两种编译方式

Doris官方未提供预编译的安装包,因此需要自己编译。

由于Doris的FE和BE分别采用Java和C++语言开发,直接编译需要充分的编译环境准备,相对比较复杂,为了简化编译,官方直接给出了编译环境的Docker开发镜像。

编译方式说明
直接编译需要自己准备编译环境,比较复杂,不推荐
Docker开发镜像编译Docker开发镜像已经内置了完整的编译环境,下载源代码既可编译,推荐使用

注意:Doris 1.0开始提供预编译的安装包了

3.2 Docker开发镜像编译

1、部署Docker环境

找一台机器(推荐Linux环境),部署Docker环境,这里不再赘述。

2、下载源代码

https://doris.apache.org/zh-CN/downloads/downloads.html#doris-%E4%B8%BB%E4%BB%A3%E7%A0%81

    wget http://archive.apache.org/dist/incubator/doris/0.15.0-incubating/apache-doris-0.15.0-incubating-src.tar.gz

    下载后解压缩:

       tar -zxvf apache-doris-0.15.0-incubating-src.tar.gz

      3、下载Docker开发镜像

      镜像版本如下,我们选择【apache/incubator-doris:build-env-for-0.15.0】:

      镜像版本doris 版本
      apache/incubator-doris:build-env0.8.x, 0.9.x
      apache/incubator-doris:build-env-1.10.10.x, 0.11.x
      apache/incubator-doris:build-env-1.20.12.x - 0.14.0
      apache/incubator-doris:build-env-1.3.10.14.x
      apache/incubator-doris:build-env-for-0.15.00.15.0
      apache/incubator-doris:build-env-latest
      apache/incubator-doris:build-env-ldb-toolchain-latest
       docker pull apache/incubator-doris:build-env-for-0.15.0

      注意:从Doris 0.15.0开始,开发镜像的版本和 Doris的版本统一了

      镜像下载完成后,通过如下命令查看镜像是否下载完成:

         docker images|grep doris

        4、配置maven私服

        为了加速jar包下载,建议配置阿里云的maven私服:

           vi home/hadoop/opensource/apache-doris-0.15.0-incubating-src/fe/pom.xml

          在标签下添加:

            <repository>
            <id>aliyun</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            </repository>

            5、挂载本地目录运行镜像

            在正式运行镜像之前,建议挂载本地 Doris 源码目录,这样镜像中编译产出的二进制文件会存储在宿主机中,不会因为镜像退出而消失。

            同时,建议同时将镜像中 maven 的 .m2 目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven的依赖库。

            命令格式如下,注意替换为自己的实际目录:

              docker run -it \
              -v your/local/.m2:/root/.m2 \
              -v your/local/incubator-doris-DORIS-x.x.x-release/:/root/incubator-doris-DORIS-x.x.x-
              release/ \
              apache/incubator-doris:build-env-ldb-toolchain-latest

              我的具体命令如下:

                 docker run -it \
                -v home/hadoop/.m2:/root/.m2 \
                -v home/hadoop/opensource/apache-doris-0.15.0-incubating-src/:/root/apache-doris-
                0.15.0-incubating-src/ \
                apache/incubator-doris:build-env-for-0.15.0

                6、切换JDK版本

                在容器里执行,开发镜像中默认是JDK 11,所以需要先切换到JDK 8:

                  alternatives --set java java-1.8.0-openjdk.x86_64
                  alternatives --set javac java-1.8.0-openjdk.x86_64
                  export JAVA_HOME=/usr/lib/jvm/java-1.8.0

                  7、正式编译

                    cd /root/apache-doris-0.15.0-incubating-src
                    sh build.sh

                    特别注意:如果你是第一次使用 build-env-for-0.15.0
                    或之后的版本,第一次编译的时候要使用如下命令:

                       sh build.sh --clean --be --fe --ui

                      这是因为 build-env-for-0.15.0
                      版本镜像升级了 thrift(0.9 -> 0.13),需要通过 --clean 命令强制使用新版本的 thrift 生成代码文件,否则会出现不兼容的代码。

                      编译完成后,产出文件在 output/
                      目录中。

                      3.3 环境要求

                      Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求:

                      3.3.1 软硬件需求

                      1、操作系统版本要求

                      Linux 系统版本
                      CentOS7.1 及以上
                      Ubuntu16.04 及以上

                      2、软件需求

                      软件版本
                      Java1.8 及以上
                      GCC4.8.2 及以上

                      3、操作系统优化

                      操作系统优化在生产环境尤为关键,开发测试环境无需纠结。

                      • 设置系统最大打开文件句柄数

                         vi etc/security/limits.conf
                        * soft nofile 65536
                        * hard nofile 65536
                        • 时钟同步

                        Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。

                        • 关闭交换分区(swap)

                        Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区。

                        如下命令可以确定是否关闭了swap:

                          free -m
                          • Liunx文件系统

                          这里我们推荐使用ext4文件系统,在安装操作系统的时候,请选择ext4文件系统。

                          如下命令可查看文件系统类型:

                             df -Th


                            4、开发测试环境推荐配置

                            模块CPU内存磁盘网络实例数量
                            Frontend8核+8GB+SSD 或 SATA,10GB+ *千兆网卡1
                            Backend8核+16GB+SSD 或 SATA,50GB+ *千兆网卡1-3 *

                            5、生产环境推荐配置

                            模块CPU内存磁盘网络实例数量
                            Frontend16核+64GB+SSD 或 RAID 卡,100GB+ *万兆网卡1-5 *
                            Backend16核+64GB+SSD 或 SATA,100G+ *万兆网卡10-100 *

                            6、特别注意

                            • FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。

                            • BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40%的空间用作后台 compaction 以及一些中间数据的存放。

                            • 一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)

                            • 测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。

                            • 所有部署节点关闭 Swap。

                            • FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称Follower)。

                            • FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。

                            • Follower 的数量必须为奇数,Observer 数量随意。

                            • 根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。

                            • Broker 是用于访问外部数据源(如 hdfs)的进程。通常,在每台机器上部署一个 broker 实例即可。

                            • 因为存在多IP的情况,必须明确在fe和be的配置文件中配置绑定的IP(例如:priority_networks=10.1.3.0/24)

                            • doris默认为表名大小写敏感,如有表名大小写不敏感的需求需在集群初始化时进行设置。表名大小写敏感性在集群初始化完成后不可再修改。

                            2.3.2 网络需求

                            Doris 各个实例直接通过网络进行通讯。以下表格展示了所有需要的端口:

                            实例名称端口名称默认端口通讯方向说明
                            BEbe_port9060FE --> BEBE 上 thrift server 的端口,用于接收来自FE 的请求
                            BEwebserver_port8040BE <--> BEBE 上的 http server 的端口
                            BEheartbeat_service_port9050FE --> BEBE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
                            BEbrpc_port8060FE <--> BE, BE <-->BEBE 上的 brpc 端口,用于 BE 之间通讯
                            FEhttp_port8030FE <--> FE,用户 <--> FEFE 上的 http server 端口
                            FErpc_port9020BE --> FE, FE <--> FEFE 上的 thrift server 端口,每个fe的配置需要保持一致
                            FEquery_port9030用户 <--> FEFE 上的 mysql server 端口
                            FEedit_log_port9010FE <--> FEFE 上的 bdbje 之间通信用的端口
                            Brokerbroker_ipc_port8000FE --> Broker, BE -->BrokerBroker 上的 thrift server,用于接收请求
                            1. 当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。

                            2. 部署前请确保各个端口在应有方向上的访问权限。

                            3.4 集群部署

                            3.4.1 部署规划

                            node01node02node03
                            fe(Leader)fe(Follower)fe(Observer)
                            bebebe
                            brokerbrokerbroker

                            3.4.2 配置并启动fe

                            我们先部署一个fe节点到node01:

                            • 创建安装目录

                              mkdir /home/hadoop/app/apache-doris-0.15.0
                              • 拷贝编译好的文件到安装目录

                                 cp -r /home/hadoop/opensource/apache-doris-0.15.0-incubating-src/output/* /home/hadoop/app/apache-doris-0.15.0
                                • 创建元数据存储目录

                                  mkdir /home/hadoop/app/apache-doris-0.15.0/doris-meta

                                  注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置

                                  • 修改配置

                                     vi /home/hadoop/app/apache-doris-0.15.0/fe/conf/fe.conf
                                      #指定元数据路径:
                                      meta_dir = /home/hadoop/app/apache-doris-0.15.0/doris-meta
                                      #修改绑定 ip(每台机器修改成自己的ip)
                                      priority_networks = 192.168.2.36/24

                                      注意:JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上

                                      注意:priority_networks = 192.168.8.101/24
                                      末尾的24为子网掩码简写:

                                      默认子网掩码表:

                                      默认子网掩码子网掩码简写
                                      255.0.0.08
                                      255.255.0.016
                                      255.255.255.024

                                      在子网划分中,也可能会出现25到30位子网掩码,下面是常⻅见子网掩码表:

                                      • 启动FE

                                         /home/hadoop/app/apache-doris-0.15.0/fe/bin/start_fe.sh --daemon

                                        3.4.3 配置be

                                        be节点直接部署在node01-node03上。

                                        • 分发be到各个节点

                                           scp -r /home/hadoop/app/apache-doris-0.15.0/be hadoop@node02:/home/hadoop/app/apache-doris-0.15.0
                                          scp -r /home/hadoop/app/apache-doris-0.15.0/be hadoop@node03:/home/hadoop/app/apache-doris-0.15.0
                                          • 所有节点创建数据目录

                                          我们每个节点创建2个目录,已理解多目录的配置:

                                            mkdir /home/hadoop/app/apache-doris-0.15.0/doris-storage1
                                            mkdir /home/hadoop/app/apache-doris-0.15.0/doris-storage2
                                            • 所有节点修改be配置

                                               vi /home/hadoop/app/apache-doris-0.15.0/be/conf/be.conf
                                              • 主要修改如下配置:

                                                 #配置文件中指定数据存放路径:
                                                storage_root_path = /home/hadoop/app/apache-doris-0.15.0/doris-storage1;/home/hadoop/app/apache-doris-0.15.0/doris-storage2

                                                #修改绑定 ip(每台机器修改成自己的 ip)
                                                priority_networks = 192.168.2.36/24
                                                • storage_root_path默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 ;)。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号 , 隔开。例如:

                                                   storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris

                                                  说明:

                                                  • /home/disk1/doris.HDD,50
                                                    ,表示存储限制为50GB,HDD;

                                                  • /home/disk2/doris.SSD,10
                                                    ,存储限制为10GB,SSD;

                                                  • /home/disk2/doris
                                                    ,存储限制为磁盘最大容量,默认为HDD

                                                  另外还可以这么配置:

                                                     storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:50
                                                    • /home/disk1/doris,medium:hdd,capacity:10
                                                      ,表示存储限制为10GB, HDD;

                                                    • /home/disk2/doris,medium:ssd,capacity:50
                                                      ,表示存储限制为50GB, SSD

                                                    3.4.4 添加be到集群

                                                    BE节点需要先在 FE 中添加,才可加入集群。可以使用 mysql-client 连接到 FE进行BE的添加。

                                                    • 安装MySQL Client

                                                    我们早就安装了,注意就是我们安装MySQL时安装的那个MySQL Client。

                                                    • 通过MySQL Client连接FE

                                                       mysql -h node01 -uroot -P 9030
                                                      • 默认 root 无密码,通过以下命令修改 root 密码:

                                                        SET PASSWORD FOR 'root' = PASSWORD('root%123');
                                                        • 添加BE

                                                           ALTER SYSTEM ADD BACKEND "node01:9050";
                                                          ALTER SYSTEM ADD BACKEND "node02:9050";
                                                          ALTER SYSTEM ADD BACKEND "node03:9050";
                                                          • 查看BE状态

                                                             -- 查看be状态
                                                            SHOW PROC '/backends';
                                                            -- 查看fe状态
                                                            SHOW PROC '/frontends';

                                                            3.4.5 启动be

                                                              /home/hadoop/app/apache-doris-0.15.0/be/bin/start_be.sh --daemon

                                                              3.4.6 部署broker【可选】

                                                              注意:broker不是必须部署的。

                                                              Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据到Doris,就需要部署相应的Broker,默认提供了读取 HDFS 、百度云 BOS 及 Amazon S3 的 fs_broker。fs_broker 是无状态的,建议每一个FE 和 BE 节点都部署一个 Broker。

                                                              • 编译broker

                                                              《3.2 Docker开发镜像编译》中编译时没有编译broker,这里需要单独编译。

                                                              同上,先启动Doris的Docker开发镜像容器: 

                                                                docker run -it \
                                                                -v /home/hadoop/.m2:/root/.m2 \
                                                                -v /home/hadoop/opensource/apache-doris-0.15.0-incubating-src/:/root/apache-doris-
                                                                0.15.0-incubating-src/ \
                                                                apache/incubator-doris:build-env-for-0.15.0

                                                                编译:

                                                                  cd /root/apache-doris-0.15.0-incubating-src/fs_brokers/apache_hdfs_broker
                                                                  sh build.sh

                                                                  编译完之后,安装包在宿主机的/home/hadoop/opensource/apache-doris-0.15.0-incubating-src/fs_brokers/apache_hdfs_broker/output
                                                                  下,拷贝output 目录下的相应 Broker 目录到需要部署的所有节点上。建议和 BE 或者 FE 目录保持同级。

                                                                     scp -r /home/hadoop/opensource/apache-doris-0.15.0-incubating-src/fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker
                                                                    hadoop@node01:/home/hadoop/app/apache-doris-0.15.0

                                                                    scp -r /home/hadoop/opensource/apache-doris-0.15.0-incubating-src/fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker
                                                                    hadoop@node02:/home/hadoop/app/apache-doris-0.15.0

                                                                    scp -r /home/hadoop/opensource/apache-doris-0.15.0-incubating-src/fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker
                                                                    hadoop@node03:/home/hadoop/app/apache-doris-0.15.0
                                                                    • 配置broker

                                                                    有必要可以在相应 broker/conf/ 目录下对应的配置文件中,可以修改相应配置,我们这里暂时不做修改。

                                                                    • 启动broker

                                                                    再部署的broker的所有节点上启动broker:

                                                                       /home/hadoop/app/apache-doris-0.15.0/apache_hdfs_broker/bin/start_broker.sh --daemon
                                                                      • 添加broker到集群

                                                                      要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表。

                                                                      连接MySQL客户端:

                                                                        mysql -h node01 -uroot -P 9030

                                                                        添加broker:

                                                                          ALTER SYSTEM ADD BROKER hdfs_broker "node01:8000","node02:8000","node03:8000";

                                                                          hdfs_broker是给broker起得名字,也可以单独添加分别起名字,broker的端口号默认为8000,可以在配置文件里修改。

                                                                          • 查看broker状态

                                                                          可以直接在MySQL Client终端查看broker状态:

                                                                            SHOW PROC "/brokers";

                                                                            也可以通过fe的web ui查看状态。

                                                                            注意:在生产环境中,所有实例都应使用守护进程启动,以保证进程退出后,会被自动拉起,如 Supervisor

                                                                            3.4.7 查看fe的web ui

                                                                            http://node01:8030

                                                                            3.5 扩缩容

                                                                            3.5.1 fe扩缩容

                                                                            3.5.1.1 增加fe节点

                                                                            FE 分为 Leader,Follower 和 Observer 三种角色。默认一个集群,只能有一个 Leader,可以有多个 Follower 和Observer。其中 Leader 和 Follower 组成一个 Paxos 选择组,如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。Observer 同步 Leader 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Leader。

                                                                            第一个启动的 FE 自动成为 Leader。在此基础上,可以添加若⼲干 Follower 和 Observer。

                                                                            1、添加新fe到集群

                                                                            我们准备在node02上启动1个Follower,在node03上启动一个Observer。

                                                                            使用 mysql-client 连接到已启动的 FE,并执行:

                                                                              -- ALTER SYSTEM ADD FOLLOWER "follower_host:edit_log_port";
                                                                              -- ALTER SYSTEM ADD OBSERVER "observer_host:edit_log_port";

                                                                              ALTER SYSTEM ADD FOLLOWER "node02:9010";
                                                                              ALTER SYSTEM ADD OBSERVER "node03:9010";

                                                                              其中 follower_host和observer_host 为 Follower 或 Observer 所在节点 ip,edit_log_port 在其配置文件 fe.conf中。

                                                                              注意:添加的时候注意角色的区别

                                                                              2、配置新fe

                                                                              分发fe到node02和node03节点:

                                                                                 scp -r /home/hadoop/app/apache-doris-0.15.0/fe hadoop@node02:/home/hadoop/app/apache-doris-0.15.0
                                                                                scp -r /home/hadoop/app/apache-doris-0.15.0/fe hadoop@node03:/home/hadoop/app/apache-doris-0.15.0

                                                                                修改配置文件

                                                                                在node02和node03节点:

                                                                                  mkdir /home/hadoop/app/apache-doris-0.15.0/doris-meta

                                                                                  修改配置,主要是meta_dir
                                                                                  priority_networks

                                                                                     #指定元数据路径:
                                                                                    meta_dir = /home/hadoop/app/apache-doris-0.15.0/doris-meta
                                                                                    #修改绑定 ip(每台机器修改成自己的ip)
                                                                                    priority_networks = 192.168.2.36/24

                                                                                    3、启动新fe

                                                                                    第一次启动时,需执行以下命令:

                                                                                       -- ./bin/start_fe.sh --helper leader_fe_host:edit_log_port --daemon
                                                                                      /home/hadoop/app/apache-doris-0.15.0/fe/bin/start_fe.sh --helper node01:9010 --daemon

                                                                                      注意:其中 leader_fe_host
                                                                                      为 Leader 所在节点 ip, edit_log_port 在 Leader 的配置文件 fe.conf 中。--helper
                                                                                      参数仅在 follower 和 observer 第一次启动时才需要。

                                                                                      4、检查状态

                                                                                         SHOW PROC '/frontends';

                                                                                        FE 扩容注意事项:

                                                                                        1. Follower FE(包括 Leader)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。

                                                                                        2. 当 FE 处于高可用部署时(1个 Leader,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。

                                                                                        3. 通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。

                                                                                        4. helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。

                                                                                        3.5.1.2 删除fe节点

                                                                                        使用以下命令删除对应的 FE 节点:

                                                                                           ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

                                                                                          FE 缩容注意事项:

                                                                                          删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数。

                                                                                          删除完记得把对应的服务停掉。

                                                                                          3.5.2 be扩缩容

                                                                                          BE 节点的扩容和缩容过程,不影响当前系统运行以及正在执行的任务,并且不会影响当前系统的性能。数据均衡会自动进行。根据集群现有数据量的大小,集群会在几个小时到1天不等的时间内,恢复到负载均衡的状态。集群负载情况,可以参见 Tablet 负载均衡文档

                                                                                          3.5.2.1 增加be节点

                                                                                          BE 节点的增加方式同 《3.4 集群部署》 一节中的配置和BE的方式,通过 ALTER SYSTEM ADD BACKEND 命令增加BE 节点。

                                                                                          3.5.2.2 删除be节点

                                                                                          删除 BE 节点有两种方式:DROP 和 DECOMMISSION

                                                                                          1、DROP方式(强烈不推荐):
                                                                                             ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";
                                                                                            注意:DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当你使用这个语句时,会有对应的防误操作提示。
                                                                                            2、DECOMMISSION(推荐):
                                                                                              ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";


                                                                                              DECOMMISSION 命令说明:

                                                                                              1. 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。

                                                                                              2. 该命令是一个异步操作。执行后,可以通过 SHOW PROC '/backends';
                                                                                                看到该 BE 节点的 isDecommission
                                                                                                状态为 true。表示该节点正在进行下线。

                                                                                              3. 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。

                                                                                              4. DECOMMISSION 的进度,可以通过 SHOW PROC '/backends'; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。

                                                                                              5. 该操作可以通过: CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
                                                                                                命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡

                                                                                              3.5.3 broker扩缩容

                                                                                              Broker 实例的数量没有硬性要求。通常每台物理机部署一个即可。Broker 的添加和删除可以通过以下命令完成:

                                                                                                ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port";
                                                                                                ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";
                                                                                                ALTER SYSTEM DROP ALL BROKER broker_name;

                                                                                                Broker 是无状态的进程,可以随意启停。当然,停止后,正在其上运行的作业会失败,重试即可。


                                                                                                视频地址 https://www.bilibili.com/video/BV1oB4y1D7Fo/

                                                                                                课件地址:关注本公众号“学习面试”并回复 0116 即可获取课件地址。

                                                                                                课程咨询请


                                                                                                文章转载自学习面试,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                                                评论