Apache Doris 详细教程(三)

news2025/2/27 13:17:04

7、监控和报警

Doris 可以使用 Prometheus 和 Grafana 进行监控和采集,官网下载最新版即可。

Prometheus 官网下载:https://prometheus.io/download/

Grafana 官网下载:https://grafana.com/grafana/download

Doris 的监控数据通过 FE 和 BE 的 http 接口向外暴露。监控数据以 key-value 的文本形式对外展现。每个 key 还可能有不同的 Label 加以区分。当用户搭建好 Doris 后,可以在浏览器,通过以下接口访问监控数据.

Frontend: fe_host:fe_http_port/metrics,如 http://zuomm01:8030/metrics

Backend: be_host:be_web_server_port/metrics,如 http://zuomm01:8040/metrics

整个监控架构如下图

在这里插入图片描述

7.1、prometheus

1、上传 prometheus-2.26.0.linux-amd64.tar.gz,并进行解压

 tar -zxvf prometheus-2.26.0.linux-amd64.tar.gz 

2、配置 promethues.yml

配置两个 targets 分别配置 FE 和 BE,并且定义 labels 和 groups 指定组。如果有多个集群则再加 -job_name 标签,进行相同配置

vi prometheus.yml 
scrape_configs: 
  - job_name: 'prometheus_doris'
    static_configs:
    - targets: ['zuomm01:8030','zuomm02:8030','zuomm03:8030']
      labels:
           group: fe
    - targets: ['zuomm01:8040','zuomm02:8040','zuomm03:8040']
      labels:
           group: be

3、启动 prometheus

nohup /opt/app/prometheus-2.26.0.linux-amd64/prometheus --web.listen-address="0.0.0.0:8181" & 

该命令将后台运行 Prometheus,并指定其 web 端口为 8181。启动后,即开始采集数据,并将数据存放在 data 目录中。

4、访问

http://zuomm01:8181

点击导航栏中,Status -> Targets,可以看到所有分组 Job 的监控主机节点。正常情况下,所有节点都应为 UP,表示数据采集正常。点击某一个 Endpoint,即可看到当前的监控数值。

7.2、grafana

1、上传 grafana-7.5.2.linux-amd64.tar.gz,并进行解压

tar -zxvf grafana-7.5.2.linux-amd64.tar.gz 

2、配置 conf/defaults.ini

vi defaults.ini
http_addr = zuomm01
http_port = 8182

3、启动

nohup /opt/app/grafana-7.5.2/bin/grafana-server &

通过浏览器访问http://zuomm01:8182,配置数据源 Prometheus 账号密码都是 admin

在这里插入图片描述
在这里插入图片描述
添加数据源:在齿轮那边

在这里插入图片描述
添加普罗米修斯:

在这里插入图片描述
添加 dashboard

模板下载地址:https://grafana.com/grafana/dashboards/9734/revisions

上传准备好的 doris-overview_rev4.json

找到manager

在这里插入图片描述
导入下载得doris模板

在这里插入图片描述
在这里插入图片描述

8、备份(Backup)和恢复(Restore)

Doris 支持将当前数据以文件的形式,通过 broker 备份到远端存储系统中。之后可以通过恢复命令,从远端存储系统中将数据恢复到任意 Doris 集群。通过这个功能,Doris支持将数据定期的进行快照备份。也可以通过这个功能,在不同集群间进行数据迁移

8.1、备份原理

备份操作是将指定表或分区的数据,直接以 Doris 存储的文件的形式,上传到远端仓库中进行存储。当用户提交 Backup 请求后,系统内部会做如下操作:

在这里插入图片描述
1、快照及快照上传

快照阶段会对指定的表或分区数据文件进行快照。之后,备份都是对快照进行操作。在快照之后,对表进行的更改、导入等操作都不再影响备份的结果。快照只是对当前数据文件产生一个硬链,耗时很少。快照完成后,会开始对这些快照文件进行逐一上传。快照上传由各个 Backend 并发完成。

2、元数据准备及上传
数据文件快照上传完成后,Frontend 会首先将对应元数据写成本地文件,然后通过broker 将本地元数据文件上传到远端仓库。完成最终备份作业。

8.2、恢复(Restore)原理

恢复操作需要指定一个远端仓库中已存在的备份数据,然后将这个备份的内容恢复到本地集群中。当用户提交 Restore 请求后,系统内部会做如下操作:
在这里插入图片描述
1、在本地创建对应的元数据
这一步首先会在本地集群中,创建恢复对应的表分区等结构。创建完成后,该表可见,但是不可访问。

