作业管理¶
在 Storage 服务上长期运行的任务称为作业,例如COMPACT
、FLUSH
和STATS
。 如果图空间的数据量很大,这些作业可能耗时很长。作业管理可以帮助执行、查看、停止和恢复作业。
Note
所有作业管理命令都需要先选择图空间后才能执行。
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。
Note
如果存储在 NebulaGraph 中的数据有变化,为了获取最新的统计结果,请重新执行SUBMIT JOB STATS
。
示例:
nebula> SUBMIT JOB STATS;
+------------+
| New Job Id |
+------------+
| 9 |
+------------+
SUBMIT JOB DOWNLOAD/INGEST¶
SUBMIT JOB DOWNLOAD HDFS
和SUBMIT JOB INGEST
命令用于将 SST 文件导入 NebulaGraph 。详情参见导入 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 |
显示作业或任务结束执行的时间,结束后的状态包括FINISHED 、FAILED 或STOPPED 。 |
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>]
语句可以重新执行当前图空间内状态为FAILED
、STOPPED
的作业,未指定<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"