1.doris简介

发布时间:2024年01月08日

doris概述

Apache Doris 是现代化的 MPP(Massively Parallel Processing 大规模并行处理)框架分析性数据库,有效支持实时数据分析,分布式架构简单,易于维护,支持10PB级别的超大数据集

image-20240108094545239

Doris架构

FE (Frontend) BE(Backend),不依赖其他组件方便扩展,FE BE都可以线性拓展

  • FE : 存储、维护集群元数据;负责接收、解析查询请求,规划查询计划,调度查询执行
  1. Leader 和 Follower:主要是用来达到元数据的高可用
  2. Observer:用来扩展查询节点,同时起到元数据备份的作用。集群压力非常大的情况下,需要去扩展整个查询的能力,那么可以加 observer 的节点。observer 不参与任何的写入,只参与读取
  • BE:负责物理数据的存储和计算,根据FE生成的查询计划进行分布式查询。BE保证数据可靠性,可以动态创建多个副本
  • MySQL Client: 支持ODBC/JDBC和MySQL客户端都可以访问FE
  • Broker:独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力,包括 HDFS,S3,BOS

安装部署

参考官网https://doris.apache.org/zh-CN/docs/get-starting/quick-start/

部署FE
  1. cd apache-doris-x.x.x/fe

  2. 修改conf/fe.conf 修改priority_networksmeta_dir(默认是在你的Doris FE 安装目录下的 doris-meta) 分别表示绑定的IP网段和元数据存放目录

    priority_networks=172.23.16.0/24
    meta_dir=/path/your/doris-meta
    
  3. 启动./bin/start_fe.sh --daemon

  4. 查看运行状态 curl http://127.0.0.1:8030/api/bootstrap 如果返回结果中带有 "msg":"success"表示成功

  5. 也可以访问FE WEB页面 http://fe_ip:8300

  6. 通过MySQL客户端连接FE 账号root 密码默认为空

    MySQL [(none)]> show frontends \G;
    *************************** 1. row ***************************
                 Name: fe_26e5b2c1_053a_46ed_91eb_e1b1b3f8c4c8
                 Host: 192.168.150.128
          EditLogPort: 9010
             HttpPort: 8030
            QueryPort: 9030
              RpcPort: 9020
                 Role: FOLLOWER
             IsMaster: true
            ClusterId: 1026807980
                 Join: true
                Alive: true
    ReplayedJournalId: 1763
        LastHeartbeat: 2024-01-08 10:10:32
             IsHelper: true
               ErrMsg: 
              Version: doris-2.0.3-rc06-37d31a5
     CurrentConnected: Yes
    1 row in set (0.06 sec)
    
部署BE
  1. 修改Linux最大打开文件数

  2. 修改配置 priority_networks=172.23.16.0/24 和 BE存储路径 storage_root_path=/home/disk1/doris.HDD,5 格式为 目录,限制大小G为单位,HDD/SSD【需要自己创建目录】

    1. storage_root_path配置可配置多个,多个路径之间使用英文状态的分号;
    2. /home/disk1/doris.HDD,50,表示存储限制为 50GB,HDD
    3. /home/disk2/doris.SSD,10,存储限制为 10GB,SSD
  3. 启动BE ./bin/start_be.sh --daemon

  4. 在FE中 将BE添加入doris集群 heartbeat_service_port默认9050

    ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
    
  5. 查看BE状态

    MySQL [(none)]> show backends\G;
    *************************** 1. row ***************************
                  BackendId: 10894
                       Host: 192.168.150.128
              HeartbeatPort: 9050
                     BePort: 9060
                   HttpPort: 8040
                   BrpcPort: 8060
              LastStartTime: 2024-01-08 10:24:42
              LastHeartbeat: 2024-01-08 10:26:47
                      Alive: true
       SystemDecommissioned: false
                  TabletNum: 14
           DataUsedCapacity: 0.000 
         TrashUsedCapcacity: 0.000 
              AvailCapacity: 16.519 GB
              TotalCapacity: 25.983 GB
                    UsedPct: 36.42 %
             MaxDiskUsedPct: 36.42 %
         RemoteUsedCapacity: 0.000 
                        Tag: {"location" : "default"}
                     ErrMsg: 
                    Version: doris-2.0.3-rc06-37d31a5
                     Status: {"lastSuccessReportTabletsTime":"2024-01-08 10:25:54","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
    HeartbeatFailureCounter: 0
                   NodeRole: mix
    1 row in set (0.01 sec)
    

Broker部署【可选】

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

  1. cd /opt/doris/apache-doris-2.0.3-bin-x64/extensions/apache_hdfs_broker

  2. 启动./bin/start_broker.sh --daemon

  3. FE中添加broker

    # ALTER SYSTEM ADD BROKER broker_name 'broker_ip:broker_port【默认8000】'
    ALTER SYSTEM ADD BROKER broker1 "192.168.150.128:8000";
    
  4. 查看broker状态SHOW PROC “/brokers”;

    MySQL [(none)]> SHOW PROC "/brokers";
    +---------+-----------------+------+-------+---------------------+---------------------+--------+
    | Name    | Host            | Port | Alive | LastStartTime       | LastUpdateTime      | ErrMsg |
    +---------+-----------------+------+-------+---------------------+---------------------+--------+
    | broker1 | 192.168.150.128 | 8000 | true  | 2024-01-08 10:48:01 | 2024-01-08 10:48:41 |        |
    +---------+-----------------+------+-------+---------------------+---------------------+--------+
    1 row in set (0.02 sec)
    

扩容与缩容

参考官网https://doris.apache.org/zh-CN/docs/admin-manual/cluster-management/elastic-expansion

FE

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

配置及启动 Follower 或 Observer

这里 Follower 和 Observer 的配置同 Master 的配置。首先第一次启动时,需执行以下命令:

# --helper 参数仅在 follower 和 observer 第一次启动时才需要
# edit_log_port 默认9010
./bin/start_fe.sh --helper leader_fe_host:edit_log_port --daemon
ALTER SYSTEM ADD FOLLOWER "follower_host:edit_log_port";
ALTER SYSTEM ADD OBSERVER "observer_host:edit_log_port";

查看 Follower 或 Observer 运行状态。使用 mysql-client 连接到任一已启动的 FE,并执行:SHOW PROC ‘/frontends’; 可以查看当前已加入集群的 FE 及其对应角色

FE 扩容注意事项:

  1. Follower FE(包括 Master)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。
  2. 当 FE 处于高可用部署时(1个 Master,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。
  3. 通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。
  4. helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。

删除FE节点

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

FE 缩容注意事项:

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

BE的扩容与缩容

BE部署方式同之前一样,通过 ALTER SYSTEM ADD BACKEND 命令增加 BE 节点

删除BE

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

ALTER SYSTEM DROP BACKEND “be_host:be_heartbeat_service_port”;

注意:DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!所以我们强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当你使用这个语句时,会有对应的防误操作提示。

ALTER SYSTEM DECOMMISSION BACKEND “be_host:be_heartbeat_service_port”;

DECOMMISSION 命令说明:

  1. 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
  2. 该命令是一个异步操作。执行后,可以通过 SHOW PROC '/backends'; 看到该 BE 节点的 SystemDecommissioned 状态为 true。表示该节点正在进行下线。
  3. 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 SystemDecommissioned 为 true 的状态。
  4. DECOMMISSION 的进度,可以通过 SHOW PROC '/backends'; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。
  5. 该操作可以通过:
    CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
    命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡
文章来源:https://blog.csdn.net/woshiwjma956/article/details/135453064
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。