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

数据中台实时分析工具:Doris介绍、安装、监控

码奋 2024-07-21
269

Apache Doris 是一个现代的 MPP (Massively Parallel Processing) 分布式 SQL 数据库,旨在实现高效的实时分析和报告。它最初由百度开发,并于2017年捐赠给Apache软件基金会。Doris的主要特性和设计理念使其在大数据实时分析场景中表现出色。


Apache Doris已于2022年6月成功从Apache孵化器毕业,成为Top-Level项目。目前,Apache Doris社区已经聚集了来自不同行业近200家公司的400多名贡献者,活跃贡献者的数量接近每月100人。

1. 架构设计


Doris的架构分为前端 (FE) 和后端 (BE) 两部分
       前端 (FE): 负责接收用户的SQL查询,解析查询计划,并将计划分发到后端节点进行执行。同时,FE也负责管理元数据。后端 (BE): 负责具体的数据存储和查询执行。BE节点可以横向扩展,通过增加节点来提升系统的处理能力。
存储引擎
       列存储格式:Doris 使用列式存储,每一列的数据单独存储,有效地提升了压缩效率和查询速度。列存储格式支持多种压缩算法,如 LZ4、ZSTD 等,可以根据具体数据类型选择最优的压缩方式。分区与分桶:支持对数据进行分区和分桶。分区可以按时间、范围等进行切分,有助于提升查询性能和管理数据生命周期;分桶则是通过哈希算法将数据分布到不同的存储桶中,均衡数据分布和查询负载。
计算引擎
      向量化执行:Doris 采用向量化执行引擎,通过批量处理数据减少函数调用开销,提高 CPU 利用率。向量化执行在处理列存储格式的数据时效果尤为显著。查询优化器:内置了基于成本的查询优化器(CBO),通过分析统计信息和查询成本,生成最优的执行计划。优化器支持多种优化策略,如谓词下推、列剪裁、Join 重排序等。
数据更新和一致性
      实时数据导入:支持实时数据导入,包括微批量导入和流式导入,适合需要实时数据更新的应用场景。数据导入过程中,Doris 保证数据的一致性和高可用性。多版本数据管理:通过多版本数据管理机制(MVCC),支持并发数据读写操作,保证数据的一致性和隔离性。

2. 高可用性和扩展性

      高可用性: 通过多副本机制,Doris确保数据在多个节点上的副本,从而实现高可用性和数据的可靠性。扩展性: Doris的MPP架构使其具有良好的扩展性,能够通过增加更多的BE节点来提升系统的处理能力,适应数据量和查询负载的增长。
Doris主要应用于以下场景:
实时数据分析: 通过高效的流式数据导入和查询优化,Doris能够实现实时数据的快速分析。报表和BI分析: 利用其强大的查询性能和兼容性,Doris能够支持复杂的报表和BI分析需求。数据仓库: 作为一个分布式的SQL数据仓库,Doris适合存储和处理大规模的结构化数据。

安装教程

