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

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

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/confvi 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/confvi be.conf

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

# 设置BE节点的数据存储路径
storage_root_path = /path/to/be/storage
# 设置BE节点的端口
be_port = 9060
webserver_port = 8040
eartbeat_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(k1BUCKETS 10;

导入数据可以通过LOAD命令从本地文件或外部数据源导入数据,例如从CSV文件导入:

LOAD DATA INFILE 'path/to/file.csv' INTO TABLE my_table;

查询数据

-- 执行查询
SELECT k1SUM(v1FROM 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 UIDoris提供了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和GrafanaPrometheus是一个开源的监控系统和时序数据库,可以通过Prometheus监控Doris的性能指标。Grafana是一个开源的分析平台,可以通过Grafana展示Prometheus收集的指标数据。步骤:
      1.安装Prometheus和Grafana:(还请读者自行网上搜索,不然这篇太长了,恭喜发财哈哈哈)
      2.配置Doris导出性能指标: Doris支持将性能指标导出为Prometheus格式。在fe.conf和be.conf中配置Prometheus相关参数:

      # fe.confenable_metric_calculator=trueprometheus_exporter_port=9090
      # be.confenable_metric_calculator=trueprometheus_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节点的健康状态。分析查询执行计划,优化慢查询。清理过期数据,释放存储空间。进行集群扩展和负载均衡,确保系统稳定性。

      0 0 投票数
      文章评分
      订阅评论
      提醒

      0 评论
      内联反馈
      查看所有评论
      0
      希望看到您的想法,请您发表评论x

      了解 码奋 的更多信息

      立即订阅以继续阅读并访问完整档案。

      继续阅读