DolphinDB作业管理概述

本页介绍 DolphinDB 中作业(Job)的定义,并按同步作业与异步作业进行分类概览。

Source: https://dolphindb.cn/blogs/56

What this page covers

技能认证特训营第二期报名活动

页面顶部包含活动报名提示与链接信息。

DolphinDB作业管理概述(标题与作者/日期)

本节给出文章的标题、作者署名与发布日期。

作业(Job)定义与分类概览

本节定义 Job 为基本执行单位,并按同步/异步进行分类。

同步作业(Interactive Job)

本节说明同步/交互式作业的来源,并描述系统对其优先级的倾向。

异步作业

本节说明异步作业的类型,以及其对优先级与反馈实时性的特点。

子任务(Subtask)与并行/分布式执行

本节解释 Job 在分区表查询与分布式计算中如何分解为子任务并行执行,并在完成后汇总结果。

Worker 与 Executor 执行模型

本节描述 P2P 架构下 Data Node、Worker 与 Executor 的职责分工与典型执行场景。

将计算发送到数据所在节点以减少网络开销

本节阐述子任务尽量在数据所在 Data Node 执行,以减少网络传输开销,并说明分发依据。

Job 调度(总览)

本节作为 Job 调度主题的结构入口,指向优先级、调度策略、并行度与优先级设置等内容。

Job 优先级(范围、默认值与类型调整)

本节说明优先级范围、数值含义、默认优先级及其按 Job 类型调整。

Job 调度策略(多级反馈队列与轮转)

本节说明使用多级反馈队列调度,并在同优先级内采用轮转分配。

Job 并行度(parallelism)

本节解释 parallelism 的含义、默认值,并给出对调度轮次影响的示例。

Job 优先级的动态变化(防饥饿)

本节描述时间片结束后的动态降级与回跳机制,用于缓解饥饿问题。

设置 Job 的优先级(不同提交方式)

本节说明不同提交方式下的优先级设置规则与限制。

计算容错(分区副本与重试)

本节描述基于分区副本冗余的容错与重试机制,并提及可通过参数调整冗余度。

计算与存储耦合以及作业之间的数据共享

本节解释计算存储耦合的动机,并描述作业间共享分区副本与将计算发送到数据节点以降低开销的方案。

Facts Index

