Apache Doris:监控与运维及系统调优

ops/2024/11/19 9:05:12/

引言

在前几篇文章中,我们已经介绍了 Apache Doris 的基本概念、安装配置、性能优化、数据建模最佳实践、以及高级数据导入导出功能和外部系统集成。本文将进一步探讨 Doris 的监控与运维、高级查询优化技巧,以及如何进行系统调优。通过本文,读者将能够更好地管理和维护 Doris 系统,确保其稳定性和高性能。

监控与运维

1. 监控指标

Doris 提供了丰富的监控指标,可以帮助管理员监控系统的健康状况和性能。

常见监控指标
  • 集群状态:包括 FE 和 BE 节点的在线状态、负载情况等。
  • 查询性能:包括查询的响应时间、QPS(每秒查询次数)等。
  • 资源使用:包括 CPU、内存、磁盘使用率等。
  • 数据导入导出:包括导入导出任务的状态、进度等。
实践示例

使用 SHOW PROC 命令查看集群状态和监控指标:

-- 查看 FE 节点状态
SHOW PROC '/frontends';-- 查看 BE 节点状态
SHOW PROC '/backends';-- 查看查询性能
SHOW PROC '/queries';-- 查看资源使用情况
SHOW PROC '/sys/resource';

2. 日志管理

合理的日志管理可以帮助管理员快速定位和解决问题。

日志配置

Doris 的日志配置文件位于 conf/log4j2.properties,可以根据需要调整日志级别和输出路径。

实践示例

# 设置日志级别
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n# 设置日志输出路径
appender.file.type = File
appender.file.name = file
appender.file.fileName = ${sys:log.dir}/doris.log
appender.file.layout.type = PatternLayout
appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n# 设置根日志级别
rootLogger.appenderRef.console.ref = console
rootLogger.appenderRef.file.ref = file
rootLogger.level = INFO

3. 告警通知

及时的告警通知可以帮助管理员快速响应系统异常。

实践示例

使用 Prometheus 和 Alertmanager 设置告警通知:

  1. 安装 Prometheus 和 Alertmanager

    # 安装 Prometheus
    wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
    tar xvfz prometheus-2.30.3.linux-amd64.tar.gz
    cd prometheus-2.30.3.linux-amd64# 安装 Alertmanager
    wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
    tar xvfz alertmanager-0.23.0.linux-amd64.tar.gz
    cd alertmanager-0.23.0.linux-amd64
    
  2. 配置 Prometheus

    编辑 prometheus.yml 文件,添加 Doris 的监控目标:

    scrape_configs:- job_name: 'doris'static_configs:- targets: ['<fe_host>:9090']
    
  3. 配置 Alertmanager

    编辑 alertmanager.yml 文件,配置告警通知规则:

    global:smtp_smarthost: 'smtp.example.com:587'smtp_from: 'alertmanager@example.com'smtp_auth_username: 'alertmanager'smtp_auth_password: 'password'route:receiver: 'team-email'receivers:- name: 'team-email'email_configs:- to: 'team@example.com'
    
  4. 启动 Prometheus 和 Alertmanager

    ./prometheus --config.file=prometheus.yml
    ./alertmanager --config.file=alertmanager.yml
    

高级查询优化技巧

1. 查询计划优化

通过分析查询计划,可以发现潜在的性能瓶颈并进行优化。

实践示例

使用 EXPLAIN 命令查看查询计划:

EXPLAIN SELECT * FROM large_table WHERE k1 > 1000;

2. 索引覆盖

索引覆盖是指查询的所有列都在索引中,这样可以避免回表查询,提高查询性能。

实践示例

假设我们有一个用户表 users,经常需要查询用户的姓名和年龄。

CREATE TABLE users (user_id INT,name VARCHAR(255),age INT,email VARCHAR(255)
) ENGINE=OLAP DUPLICATE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10
PROPERTIES ("replication_num" = "1");-- 创建索引覆盖的二级索引
ALTER TABLE users ADD INDEX idx_name_age (name, age);

3. 并行查询

Doris 支持并行查询,通过增加并行度可以显著提高查询性能。

实践示例

增加并行度:

SET parallel_exec_instance_num = 10;

4. 缓存机制

利用 Doris 的缓存机制可以减少磁盘 I/O,提高查询速度。

实践示例

开启查询缓存:

SET enable_query_cache = true;

5. 预聚合

预聚合可以显著提高查询性能,特别是在需要频繁进行聚合操作的场景中。

实践示例

假设我们需要频繁统计每天各个类别的销售数量,可以创建一个预聚合表 pre_aggregated_sales

CREATE TABLE pre_aggregated_sales (category_id INT,ts DATE,sales_count BIGINT SUM
) ENGINE=OLAP AGGREGATE KEY(category_id, ts)
DISTRIBUTED BY HASH(category_id) BUCKETS 10
PROPERTIES ("replication_num" = "1");-- 插入预聚合数据
INSERT INTO pre_aggregated_sales
SELECT category_id, DATE(ts), COUNT(*) AS sales_count
FROM user_behavior
GROUP BY category_id, DATE(ts);

