跳到主要内容
版本:3.11.0

作业管理

在 Storage 服务上长期运行的任务称为作业,例如COMPACTFLUSHSTATS。 如果图空间的数据量很大,这些作业可能耗时很长。作业管理可以帮助执行、查看、停止和恢复作业。

备注

所有作业管理命令都需要先选择图空间后才能执行。

SUBMIT JOB BALANCE LEADER

SUBMIT JOB BALANCE LEADER语句会启动任务均衡分布所有图空间中的 leader。该命令会返回任务 ID。

示例:

nebula> SUBMIT JOB BALANCE LEADER;
+------------+
| New Job Id |
+------------+
| 33 |
+------------+

SUBMIT JOB COMPACT

SUBMIT JOB COMPACT 语句会在当前图空间内触发 RocksDB 的长耗时 compact 操作。

compact配置详情请参见 Storage 服务配置

示例:

nebula> SUBMIT JOB COMPACT;
+------------+
| New Job Id |
+------------+
| 40 |
+------------+

SUBMIT JOB FLUSH

SUBMIT JOB FLUSH语句将当前图空间内存中的 RocksDB memfile 写入硬盘。

示例:

nebula> SUBMIT JOB FLUSH;
+------------+
| New Job Id |
+------------+
| 96 |
+------------+

SUBMIT JOB STATS

SUBMIT JOB STATS语句会在当前图空间内启动一个作业,该作业对当前图空间进行统计。作业完成后,用户可以使用SHOW STATS语句列出统计结果。详情请参见 SHOW STATS

备注

如果存储在 悦数图数据库 中的数据有变化,为了获取最新的统计结果,请重新执行SUBMIT JOB STATS

示例:

nebula> SUBMIT JOB STATS;
+------------+
| New Job Id |
+------------+
| 9 |
+------------+

SUBMIT JOB DOWNLOAD/INGEST

SUBMIT JOB DOWNLOAD HDFSSUBMIT JOB INGEST命令用于将 SST 文件导入 悦数图数据库 。详情参见导入 SST 文件数据

SUBMIT JOB DOWNLOAD HDFS语句会下载指定的 HDFS 上的 SST 文件。

SUBMIT JOB INGEST语句会将下载的 SST 文件导入图空间。

示例:

nebula> SUBMIT JOB DOWNLOAD HDFS "hdfs://192.168.10.100:9000/sst";
+------------+
| New Job Id |
+------------+
| 10 |
+------------+

nebula> SUBMIT JOB INGEST;
+------------+
| New Job Id |
+------------+
| 11 |
+------------+

SHOW JOB

Meta 服务将SUBMIT JOB请求解析为多个任务,然后分配给进程 nebula-storaged。SHOW JOB <job_id>语句显示当前图空间内指定作业和相关任务的信息。

job_id在执行SUBMIT JOB语句时会返回。

示例:

nebula> SHOW JOB 8;
+----------------+-----------------+------------+----------------------------+----------------------------+-------------+
| Job Id(TaskId) | Command(Dest) | Status | Start Time | Stop Time | Error Code |
+----------------+-----------------+------------+----------------------------+----------------------------+-------------+
| 8 | "STATS" | "FINISHED" | 2022-10-18T08:14:45.000000 | 2022-10-18T08:14:45.000000 | "SUCCEEDED" |
| 0 | "192.168.8.129" | "FINISHED" | 2022-10-18T08:14:45.000000 | 2022-10-18T08:15:13.000000 | "SUCCEEDED" |
| "Total:1" | "Succeeded:1" | "Failed:0" | "In Progress:0" | "" | "" |
+----------------+-----------------+------------+----------------------------+----------------------------+-------------+
参数说明
Job Id(TaskId)第一行显示作业 ID,最后一行显示作业相关的任务总数,其他行显示作业相关的任务 ID。
Command(Dest)第一行显示执行的作业命令名称,最后一行显示作业相关的成功的任务数。其他行显示任务对应的 nebula-storaged 进程。
Status显示作业或任务的状态,最后一行显示作业相关的失败的任务数。详情请参见作业状态
Start Time显示作业或任务开始执行的时间,最后一行显示作业相关的正在进行的任务数。
Stop Time显示作业或任务结束执行的时间,结束后的状态包括FINISHEDFAILEDSTOPPED
Error Code显示作业或任务的错误码

作业状态

作业状态的说明如下。

状态说明
QUEUE作业或任务在等待队列中。此阶段Start Time为空。
RUNNING作业或任务在执行中。Start Time为该阶段的起始时间。
FINISHED作业或任务成功完成。Stop Time为该阶段的起始时间。
FAILED作业或任务失败。Stop Time为该阶段的起始时间。
STOPPED作业或任务停止。Stop Time为该阶段的起始时间。
REMOVED作业或任务被删除。

状态转换的说明如下。

Queue -- running -- finished -- removed
\ \ /
\ \ -- failed -- /
\ \ /
\ ---------- stopped -/

SHOW JOBS

SHOW JOBS语句列出当前图空间内所有未过期的作业。

作业的默认过期时间为一周。如果需要修改过期时间,请修改 Meta 服务的参数job_expired_secs。详情请参见 Meta 服务配置

示例:

nebula> SHOW JOBS;
+--------+---------------------+------------+----------------------------+----------------------------+
| Job Id | Command | Status | Start Time | Stop Time |
+--------+---------------------+------------+----------------------------+----------------------------+
| 34 | "STATS" | "FINISHED" | 2021-11-01T03:32:27.000000 | 2021-11-01T03:32:27.000000 |
| 33 | "FLUSH" | "FINISHED" | 2021-11-01T03:32:15.000000 | 2021-11-01T03:32:15.000000 |
| 32 | "COMPACT" | "FINISHED" | 2021-11-01T03:32:06.000000 | 2021-11-01T03:32:06.000000 |
| 31 | "REBUILD_TAG_INDEX" | "FINISHED" | 2021-10-29T05:39:16.000000 | 2021-10-29T05:39:17.000000 |
| 10 | "COMPACT" | "FINISHED" | 2021-10-26T02:27:05.000000 | 2021-10-26T02:27:05.000000 |
+--------+---------------------+------------+----------------------------+----------------------------+

STOP JOB

STOP JOB <job_id>语句可以停止当前图空间内未完成的作业。

示例:

nebula> STOP JOB 22;
+---------------+
| Result |
+---------------+
| "Job stopped" |
+---------------+

RECOVER JOB

RECOVER JOB [<job_id>]语句可以重新执行当前图空间内状态为FAILEDSTOPPED的作业,未指定<job_id>时,会从最早的作业开始尝试重新执行,并返回已恢复的作业数量。

示例:

nebula> RECOVER JOB;
+-------------------+
| Recovered job num |
+-------------------+
| 5 job recovered |
+-------------------+

FAQ

如何排查作业问题?

SUBMIT JOB操作使用的是 HTTP 端口,请检查 Storage 服务机器上的 HTTP 端口是否正常工作。用户可以执行如下命令调试:

curl "http://{storaged-ip}:19779/admin?space={space_name}&op=compact"