Entity Attribute Value Confidence
DolphinDB作业管理概述publication_date2021-08-05high
DolphinDB作业管理概述authorJunxihigh
DolphinDBjob_definition作业(Job)是最基本的执行单位,可理解为一段 DolphinDB 脚本代码在系统中的一次执行。high
DolphinDBjob_typesJob 根据阻塞与否分为同步作业与异步作业。high
同步作业alias同步作业也称为交互式作业(Interactive Job)。high
同步作业realtime_requirement对实时性要求较高。medium
DolphinDBinteractive_job_priority_policy执行过程中会自动给予同步/交互式作业较高优先级,以更快获得计算资源。medium
同步/交互式作业来源sourcesWeb notebook;DolphinDB GUI;DolphinDB 命令行界面;通过 DolphinDB 提供的各编程语言 API 接口。high
异步作业definition异步作业是在 DolphinDB 后台执行的作业。high
异步作业类型includes通过 submitJob 或 submitJobEx 提交的批处理作业;通过 scheduleJob 提交的定时作业;Streaming 作业。high
异步作业realtime_requirement一般对结果的实时反馈要求较低,且需要长期执行。medium
DolphinDBasync_job_priority_policy一般会给予异步作业较低的优先级。medium
子任务created_when当 Job 包含分区表查询计算任务(如 SQL 查询)时会分解成多个子任务发送到不同节点并行执行,待子任务完成后合并结果继续执行原 Job。high
子任务also_created_byDolphinDB 的分布式计算也会产生子任务。high
JobinterpretationJob 也可以理解成一系列的子任务。high
DolphinDBarchitecture是 P2P 架构系统,每个 Data Node 角色相同,都可执行用户提交的 Job。high
WorkerroleData Node 上负责 Job 内部执行调度:处理用户提交的 Job、执行简单计算、任务分解与分发、汇集最终结果。high
子任务执行线程executorsJob 分解出的子任务分发到集群 Data Node 上,由 Data Node 上的 Worker 或 Executor 线程负责执行。high
未分区表查询execution当表未分区时,对其查询的 Job 将由 Worker 线程执行。high
单机分区表查询execution当表被分区存放在单机上时,查询 Job 可能分解为多个子任务,由该节点上多个 Executor 线程并行执行。high
DFS 分区表查询execution当表被分区存储在 DFS 时,查询 Job 可能分解为多个子任务并分发到其他 Node 的 Worker 上执行,实现分布式计算。high
DolphinDBdata_locality_policy为最大化性能,会将子任务发送到数据所在 Data Node 上执行,以减少网络传输开销。medium
DFS 分区表子任务分发依据basisWorker 会根据分区模式以及分区当前所在 Data Node 进行任务分解与分发。high
分布式计算子任务分发依据basisWorker 会根据数据源信息,将子任务发送到相应数据源 Data Node 执行。high
Job 优先级range优先级取值范围为 0-9,取值越高优先级越高。high
DolphinDBpriority_resource_policy优先级高的 Job 会更及时获得计算资源。medium
Job 默认优先级default_priority每个 Job 一般默认有 default priority,取值为 4,并会根据 Job 类型调整。high
Job 调度策略scheduler_type基于优先级使用多级反馈队列调度。high
优先级队列数量queue_count系统维护 10 个队列,对应 10 个优先级。high
线程资源分配原则policy系统总是优先分配线程资源给高优先级 Job;同优先级 Job 以 round robin 方式分配;高优先级队列为空时才处理低优先级队列。high
Job 并行度 parallelismdefinition表示在一个 Data Node 上最多同时用多少个线程执行 Job 产生的并行任务。high
Job 并行度 parallelismdefault_value默认取值为 2(文中称可认为是一种时间片单位)。high
并行度示例scheduling_rounds_example若 parallelism=2 且产生 100 个并行子任务,被调度时系统仅分配 2 个线程计算子任务,因此需要 50 轮调度完成整个 Job。high
优先级动态变化机制anti_starvation时间片执行完毕后,若存在比其低优先级的 Job,则自动降低一级优先级;到达最低点后回到初始优先级,以解决饥饿问题。high
交互式作业优先级设置ruleconsole、web notebook、API 提交的 interactive job 的优先级取值为 min(4,一个可调节的用户最高优先级),可通过改变用户自身优先级值调整。medium
批处理作业优先级设置rule通过 submitJob 提交的 batch job 系统给予 default priority=4;也可用 submitJobEx 指定优先级。high
定时任务优先级设置rule定时任务优先级无法改变,默认为 4。high
DolphinDB database 分布式计算fault_tolerance_basis具有一定容错性,主要得益于分区副本冗余存储。high
Job Scheduler 故障处理behavior_on_failure子任务发送到分区副本节点后,若节点故障或副本数据校验错误(副本损坏),Job Scheduler(某个 Data Node 的 worker 线程)会发现故障并选择该分区的另一个副本节点重新执行子任务。high
dfsReplicationFactor 参数purpose用户可通过设置 dfsReplicationFactor 调整冗余度。high
DolphinDBcompute_near_storageDolphinDB 的计算尽量靠近存储,并采取计算与存储耦合架构。medium
计算与存储分离(Spark+Hive)stated_issue_data_redundancy应用程序之间不共享存储;N 个 Spark 应用从 Hive 读同一表需要将数据加载到各自内存形成 N 份,导致内存浪费并提高多用户场景 IT 成本。medium
数据传输stated_issue_copy_latency尽管 RDMA、NVMe 提升数据中心网络,但部署环境可能不具备,网络传输会成为性能瓶颈。medium
作业之间共享数据(针对内存浪费)mechanism分区存储到 DFS 后,每个分区副本归属特定节点;同一节点上的分区副本在内存中只存在一份;多个 Job 子任务涉及同一分区副本时可共享读取以减少内存浪费。high
将计算发送到数据节点(针对拷贝延迟)mechanismJob 根据 DFS 分区信息分解为多个子任务并发送到分区所在节点执行;发送计算相当于发送代码,从而减少网络开销。high
限时报名链接urlhttps://www.qingsuyun.com/h5/e/217471/5/high