系统调优

1. 内存调优

合理的内存配置可以提高系统的整体性能。

实践示例

修改 BE 节点的内存配置:

# 编辑 be.conf
max_memory_limit = 32GB

2. CPU 调优

通过调整 CPU 调度策略,可以提高系统的并发处理能力。

实践示例

修改 BE 节点的 CPU 配置:

# 编辑 be.conf
cpu_scheduler = "fair"

3. 磁盘调优

合理的磁盘配置可以提高数据读写速度。

实践示例

修改 BE 节点的磁盘配置:

# 编辑 be.conf
storage_root_path = "/data1/doris,/data2/doris"

4. 网络调优

通过优化网络配置,可以提高数据传输效率。

实践示例

修改 FE 节点的网络配置:

# 编辑 fe.conf
http_port = 8030

5. 数据倾斜优化

通过合理的数据分布策略,可以避免数据倾斜,提高查询性能。

实践示例

调整 Bucket 数和分区策略:

CREATE TABLE user_behavior (user_id INT,item_id INT,category_id INT,behavior STRING,ts TIMESTAMP
) ENGINE=OLAP
PARTITION BY RANGE (ts)
(PARTITION p1 VALUES LESS THAN ('2024-01-01'),PARTITION p2 VALUES LESS THAN ('2024-02-01'))
DISTRIBUTED BY HASH(user_id) BUCKETS 10
PROPERTIES ("replication_num" = "1");

结论

本文深入探讨了 Apache Doris 的监控与运维、高级查询优化技巧,以及如何进行系统调优。通过本文,读者将能够更好地管理和维护 Doris 系统,确保其稳定性和高性能。


http://www.ppmy.cn/ops/134915.html

相关文章

2.3 物理层设备

目录 中继器 集线器 冲突域 集线器、中继器的一些特性 集线器、中继器不能“无限串联” 集线器连接的网络&#xff0c;物理上是星形拓扑&#xff0c;逻辑上是总线型拓扑 集线器连接的各网段“共享带宽” 1、中继器 中继器只有两个端口。通过一个端口接收信号&#xff0c;…

游戏引擎学习第15天

视频参考:https://www.bilibili.com/video/BV1mbUBY7E24 关于游戏中文件输入输出&#xff08;IO&#xff09;操作的讨论。主要分为两类&#xff1a; 只读资产的加载 这部分主要涉及游戏中用于展示和运行的只读资源&#xff0c;例如音乐、音效、美术资源&#xff08;如 3D 模型和…

gitlab和jenkins连接

一&#xff1a;jenkins 配置 安装gitlab插件 生成密钥 id_rsa 要上传到jenkins&#xff0c;id_rsa.pub要上传到gitlab cat /root/.ssh/id_rsa 复制查看的内容 可以看到已经成功创建出来了对于gitlab的认证凭据 二&#xff1a;配置gitlab cat /root/.ssh/id_rsa.pub 复制查…

Mac解压包安装MongoDB8并设置launchd自启动

记录一下在mac上安装mongodb8过程&#xff0c;本机是M3芯片所以下载m芯片的安装包&#xff0c;intel芯片的类似操作。 首先下载安装程序包。 # M芯片下载地址 https://fastdl.mongodb.org/osx/mongodb-macos-arm64-8.0.3.tgz # intel芯片下载地址 https://fastdl.mongodb.org…

设计模式之装饰模式

动机 在某些情况下&#xff0c;我们可能会“过度地使用继承来扩展对象的功能”&#xff0c;由于继承为类型引入的静态特质&#xff0c;使得这种扩展方式缺乏灵活性&#xff1b;并且随着子类的增多&#xff08;扩展功能的增多&#xff09;&#xff0c;各种子类的组合&#xff0…

wsl配置ubuntu22.04,并配置docker

wsl配置ubuntu22.04&#xff0c;并配置docker 文章目录 wsl配置ubuntu22.04&#xff0c;并配置docker一、在Windows上安装Linux子系统前提条件安装步骤 二、wsl安装系统到其他盘①查看wsl运行状态&#xff0c;将其保持在关闭状态②导出当前Linux的镜像③注销之前的系统并检查④…

STM32设计防丢防摔智能行李箱

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展&#xff0c;嵌入式系统、物联网技术、智能设备…

代码随想录算法训练营Day17 | 654.最大二叉树 、617.合并二叉树 、700.二叉搜索树中的搜索、98.验证二叉搜索树

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 654.最大二叉树思路与重点 617.合并二叉树思路与重点 700.二叉搜索树中的搜索思路与重点 98.验证二叉搜索树思路与重点 654.最大二叉树 题目链接&#xff1a;654. …