2、本地 snapshot
这一步是将上一步创建的表做一个快照。这其实是一个空快照(因为刚创建的表是没有数据的),其目的主要是在 Backend 上产生对应的快照目录,用于之后接收从远端仓库下载的快照文件。

3、下载快照
远端仓库中的快照文件,会被下载到对应的上一步生成的快照目录中。这一步由各个Backend 并发完成。

4、生效快照
快照下载完成后,我们要将各个快照映射为当前本地表的元数据。然后重新加载这些快照,使之生效,完成最终的恢复作业。

重点说明

1、备份恢复相关的操作目前只允许拥有 ADMIN 权限的用户执行。
2、一个 Database 内,只允许有一个正在执行的备份或恢复作业。
3、备份和恢复都支持最小分区(Partition)级别的操作,当表的数据量很大时,建议按分区分别执行,以降低失败重试的代价。

8.3、备份示例

1、创建一个远端仓库路径

-- 1.启动hdfs
-- 2.启动broker

CREATE REPOSITORY `hdfs_test_backup`  -- 远端仓库的名字
WITH BROKER `broker_name` 
ON LOCATION "hdfs://linux01:8020/tmp/doris_backup"  -- 存储的路径
PROPERTIES ( 
 "username" = "root", 
 "password" = "" 
) ;

2、执行备份

BACKUP SNAPSHOT [db_name].{snapshot_name} 
TO `repository_name` 
ON ( -- 表里面的哪些数据 
 `table_name` [PARTITION (`p1`, ...)], 
 ... 
) 
PROPERTIES ("key"="value", ...);

3、查看备份任务

SHOW BACKUP from test \G;

mysql> SHOW BACKUP from test \G;
*************************** 1. row ***************************
               JobId: 13300
        SnapshotName: event_info_log_snapshot
              DbName: test
               State: FINISHED
          BackupObjs: [default_cluster:test.event_info_log]
          CreateTime: 2022-11-27 21:29:56
SnapshotFinishedTime: 2022-11-27 21:30:00
  UploadFinishedTime: 2022-11-27 21:30:06
        FinishedTime: 2022-11-27 21:30:13
     UnfinishedTasks: 
            Progress: 
          TaskErrMsg: 
              Status: [OK]
             Timeout: 86400
1 row in set (0.02 sec)

4、查看远端仓库镜像

SHOW SNAPSHOT ON `repo_name` 
 [WHERE SNAPSHOT = "snapshot" [AND TIMESTAMP =  
"backup_timestamp"]]; 


mysql> SHOW SNAPSHOT ON hdfs_test_backup;
+-------------------------+---------------------+--------+
| Snapshot                | Timestamp           | Status |
+-------------------------+---------------------+--------+
| event_info_log_snapshot | 2022-11-27-21-29-56 | OK     |
+-------------------------+---------------------+--------+

5、取消备份

CANCEL BACKUP FROM test; 

8.4、恢复示例

将之前通过 BACKUP 命令备份的数据,恢复到指定数据库下。该命令为异步操作。提交成功后,需通过 SHOW RESTORE 命令查看进度。

  • 仅支持恢复 OLAP 类型的表
  • 支持一次恢复多张表,这个需要和你对应的备份里的表一致

说明:

1、同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。

2、ON 子句中标识需要恢复的表和分区。如果不指定分区,则默认恢复该表的所有分区。所指定的表和分区必须已存在于仓库备份中

3、可以通过 AS 语句将仓库中备份的表名恢复为新的表。但新表名不能已存在于数据库中。分区名称不能修改。

4、可以将仓库中备份的表恢复替换数据库中已有的同名表,但须保证两张表的表结构完全一致。表结构包括:表名、列、分区、Rollup 等等。

5、可以指定恢复表的部分分区,系统会检查分区 Range 或者 List 是否能够匹配。

6、PROPERTIES 目前支持以下属性:

  • “backup_timestamp” = “2018-05-04-16-45-08”:指定了恢复对应备份的哪个时间版本,必填。该信息可以通过 SHOW SNAPSHOT ON 仓库名称; 语句获得。
  • “replication_num” = “3”:指定恢复的表或分区的副本数。默认为 3。若恢复已存在的表或分区,则副本数必须和已存在表或分区的副本数相同。同时,必须有足够的host 容纳多个副本。
  • “timeout” = “3600”:任务超时时间,默认为一天。单位秒。

从 example_repo 中恢复备份 snapshot_1 中的表 backup_tbl 到数据库 example_db1,时间版本为 “2021-05-04-16-45-08”。恢复为 1 个副本:

-- 创建表:
create table event_info
(
user_id varchar(20),
event_id varchar(20),
event_action varchar(20),
event_time datetime
)
DUPLICATE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 1;


-- 指定哪个数据库里面的哪一个快招表的名字
RESTORE SNAPSHOT test.event_info_log_snapshot
-- 从哪个仓库中的哪一个快照中
FROM `hdfs_test_backup` -- 仓库名字
ON ( `event_info_log` )  -- 对应需要的那一张表
PROPERTIES 
( 
-- 指定时间版本
 "backup_timestamp"='2022-11-27-21-29-56'
); 

查看恢复任务

mysql> SHOW RESTORE from test \G;
*************************** 1. row ***************************
                        JobId: 13316
                        Label: event_info_log_snapshot
                    Timestamp: 2022-11-27-21-29-56
                       DbName: default_cluster:test
                        State: FINISHED
                    AllowLoad: false
               ReplicationNum: 3
            ReplicaAllocation: tag.location.default: 3
               ReserveReplica: false
ReserveDynamicPartitionEnable: false
                  RestoreObjs: {
  "name": "event_info_log_snapshot",
  "database": "test",
  "backup_time": 1669555796781,
  "content": "ALL",
  "olap_table_list": [
    {
      "name": "event_info_log",
      "partition_names": [
        "event_info_log"
      ]
    }
  ],
  "view_list": [],
  "odbc_table_list": [],
  "odbc_resource_list": []
}
                   CreateTime: 2022-11-27 21:55:27
             MetaPreparedTime: 2022-11-27 21:55:28
         SnapshotFinishedTime: 2022-11-27 21:55:31
         DownloadFinishedTime: 2022-11-27 21:55:37
                 FinishedTime: 2022-11-27 21:55:43
              UnfinishedTasks: 
                     Progress: 
                   TaskErrMsg: 
                       Status: [OK]
                      Timeout: 86400
1 row in set (0.01 sec)

取消恢复

CANCEL RESTORE FROM db_name;

8.5、删除远端仓库

DROP REPOSITORY `repo_name`;  

删除仓库,仅仅是删除该仓库在 Doris 中的映射,不会删除实际的仓库数据。删除后,可以再次通过指定相同的 broker 和 LOCATION 映射到该仓库。

原文:https://mp.weixin.qq.com/s/C9P8Zoyw6MdTt9BNEcL0MA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1281619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

排序算法介绍(四)快速排序

0. 简介 快速排序(Quick Sort)是一种高效的排序算法,采用了分治的思想。它选择一个基准元素,通过一趟排序将待排序序列分割成独立的两部分,其中一部分的所有元素都比基准元素小,另一部分的所有元素都比基准…

C++-类和对象

目录 一.C语言和C的区别 二.类的引入 三.类的定义 1.类的定义 2.类的成员方法的两种定义方式: 3.类的成员变量的定义 四.类的访问限定符及封装 1.访问限定符 五.面向对象的三大特征 1.面向对象的三大特征分别是什么 2.封装 六.类的作用域 七.创建类对象 1.类…

【csdn默认使用操作详解】

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

国际语音通知系统有哪些优点?国际语音通知系统有哪些应用场景?

国际语音通知是一种全球性的通信工具,它通过语音方式向用户发送各种重要信息和提示。无论是快递到货的取件提醒、机场航班的延误通知,还是银行账户的余额提醒,国际语音通知都能准确、迅速地将信息传达给用户。 三、国际语音通知系统有哪些优…

qnx修改tcp和udp缓冲区默认大小

拷贝/home/test/qnx/qos223/target/qnx7/aarch64le/sbin/sysctl进系统中 https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.utilities/topic/s/sysctl.html kern.sbmax 默认262144,这个限制住了发送、接收缓冲器大小 ./sysctl -w kern.sbmax10000…

51单片机应用从零开始(十)·指针

指针 C语言指针是一种保存变量地址的数据类型。它可以让程序直接访问内存中的数据,而不需要通过变量名来访问。指针变量存储的是一个地址,这个地址指向内存中的某个位置,该位置存储了一个值。 在C语言中,可以使用&运算符取得一…

Siemens-NXUG二次开发-Java开发环境配置[20231203]

Siemens-NXUG二次开发-Java开发环境配置[20231203] 1.NX/UG Java API官方开发文档2.安装Java83.安装jetbrain idea3.windows系统环境变量配置4.使用idea创建项目5.NXOpen Java代码生效流程6.API体系简述6.代码示例 1.NX/UG Java API官方开发文档 西门子NX/UG Java api开发文档…

