作业管理

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

Note

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

SUBMIT JOB COMPACT

SUBMIT JOB COMPACT 语句会触发 RocksDB 的长耗时 compact 操作。

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

示例

  1. nebula> SUBMIT JOB COMPACT;
  2. +------------+
  3. | New Job Id |
  4. +------------+
  5. | 40 |
  6. +------------+

SUBMIT JOB FLUSH

SUBMIT JOB FLUSH语句将内存中的RocksDB memfile写入硬盘。

示例

  1. nebula> SUBMIT JOB FLUSH;
  2. +------------+
  3. | New Job Id |
  4. +------------+
  5. | 96 |
  6. +------------+

SUBMIT JOB STATS

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

Note

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

示例

  1. nebula> SUBMIT JOB STATS;
  2. +------------+
  3. | New Job Id |
  4. +------------+
  5. | 34 |
  6. +------------+

SHOW JOB

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

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

示例

  1. nebula> SHOW JOB 34;
  2. +----------------+-----------------+------------+----------------------------+----------------------------+
  3. | Job Id(TaskId) | Command(Dest) | Status | Start Time | Stop Time |
  4. +----------------+-----------------+------------+----------------------------+----------------------------+
  5. | 34 | "STATS" | "FINISHED" | 2021-11-01T03:32:27.000000 | 2021-11-01T03:32:27.000000 |
  6. | 0 | "192.168.8.111" | "FINISHED" | 2021-11-01T03:32:27.000000 | 2021-11-01T03:32:41.000000 |
  7. +----------------+-----------------+------------+----------------------------+----------------------------+
参数说明
Job Id(TaskId)第一行显示作业ID,其他行显示作业相关的任务ID。
Command(Dest)第一行显示执行的作业命令名称,其他行显示任务对应的nebula-storaged进程。
Status显示作业或任务的状态。详情请参见作业状态
Start Time显示作业或任务开始执行的时间。
Stop Time显示作业或任务结束执行的时间,结束后的状态包括FINISHEDFAILEDSTOPPED

作业状态

作业状态的说明如下。

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

状态转换的说明如下。

  1. Queue -- running -- finished -- removed
  2. \ \ /
  3. \ \ -- failed -- /
  4. \ \ /
  5. \ ---------- stopped -/

SHOW JOBS

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

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

示例

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

STOP JOB

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

示例

  1. nebula> STOP JOB 22;
  2. +---------------+
  3. | Result |
  4. +---------------+
  5. | "Job stopped" |
  6. +---------------+

RECOVER JOB

RECOVER JOB语句会重新执行当前图空间内失败的作业,并返回已恢复的作业数量。

示例

  1. nebula> RECOVER JOB;
  2. +-------------------+
  3. | Recovered job num |
  4. +-------------------+
  5. | 5 job recovered |
  6. +-------------------+

FAQ

如何排查作业问题?

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

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

最后更新: November 1, 2021