基于Doris的日志存储分析平台(Doris安装部署)

  • Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。
  • Doris整体架构如下图所示,Doris 架构非常简单,只有两类进程,这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本。
    • Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
    • Backend(BE),主要负责数据存储、查询计划的执行。
    • 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 端口
      FEarrow_flight_sql_port9040用户 <–> FEFE 上的 Arrow Flight SQL server 端口
      FEedit_log_port9010FE <–> FEFE 上的 bdbje 之间通信用的端口
      FEbroker_ipc_port8000FE --> Broker, BE --> BrokerBroker 上的 thrift server,用于接收请求
    • 开发测试环境为手动部署,生产环境下K8S部署;
    • 当前未使用hadoop,包括Spark,都不放hadoop,看情况吧,先轻量点;
    • 部署Doris时,用的都是root用户,未使用admin;
    • 开发&测试时我们部署了3BE,3FE;
    • TODO:当部署多个 FE 节点时,在多个 FE 之上部署负载均衡层来实现 Doris 的高可用。目前负载均衡有两种方式:ProxySQL 及 Nginx。主要步骤可以完全按照官网给的安装手册进行,写的很详细,完全参照即可:
    • 负载均衡 - Apache Doris
    •  [root@middleware-2 src]# wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.8-bin-x64-noavx2.tar.gz
        --2024-05-09 14:19:03--  https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.8-bin-x64-noavx2.tar.gz
        正在解析主机 apache-doris-releases.oss-accelerate.aliyuncs.com (apache-doris-releases.oss-accelerate.aliyuncs.com)... 47.108.43.33
        正在连接 apache-doris-releases.oss-accelerate.aliyuncs.com (apache-doris-releases.oss-accelerate.aliyuncs.com)|47.108.43.33|:443... 已连接。
        已发出 HTTP 请求,正在等待回应... 200 OK
        长度:2684900152 (2.5G) [application/gzip]
        正在保存至: “apache-doris-2.0.8-bin-x64-noavx2.tar.gz”
      
        100%[==================================================================================================================================================>] 2,684,900,152 74.9MB/s 用时 33s
      
        2024-05-09 14:19:39 (78.2 MB/s) - 已保存 “apache-doris-2.0.8-bin-x64-noavx2.tar.gz” [2684900152/2684900152])
      
        [root@middleware-2 src]# ls
        apache-doris-2.0.8-bin-x64-noavx2.tar.gz  jdk-8u411-linux-x64.tar.gz  kafka-eagle-bin-3.0.1.tar.gz  redis-7.0.11
        apache-zookeeper-3.7.2-bin.tar.gz         kafka_2.12-2.8.2.tgz        nacos-server-2.0.2.tar.gz     redis-7.0.11.tar.gz
        
        [root@middleware-2 src]# tar -zxvf apache-doris-2.0.8-bin-x64-noavx2.tar.gz
      
        [root@middleware-2 src]# mv apache-doris-2.0.8-bin-x64-noavx2 /data/middleware/apache-doris-2.0.8
      
        #数据存储目录
        cd /data/middleware/apache-doris-2.0.8/
        mkdir data
      
        [root@middleware-2 apache-doris-2.0.8]# cd data
      
        [root@middleware-2 data]# mkdir metastorage
        [root@middleware-2 data]# mkdir datastorage
      
        [root@middleware-2 data]# ls
        datastorage  metastorage
        [root@middleware-2 data]# pwd
        /data/middleware/apache-doris-2.0.8/data
      
        # fe.conf
        priority_networks = 192.168.0.0/24  

      Doris & MySQL

    • mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz 解压后不用安装,只用它来连接doris,进行安装时的初始操作。
    • 配置Doris文件 be&fe
    • # fe.conf
        [root@middleware-2 conf]# pwd
        /data/middleware/apache-doris-2.0.8/fe/conf
        [root@middleware-2 conf]# ls
        fe.conf  ldap.conf  log4j2-spring.xml  ssl
        [root@middleware-2 conf]# vi fe.conf
        # 添加配置 实际本机IP地址/掩码长度
        priority_networks = 192.168.2.111/24
        meta_dir=/data/middleware/apache-doris-2.0.8/data/metastorage
        ##############################################
        # be.conf
        cd /data/middleware/apache-doris-2.0.8/be
        # 添加配置
        priority_networks = 192.168.2.111/24
        storage_root_path = /data/middleware/apache-doris-2.0.8/data/datastorage
      
        #storage_root_path配置存储目录,可以用;来指定多个目录,每个目录后可以跟逗号,指定大小默认GB storage_root_path=/opt/module/doris_storage1,10;/opt/module/doris_storage2

    • Doris 采用 MySQL 协议进行通信,用户可通过 MySQL client 或者 MySQL JDBC连接到 Doris 集群。选择 MySQL client 版本时建议采用5.1 之后的版本,因为 5.1 之前不能支持长度超过 16 个字符的用户名。
    • Doris 内置 root 和 admin 用户,密码默认都为空。启动完 Doris 程序之后,可以通过 root 或 admin 用户连接到 Doris 集群。
    •   [root@middlware-1 middleware]# cd mysql-5.7.43-linux-glibc2.12-x86_64/
        [root@middlware-1 mysql-5.7.43-linux-glibc2.12-x86_64]# ls
        bin  docs  include  lib  LICENSE  man  README  share  support-files
        [root@middlware-1 mysql-5.7.43-linux-glibc2.12-x86_64]# cd bin
        [root@middlware-1 bin]# ls
        innochecksum    myisampack         mysqlcheck                  mysqld-debug   mysql_embedded    mysql_secure_installation  mysql_tzinfo_to_sql  resolveip
        lz4_decompress  my_print_defaults  mysql_client_test_embedded  mysqld_multi   mysqlimport       mysqlshow                  mysql_upgrade        resolve_stack_dump
        myisamchk       mysql              mysql_config                mysqld_safe    mysql_install_db  mysqlslap                  mysqlxtest           zlib_decompress
        myisam_ftdump   mysqladmin         mysql_config_editor         mysqldump      mysql_plugin      mysql_ssl_rsa_setup        perror
        myisamlog       mysqlbinlog        mysqld                      mysqldumpslow  mysqlpump         mysqltest_embedded         replace
        [root@middlware-1 bin]# ./mysql -h 192.168.2.156 -P 9030 -uroot
        Welcome to the MySQL monitor.  Commands end with ; or \g.
        Your MySQL connection id is 1
        Server version: 5.7.99 Doris version doris-2.0.8-d083188cdd
      
        Copyright (c) 2000, 2023, Oracle and/or its affiliates.
      
        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.
      
        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
        mysql> SET PASSWORD FOR 'root' = PASSWORD('123456');
        Query OK, 0 rows affected (0.02 sec)
      
        mysql>

      添加那两个FE

    •   #密码登录
        [root@middlware-1 bin]# ./mysql -h 192.168.2.156 -P 9030 -u root -p
      
        # 添加那两个FE
        mysql> ALTER SYSTEM ADD FOLLOWER "192.168.2.184:9010";
        Query OK, 0 rows affected (0.03 sec)
      
        mysql> ALTER SYSTEM ADD FOLLOWER "192.168.2.111:9010";
        Query OK, 0 rows affected (0.01 sec)

      查看FE

    •     mysql> show proc '/frontends';
          +-----------------------------------------+---------------+-------------+----------+-----------+---------+----------+----------+-----------+------+-------+-------------------+---------------------+----------+--------+------------------------+------------------+
          | Name                                    | Host          | EditLogPort | HttpPort | QueryPort | RpcPort | Role     | IsMaster | ClusterId | Join | Alive | ReplayedJournalId | LastHeartbeat       | IsHelper | ErrMsg | Version                | CurrentConnected |
          +-----------------------------------------+---------------+-------------+----------+-----------+---------+----------+----------+-----------+------+-------+-------------------+---------------------+----------+--------+------------------------+------------------+
          | fe_92aa1928_cf39_4c96_9727_db3b20925f5d | 192.168.2.111 | 9010        | 8030     | 9030      | 9020    | FOLLOWER | false    | 150231587 | true | true  | 1371              | 2024-05-09 16:56:42 | true     |        | doris-2.0.8-d083188cdd | No               |
          | fe_95994568_37ff_441b_9701_60d9d00bc748 | 192.168.2.156 | 9010        | 8030     | 9030      | 9020    | FOLLOWER | true     | 150231587 | true | true  | 1372              | 2024-05-09 16:56:42 | true     |        | doris-2.0.8-d083188cdd | Yes              |
          | fe_3c4542f0_4c33_4edd_8981_0d95eabe5ae5 | 192.168.2.184 | 9010        | 8030     | 9030      | 9020    | FOLLOWER | false    | 150231587 | true | true  | 1371              | 2024-05-09 16:56:42 | true     |        | doris-2.0.8-d083188cdd | No               |
          +-----------------------------------------+---------------+-------------+----------+-----------+---------+----------+----------+-----------+------+-------+-------------------+---------------------+----------+--------+------------------------+------------------+
          3 rows in set (0.04 sec)

      添加BE

    •   mysql> ALTER SYSTEM ADD BACKEND "192.168.2.111:9050";
        Query OK, 0 rows affected (0.02 sec)
      
        mysql> ALTER SYSTEM ADD BACKEND "192.168.2.184:9050";
        Query OK, 0 rows affected (0.00 sec)
      
        mysql> ALTER SYSTEM ADD BACKEND "192.168.2.156:9050";
        Query OK, 0 rows affected (0.01 sec)
      

      BE&FE启动

    •   # FE
        # 156作为主节点,以上的配置中156主节点先启动
        [root@middlware-1 bin]# ./start_fe.sh --daemon
        #其他节点 使用 --helper 参数指向 Master FE。
        ./start_fe.sh --helper 192.168.2.156:9010 --daemon
      
        # BE
        [root@middleware-2 bin]# ./start_be.sh --daemon
      
        # 查看FE是否正常 curl http://fe_host:fe_http_port/api/bootstrap
        [root@middleware-2 bin]# curl http://192.168.2.111:8030/api/bootstrap
        {"msg":"success","code":0,"data":{"replayedJournalId":0,"queryPort":0,"rpcPort":0,"version":""},"count":0}[root@middleware-2 bin]#
      
        # 查询BE是否正常 curl http://be_host:webserver_port/api/health
        c[root@middleware-2 bin]# curl http://192.168.2.111:8040/api/health
        {"status": "OK","msg": "To Be Added"}[root@middleware-2 bin]#
      

      BE到此都起来了,查一下看

    •     mysql> show proc '/backends';
          +-----------+---------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------+------------------+--------------------+---------------+---------------+---------+----------------+--------------------+--------------------------+--------+------------------------+-------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------+
          | BackendId | Host          | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime       | LastHeartbeat       | Alive | SystemDecommissioned | TabletNum | DataUsedCapacity | TrashUsedCapcacity | AvailCapacity | TotalCapacity | UsedPct | MaxDiskUsedPct | RemoteUsedCapacity | Tag                      | ErrMsg | Version                | Status                                                                                                                        | HeartbeatFailureCounter | NodeRole |
          +-----------+---------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------+------------------+--------------------+---------------+---------------+---------+----------------+--------------------+--------------------------+--------+------------------------+-------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------+
          | 12387     | 192.168.2.111 | 9050          | 9060   | 8040     | 8060     | 2024-05-09 17:05:48 | 2024-05-09 17:21:24 | true  | false                | 14        | 0.000            | 0.000              | 88.046 GB     | 99.752 GB     | 11.74 % | 11.74 %        | 0.000              | {"location" : "default"} |        | doris-2.0.8-d083188cdd | {"lastSuccessReportTabletsTime":"2024-05-09 17:20:36","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} | 0                       | mix      |
          | 12443     | 192.168.2.156 | 9050          | 9060   | 8040     | 8060     | 2024-05-09 17:05:16 | 2024-05-09 17:21:24 | true  | false                | 14        | 0.000            | 0.000              | 85.591 GB     | 99.752 GB     | 14.20 % | 14.20 %        | 0.000              | {"location" : "default"} |        | doris-2.0.8-d083188cdd | {"lastSuccessReportTabletsTime":"2024-05-09 17:21:09","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} | 0                       | mix      |
          | 12424     | 192.168.2.184 | 9050          | 9060   | 8040     | 8060     | 2024-05-09 17:05:36 | 2024-05-09 17:21:24 | true  | false                | 14        | 0.000            | 0.000              | 88.933 GB     | 99.752 GB     | 10.85 % | 10.85 %        | 0.000              | {"location" : "default"} |        | doris-2.0.8-d083188cdd | {"lastSuccessReportTabletsTime":"2024-05-09 17:21:21","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} | 0                       | mix      |
          +-----------+---------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------+------------------+--------------------+---------------+---------------+---------+----------------+--------------------+--------------------------+--------+------------------------+-------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------+
          3 rows in set (0.00 sec)

    • Doris 内置的 Web UI
    • http://192.168.2.156(111、184都可以):8030/login
    • 使用root及上面改过的密码(123456)打开 Doris 内置的 Web 控制台。
    • 扩容缩容(TODO)
      • Doris可以很方便的扩容和缩容FE、BE、Broker实例。
      • FE 节点的扩容和缩容过程,不影响当前系统运行。
      • 增加FE节点,FE分为Leader,Follower和Observer三种角色。默认一个集群只能有一个Leader,可以有多个Follower和Observer.其中Leader和Follower组成一个Paxos选择组,如果Leader宕机,则剩下的Follower会成为Leader,保证HA。Observer是负责同步Leader数据的不参与选举。如果只部署一个FE,则FE默认就是Leader.
      • 第一个启动的FE自动成为Leader。
    • BE 扩容和缩容及集群脚本管理,暂未实现。
    • 至此,开发和测试环境下就可以正常使用了,看一下UI:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值