1. 下载Doris
首先,从Apache Doris(https://doris.apache.org/)的官网或者Apache Doris的GitHub仓库下载最新版本的Doris。
    # 从GitHub下载最新的release包
    wget https://github.com/apache/doris/releases/download/x.y.z/apache-doris-x.y.z-bin.tar.gz


    # 解压下载的包
    tar -zxvf apache-doris-x.y.z-bin.tar.gz
    cd apache-doris-x.y.z-bin
    2. 部署前端(FE)节点
    前端(FE)节点负责接收和解析查询、管理元数据等。通常在集群中至少需要一个FE节点。
    配置FE节点
    在Doris的安装目录中找到fe目录,并编辑配置文件fe.conf:
      cd fe/conf
      vi fe.conf

      在fe.conf中进行必要的配置,例如:

        # 设置FE节点的元数据存储路径
        meta_dir = path/to/fe/meta


        # 设置FE节点的编辑日志路径
        edit_log_port = 9010


        # 设置FE节点的HTTP服务端口
        http_port = 8030


        # 设置FE节点的RPC端口
        rpc_port = 9020

        启动FE节点

          cd ../bin
          ./start_fe.sh --daemon

          初次启动FE节点后,需要初始化Doris集群:

            mysql -h 127.0.0.1 -P 9030 -u root
            # 进入MySQL客户端后,执行以下命令初始化集群
            ALTER SYSTEM ADD FOLLOWER "fe_host:edit_log_port";
            3. 部署后端(BE)节点
            后端(BE)节点负责数据存储和查询执行。在集群中可以有多个BE节点。
            配置BE节点
            在Doris的安装目录中找到be目录,并编辑配置文件be.conf:
              cd be/conf
              vi be.conf

              在be.conf中进行必要的配置,例如:

                # 设置BE节点的数据存储路径
                storage_root_path = path/to/be/storage


                # 设置BE节点的端口
                be_port = 9060
                webserver_port = 8040
                heartbeat_service_port = 9050
                brpc_port = 8060

                启动BE节点

                  cd ../bin
                  ./start_be.sh --daemon

                  启动BE节点后,需要将其添加到Doris集群中:

                    mysql -h fe_host -P 9030 -u root
                    # 进入MySQL客户端后,执行以下命令添加BE节点
                    ALTER SYSTEM ADD BACKEND "be_host:heartbeat_service_port";
                    4. 配置和管理
                    创建数据库和表
                      -- 创建数据库
                      CREATE DATABASE my_database;


                      -- 使用数据库
                      USE my_database;


                      -- 创建表
                      CREATE TABLE my_table (
                      k1 INT,
                      k2 VARCHAR(20),
                      v1 BIGINT SUM DEFAULT '0'
                      )
                      AGGREGATE KEY(k1, k2)
                      DISTRIBUTED BY HASH(k1) BUCKETS 10;
                      导入数据
                      可以通过LOAD命令从本地文件或外部数据源导入数据,例如从CSV文件导入:
                        LOAD DATA INFILE 'path/to/file.csv' INTO TABLE my_table;

                        查询数据

                          -- 执行查询
                          SELECT k1, SUM(v1) FROM my_table GROUP BY k1;
                          5. 监控和管理
                          Doris提供了丰富的监控和管理功能,可以通过HTTP接口和命令行工具进行监控和管理。
                          HTTP接口: FE和BE节点都提供了HTTP接口,可以通过下面地址访问本地端口。
                            http://fe_host:8030和http://be_host:8040
                            命令行工具: 可以使用MySQL客户端连接FE节点,执行Doris的管理命令。

                            监控Doris性能指标的方法和工具

                            1. Doris自带的Web UI
                            Doris提供了FE和BE节点的Web管理界面,可以通过Web UI查看系统的各种性能指标。
                            FE节点Web UI: 通过访问
                              http://fe_host:8030
                              可以进入FE节点的Web界面。
                              BE节点Web UI: 通过访问
                                http://be_host:8040
                                可以进入BE节点的Web界面。
                                在Web UI中,可以查看以下信息:
                                节点状态(Node Status)
                                系统配置(Configuration)
                                查询信息(Query Profile)
                                任务信息(Load Jobs)
                                数据库和表信息(Databases and Tables)

                                2. 使用系统自带的监控命令
                                Doris提供了一些命令,可以在MySQL客户端中运行,以获取系统的状态和性能信息。
                                SHOW PROC: 查看系统的运行状态,如BE节点状态、FE节点状态等。
                                  SHOW PROC '/backends'; SHOW PROC '/frontends';
                                  SHOW VARIABLES: 查看系统配置参数。
                                    SHOW VARIABLES;
                                    SHOW TABLETS: 查看表的分片信息。
                                      SHOW TABLETS FROM my_database.my_table;
                                      SHOW LOAD: 查看数据导入任务的状态。
                                        SHOW LOAD FROM my_database;
                                        EXPLAIN: 分析查询执行计划,找出性能瓶颈。
                                          EXPLAIN SELECT * FROM my_table WHERE id = 1;
                                          3. 集成Prometheus和Grafana
                                          Prometheus是一个开源的监控系统和时序数据库,可以通过Prometheus监控Doris的性能指标。Grafana是一个开源的分析平台,可以通过Grafana展示Prometheus收集的指标数据。
                                          步骤:

                                          1.安装Prometheus和Grafana:
                                          (还请读者自行网上搜索,不然这篇太长了,恭喜发财哈哈哈)

                                          2.配置Doris导出性能指标: Doris支持将性能指标导出为Prometheus格式。在fe.conf和be.conf中配置Prometheus相关参数:
                                            # fe.conf
                                            enable_metric_calculator=true
                                            prometheus_exporter_port=9090


                                            # be.conf
                                            enable_metric_calculator=true
                                            prometheus_exporter_port=9091
                                            3.配置Prometheus采集Doris指标: 在Prometheus的配置文件prometheus.yml中添加Doris的FE和BE节点:
                                              scrape_configs:
                                              - job_name: 'doris_fe'
                                              static_configs:
                                              - targets: ['fe_host:9090']


                                              - job_name: 'doris_be'
                                              static_configs:
                                              - targets: ['be_host:9091']


                                              配置Grafana展示指标: 在Grafana中添加Prometheus数据源,然后创建仪表板来展示Doris的性能指标。可以使用Grafana的查询语言(PromQL)来查询Prometheus中的数据,并根据需要进行可视化展示。

                                              4. 使用集成的监控系统
                                              如果你已经有其他的监控系统,如Zabbix、Nagios等,可以通过自定义脚本或插件来监控Doris的性能指标。
                                              示例(以Zabbix为例):
                                              创建自定义监控脚本:使用Bash或Python脚本,定期从Doris的Web接口或Prometheus中获取性能指标。
                                              配置Zabbix监控项和触发器:在Zabbix中添加自定义监控项和触发器,通过自定义脚本采集的指标来监控Doris的运行状态。

                                              5. 定期检查和维护
                                              除了实时监控,还应定期检查和维护Doris集群,及时处理潜在问题。包括但不限于:
                                              检查FE和BE节点的健康状态。
                                              分析查询执行计划,优化慢查询。
                                              清理过期数据,释放存储空间。
                                              进行集群扩展和负载均衡,确保系统稳定性。


                                              往期推荐
                                              01

                                              基础类数据标准是建立数据标准规范的基石

                                              02

                                              数据中台:数据加工与人工智能(AI)的结合

                                              03

                                              数据标准化:数据分类方法

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

                                              评论