严蔚敏数据结构题集 p18(2.25——2.30)(c语言代码实现)

目录 2.25假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。 2.26要求同2.25题。是对单链表编写求C的算法 2.…

03-IDEA集成Git,初始化本地库,添加远程仓库,提交,拉取,推送,分支的快捷操作

IDEA集成Git 创建Git忽略文件 不同的IDE开发工具有不同的特点文件,这些文件与项目的实际功能无关且不参与服务器上的部署运行, 把它们忽略掉能够屏蔽之间的差异 局部忽略配置文件: 在本地仓库的根目录即项目根目录下直接创建.gitignore文件, 以文件后缀或目录名的方式忽略指定…

CnosDB FDW:打通一扇通往PostgreSQL世界的大门

本文档提供了下载、安装和使用 CnosDB FDW 的简要说明。请根据您的实际需求和环境对文档进行调整。 概述 CnosDB FDW 是一个用于在 PostgreSQL 数据库中访问 CnosDB 数据库的外部数据包装器(Foreign Data Wrapper)。它提供了在 PostgreSQL 中查询 CnosD…

并发编程2:Java 加锁的原理和JVM对锁的优化

为什么要加锁 在多进程的环境下,如果一个资源被多个进程共享,那么对资源的使用往往会表现的随机和无序,这显然是不行的。例如多个线程同时对控制台输出,每个线程都输出的是完整的句子但是多个线程同时同时输出,则输出…

sd_webui的实用插件,prompt/lama/human matting/...,持续开源更新!!

热烈欢迎大家在git上star!!!冲鸭!!! 1.prompt优化插件 GitHub - leeguandong/sd_webui_beautifulprompt: beautifulprompt extension performs stable diffusion automatic prompt engineering on a bro…

博途PLC数组指针应用(SCL)

CODESYS数组类型变量使用介绍 https://rxxw-control.blog.csdn.net/article/details/131375218https://rxxw-control.blog.csdn.net/article/details/131375218 博途PLC数组类型变量使用介绍还可以查看下面文章博客: https://rxxw-control.blog.csdn.net/article/details/1…

通义灵码简单使用例子

首先我们需要了解到通义灵码的能力: 行/函数级实时续写: 当我们在 idea进行代码编写时(确认开启了自动云端生成的模式),通义灵码会根据当前代码文件及相关代码文件的上下文,自动为你生成代码建议。你可以不用,也可以t…

Android把宽高均小于给定值的Bitmap放大到给定值,Kotlin

Android把宽高均小于给定值的Bitmap放大到给定值,Kotlin 假设拉伸放大到SIZE2048 fun scaleSize(image: Bitmap): Bitmap {val w image.widthval h image.heightvar newW: Intvar newH: Intif (w > h) {newW SIZEnewH (SIZE / w.toFloat()) * h} else {newW …

计算机网络TCP篇③问答篇

目录 一、如何理解 TCP 是面向字节流协议 先来说说为什么 UDP 是面向报文的协议? 如果收到了两个 UDP 报文,操作系统是如何区分开的呢? 再说说为什么 TCP 是面向字节流的协议? 二、如何解决粘包问题? ①、固定消…

23.12.3日总结

饿了么项目进度 新建菜品的添加属性: 适应不同尺寸的媒体查询: 菜品详细页面: 项目上遇到的问题 媒体查询遇到的问题: 关于媒体查询不能生效的原因-CSDN博客 答辩总结 js中声明变量的关键字(const,let…

前缀和例题:子矩阵的和AcWing796

//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小 //计算前缀的时候用:g[i][j] g[i][j-1] g[i-1][j] - g[i-1][j-1] Integer.parseInt(init[j-1]); //计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] g[x1 -1][y1 - 1] "\n" //一些重复加的地…

YOLOv8 区域计数 | 入侵检测 | 人员闯入

大家好,昨天的 YOLOv8 新增加了一个功能,区域计数,用这个功能我们能实现很多的任务, 比如入侵检测,流量统计,人员闯入等,使用方式也非常的方便,但是一定要使用最新版的 YOLOv8 代码(2023/12/03更新的代码)。 低版本是不具备这个功能的,上面是演示效果。 使用非常的方…

InsCode实践分享

在当今信息爆炸的时代,如何从海量信息中脱颖而出,获取更多的关注和认可,成为了许多人的共同追求。作为知乎平台上的优质用户,我愿意分享一些自己的经验和技巧,帮助大家更好地运用InsCode,实现个人成长和进步…