找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2262

积分

0

好友

324

主题
发表于 昨天 05:06 | 查看: 2| 回复: 0

一、概述

Apache Doris 在其 2.1 版本中引入了一项重磅功能——Job Scheduler。这一功能标志着 Doris 具备了自主的任务调度能力,其调度的精准度更是可以达到秒级。这项新特性不仅能有效保障数据导入过程的完整性与一致性,还为用户提供了灵活、便捷的调度策略调整空间。更重要的是,它减少了 Doris 对外部调度系统的依赖,从而降低了系统整体的故障风险和运维复杂度,为广大 大数据 及数据仓库用户带来了更加统一和可靠的使用体验。

二、核心特点

Job Scheduler 功能拥有以下几个显著特点:

  1. 秒级精准调度:任务可以在指定的时间间隔内被精确调度,确保数据处理的高效性与及时性。其底层采用了时间轮算法,保障事件能够实现秒级触发的精度。
  2. 灵活的调度策略:提供了丰富的调度选项,支持按分钟、小时、天或周的间隔进行周期性调度。同时也支持一次性调度任务。对于周期性调度,用户还可以指定任务的开始时间和结束时间。
  3. 高性能执行模型:内部采用 Disruptor 实现高性能的生产者-消费者模型,最大化避免任务执行过程中的过载问题,保障系统稳定运行。
  4. 执行记录可追溯:Job Scheduler 会存储最近的 Task 执行记录(存储量可配置),用户可以通过简单的 SQL 命令轻松查看任务历史执行情况,确保操作过程透明、可追溯。
  5. 高可用与自恢复:依托于 Doris 自身成熟的高可用机制,Job Scheduler 能够轻松实现故障自恢复和高可用,进一步提升了作为独立调度系统的可靠性。

三、实战:创建并管理一次性调度任务

下面我们通过一个完整的例子,演示如何在特定时间点执行一次任务。

1. 创建一次性任务

使用 CREATE JOB 语句可以创建一个任务。以下示例创建了一个名为 once_job 的任务,它将在 2024-07-02 21:40:00 这个精确的时间点,执行一条将数据从 demo.sink 表插入到 demo.sink2 表的 SQL 语句。

CREATE JOB once_job ON SCHEDULE AT '2024-07-02 21:40:00' DO INSERT INTO demo.sink2 SELECT * FROM demo.sink;

执行成功后,命令行会返回确认信息。
创建一次性任务SQL命令及执行结果

关键参数说明: 参数 描述
once_job 任务的唯一名称。
AT ‘2024-07-02 21:40:00’ 指定任务执行的具体时间点。
DO 其后跟随需要执行的具体SQL语句。

2. 查看任务状态

我们可以通过查询内置的 jobs 表来查看任务的状态。使用 type=‘insert’ 条件可以筛选出所有数据插入类型的任务。

select * from jobs(“type“=“insert“);

查询一次性任务状态为RUNNING
从查询结果可以看到,刚刚创建的 once_job 任务当前状态为 RUNNING,意味着它已被调度器接收并等待在指定时间执行。

3. 暂停任务

如果需要在任务执行前临时中止它,可以使用 PAUSE JOB 命令。

PAUSE JOB WHERE jobname='once_job';

执行PAUSE JOB命令暂停任务
执行成功后,再次查询任务状态,会发现其状态已变为 PAUSED
任务状态已变为PAUSED

4. 恢复任务

被暂停的任务可以通过 RESUME JOB 命令恢复执行。

RESUME JOB where jobName= ‘once_job’;

执行RESUME JOB命令恢复任务
恢复后,查询任务状态会显示其重新变为 RUNNING

5. 验证任务执行结果

当系统时间过了预设的执行时间点(2024-07-02 21:40:00)后,我们再次查看任务状态。

select * from jobs(“type“=“insert“);

任务执行后状态变为FINISHED
此时,任务状态已更新为 FINISHED,表示已成功执行。同时,可以检查目标表 demo.sink2,确认数据已经按预期插入。

6. 清理任务

任务执行完成后,如果不再需要,可以使用 DROP JOB 命令将其删除,以清理元数据。

DROP JOB where jobName='once_job';

执行DROP JOB命令删除任务

通过以上步骤,我们完整演示了 Doris Job Scheduler 对一次性任务的创建、监控、生命周期管理(暂停/恢复)及清理流程。这极大地简化了原本需要依赖外部 数据库/中间件/技术栈 (如独立的调度系统)才能完成的定时ETL作业,为数据工程师提供了内置、高效的解决方案。想了解更多关于 Doris 或其他数据库的实战技巧,欢迎访问 云栈社区 进行交流探讨。




上一篇:国产数据库技术选型:为何PostgreSQL成为主流底层内核
下一篇:Burp Suite 测试双因子认证漏洞:通过设置验证码为0绕过机制剖析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-16 03:38 , Processed in 0.232208 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表