有两种方式可以获取 HugeGraph-Tools:

    • 下载二进制tar包
    • 下载源码编译安装

    2.1 下载二进制tar包

    下载最新版本的 HugeGraph-Tools 包:

    2.2 下载源码编译安装

    下载最新版本的 HugeGraph-Tools 源码包:

    编译生成 tar 包:

    1. cd hugegraph-tools
    2. mvn package -DskipTests

    3.1 功能概览

    解压后,进入 hugegraph-tools 目录,可以使用bin/hugegraph或者bin/hugegraph help来查看 usage 信息。主要分为:

    • 图管理类,graph-mode-set、graph-mode-get、graph-list、graph-get 和 graph-clear
    • 异步任务管理类,task-list、task-get、task-delete、task-cancel 和 task-clear
    • Gremlin类,gremlin-execute 和 gremlin-schedule
    • 备份/恢复类,backup、restore、migrate、schedule-backup 和 dump
    • 安装部署类,deploy、clear、start-all 和 stop-all
    1. Usage: hugegraph [options] [command] [command options]
    3.2 [options]-全局变量

    options是 HugeGraph-Tools 的全局变量,可以在 hugegraph-tools/bin/hugegraph 中配置,包括:

    • —graph,HugeGraph-Tools 操作的图的名字,默认值是 hugegraph
    • —url,HugeGraph-Server 的服务地址,默认是
    • —user,当 HugeGraph-Server 开启认证时,传递用户名
    • —password,当 HugeGraph-Server 开启认证时,传递用户的密码
    • —timeout,连接 HugeGraph-Server 时的超时时间,默认是 30s
    • —trust-store-file,证书文件的路径,当 —url 使用 https 时,HugeGraph-Client 使用的 truststore 文件,默认为空,代表使用 hugegraph-tools 内置的 truststore 文件 conf/hugegraph.truststore
    • —trust-store-password,证书文件的密码,当 —url 使用 https 时,HugeGraph-Client 使用的 truststore 的密码,默认为空,代表使用 hugegraph-tools 内置的 truststore 文件的密码

    上述全局变量,也可以通过环境变量来设置。一种方式是在命令行使用 export 设置临时环境变量,在该命令行关闭之前均有效

    另一种方式是在 bin/hugegraph 脚本中设置环境变量:

    3.3 图管理类,graph-mode-set、graph-mode-get、graph-list、graph-get和graph-clear
    • graph-mode-set,设置图的 restore mode
      • —graph-mode 或者 -m,必填项,指定将要设置的模式,合法值包括 [NONE, RESTORING, MERGING, LOADING]
    • graph-mode-get,获取图的 restore mode
    • graph-list,列出某个 HugeGraph-Server 中全部的图
    • graph-get,获取某个图及其存储后端类型
    • graph-clear,清除某个图的全部 schema 和 data
      • —confirm-message 或者 -c,必填项,删除确认信息,需要手动输入,二次确认防止误删,”I’m sure to delete all data”,包括双引号
    3.4 异步任务管理类,task-list、task-get和task-delete
    • task-list,列出某个图中的异步任务,可以根据任务的状态过滤
      • —status,选填项,指定要查看的任务的状态,即按状态过滤任务
      • —limit,选填项,指定要获取的任务的数目,默认为 -1,意思为获取全部符合条件的任务
    • task-get,获取某个异步任务的详细信息
      • —task-id,必填项,指定异步任务的 ID
    • task-delete,删除某个异步任务的信息
      • —task-id,必填项,指定异步任务的 ID
    • task-cancel,取消某个异步任务的执行
      • —task-id,要取消的异步任务的 ID
    • task-clear,清理完成的异步任务
      • —force,选填项,设置时,表示清理全部异步任务,未执行完成的先取消,然后清除所有异步任务。默认只清理已完成的异步任务
    3.5 Gremlin类,gremlin-execute和gremlin-schedule
    • gremlin-execute,发送 Gremlin 语句到 HugeGraph-Server 来执行查询或修改操作,同步执行,结束后返回结果
      • —file 或者 -f,指定要执行的脚本文件,UTF-8编码,与 —script 互斥
      • —script 或者 -s,指定要执行的脚本字符串,与 —file 互斥
      • —aliases 或者 -a,Gremlin 别名设置,格式为:key1=value1,key2=value2,…
      • —bindings 或者 -b,Gremlin 绑定设置,格式为:key1=value1,key2=value2,…
      • —language 或者 -l,Gremlin 脚本的语言,默认为 gremlin-groovy
    • gremlin-schedule,发送 Gremlin 语句到 HugeGraph-Server 来执行查询或修改操作,异步执行,任务提交后立刻返回异步任务id
      • —file 或者 -f,指定要执行的脚本文件,UTF-8编码,与 —script 互斥
      • —script 或者 -s,指定要执行的脚本字符串,与 —file 互斥
      • —bindings 或者 -b,Gremlin 绑定设置,格式为:key1=value1,key2=value2,…
      • —language 或者 -l,Gremlin 脚本的语言,默认为 gremlin-groovy
    3.6 备份/恢复类
    • backup,将某张图中的 schema 或者 data 备份到 HugeGraph 系统之外,以 JSON 形式存在本地磁盘或者 HDFS
      • —format,备份的格式,可选值包括 [json, text],默认为 json
      • —all-properties,是否备份顶点/边全部的属性,仅在 —format 为 text 是有效,默认 false
      • —label,要备份的顶点/边的类型,仅在 —format 为 text 是有效,只有备份顶点或者边的时候有效
      • —properties,要备份的顶点/边的属性,逗号分隔,仅在 —format 为 text 是有效,只有备份顶点或者边的时候有效
      • —compress,备份时是否压缩数据,默认为 true
      • —directory 或者 -d,存储 schema 或者 data 的目录,本地目录时,默认为’./{graphName}’,HDFS 时,默认为 ‘{fs.default.name}/{graphName}’
      • —huge-types 或者 -t,要备份的数据类型,逗号分隔,可选值为 ‘all’ 或者 一个或多个 [vertex,edge,vertex_label,edge_label,property_key,index_label] 的组合,’all’ 代表全部6种类型,即顶点、边和所有schema
      • —log 或者 -l,指定日志目录,默认为当前目录
      • —retry,指定失败重试次数,默认为 3
      • —split-size 或者 -s,指定在备份时对顶点或者边分块的大小,默认为 1048576
      • -D,用 -Dkey=value 的模式指定动态参数,用来备份数据到 HDFS 时,指定 HDFS 的配置项,例如:-Dfs.default.name=hdfs://localhost:9000
    • restore,将 JSON 格式存储的 schema 或者 data 恢复到一个新图中(RESTORING 模式)或者合并到已存在的图中(MERGING 模式)
      • —directory 或者 -d,存储 schema 或者 data 的目录,本地目录时,默认为’./{graphName}’,HDFS 时,默认为 ‘{fs.default.name}/{graphName}’
      • —clean,是否在恢复图完成后删除 —directory 指定的目录,默认为 false
      • —huge-types 或者 -t,要恢复的数据类型,逗号分隔,可选值为 ‘all’ 或者 一个或多个 [vertex,edge,vertex_label,edge_label,property_key,index_label] 的组合,’all’ 代表全部6种类型,即顶点、边和所有schema
      • —log 或者 -l,指定日志目录,默认为当前目录
      • —retry,指定失败重试次数,默认为 3
      • -D,用 -Dkey=value 的模式指定动态参数,用来从 HDFS 恢复图时,指定 HDFS 的配置项,例如:-Dfs.default.name=hdfs://localhost:9000
    • migrate, 将当前连接的图迁移至另一个 HugeGraphServer 中
      • —target-graph,目标图的名字,默认为 hugegraph
      • —target-url,目标图所在的 HugeGraphServer,默认为 http://127.0.0.1:8081
      • —target-username,访问目标图的用户名
      • —target-password,访问目标图的密码
      • —target-timeout,访问目标图的超时时间
      • —target-trust-store-file,访问目标图使用的 truststore 文件
      • —target-trust-store-password,访问目标图使用的 truststore 的密码
      • —directory 或者 -d,迁移过程中,存储源图的 schema 或者 data 的目录,本地目录时,默认为’./{graphName}’,HDFS 时,默认为 ‘{fs.default.name}/{graphName}’
      • —huge-types 或者 -t,要迁移的数据类型,逗号分隔,可选值为 ‘all’ 或者 一个或多个 [vertex,edge,vertex_label,edge_label,property_key,index_label] 的组合,’all’ 代表全部6种类型,即顶点、边和所有schema
      • —log 或者 -l,指定日志目录,默认为当前目录
      • —retry,指定失败重试次数,默认为 3
      • —split-size 或者 -s,指定迁移过程中对源图进行备份时顶点或者边分块的大小,默认为 1048576
      • -D,用 -Dkey=value 的模式指定动态参数,用来在迁移图过程中需要备份数据到 HDFS 时,指定 HDFS 的配置项,例如:-Dfs.default.name=hdfs://localhost:9000
      • —graph-mode 或者 -m,将源图恢复到目标图时将目标图设置的模式,合法值包括 [RESTORING, MERGING]
      • —keep-local-data,是否保留在迁移图的过程中产生的源图的备份,默认为 false,即默认迁移图结束后不保留产生的源图备份
    • schedule-backup,周期性对图执行备份操作,并保留一定数目的最新备份(目前仅支持本地文件系统)
      • —directory 或者 -d,必填项,指定备份数据的目录
      • —backup-num,选填项,指定保存的最新的备份的数目,默认为 3
      • —interval,选填项,指定进行备份的周期,格式同 Linux crontab 格式
    • dump,把整张图的顶点和边全部导出,默认以vertex vertex-edge1 vertex-edge2...JSON格式存储。 用户也可以自定义存储格式,只需要在hugegraph-tools/src/main/java/com/baidu/hugegraph/formatter 目录下实现一个继承自Formatter的类,例如CustomFormatter,使用时指定该类为formatter即可,例如 bin/hugegraph dump -f CustomFormatter
      • —formatter 或者 -f,指定使用的 formatter,默认为 JsonFormatter
      • —directory 或者 -d,存储 schema 或者 data 的目录,默认为当前目录
      • —log 或者 -l,指定日志目录,默认为当前目录
      • —retry,指定失败重试次数,默认为 3
      • —split-size 或者 -s,指定在备份时对顶点或者边分块的大小,默认为 1048576
      • -D,用 -Dkey=value 的模式指定动态参数,用来备份数据到 HDFS 时,指定 HDFS 的配置项,例如:-Dfs.default.name=hdfs://localhost:9000
    3.7 安装部署类
    • deploy,一键下载、安装和启动 HugeGraph-Server 和 HugeGraph-Studio
      • -v,必填项,指明安装的 HugeGraph-Server 和 HugeGraph-Studio 的版本号,最新的是 0.9
      • -p,必填项,指定安装的 HugeGraph-Server 和 HugeGraph-Studio 目录
      • -u,选填项,指定下载 HugeGraph-Server 和 HugeGraph-Studio 压缩包的链接
    • clear,清理 HugeGraph-Server 和 HugeGraph-Studio 目录和tar包
      • -p,必填项,指定要清理的 HugeGraph-Server 和 HugeGraph-Studio 的目录
    • start-all,一键启动 HugeGraph-Server 和 HugeGraph-Studio,并启动监控,服务死掉时自动拉起服务
      • -v,必填项,指明要启动的 HugeGraph-Server 和 HugeGraph-Studio 的版本号,最新的是 0.9
      • -p,必填项,指定安装了 HugeGraph-Server 和 HugeGraph-Studio 的目录
    • stop-all,一键关闭 HugeGraph-Server 和 HugeGraph-Studio
    3.8 具体命令参数
    1. Usage: hugegraph [options] [command] [command options]
    2. Options:
    3. --graph
    4. Name of graph
    5. Default: hugegraph
    6. --password
    7. Password of user
    8. --timeout
    9. Connection timeout
    10. Default: 30
    11. --trust-store-file
    12. The path of client truststore file used when https protocol is enabled
    13. --trust-store-password
    14. The password of the client truststore file used when the https protocol
    15. is enabled
    16. --url
    17. The URL of HugeGraph-Server
    18. Default: http://127.0.0.1:8080
    19. --user
    20. Name of user
    21. Commands:
    22. Usage: graph-list
    23. graph-get Get graph info
    24. Usage: graph-get
    25. graph-clear Clear graph schema and data
    26. Usage: graph-clear [options]
    27. Options:
    28. * --confirm-message, -c
    29. Confirm message of graph clear is "I'm sure to delete all data".
    30. (Note: include "")
    31. graph-mode-set Set graph mode
    32. Usage: graph-mode-set [options]
    33. Options:
    34. * --graph-mode, -m
    35. Graph mode, include: [NONE, RESTORING, MERGING]
    36. Possible Values: [NONE, RESTORING, MERGING, LOADING]
    37. graph-mode-get Get graph mode
    38. Usage: graph-mode-get
    39. task-list List tasks
    40. Usage: task-list [options]
    41. Options:
    42. --limit
    43. Limit number, no limit if not provided
    44. Default: -1
    45. --status
    46. Status of task
    47. task-get Get task info
    48. Usage: task-get [options]
    49. Options:
    50. * --task-id
    51. Task id
    52. Default: 0
    53. task-delete Delete task
    54. Usage: task-delete [options]
    55. Options:
    56. * --task-id
    57. Task id
    58. Default: 0
    59. task-cancel Cancel task
    60. Usage: task-cancel [options]
    61. Options:
    62. * --task-id
    63. Task id
    64. Default: 0
    65. task-clear Clear completed tasks
    66. Usage: task-clear [options]
    67. Options:
    68. --force
    69. Force to clear all tasks, cancel all uncompleted tasks firstly,
    70. and delete all completed tasks
    71. Default: false
    72. gremlin-execute Execute Gremlin statements
    73. Usage: gremlin-execute [options]
    74. Options:
    75. --aliases, -a
    76. Gremlin aliases, valid format is: 'key1=value1,key2=value2...'
    77. Default: {}
    78. --bindings, -b
    79. Gremlin bindings, valid format is: 'key1=value1,key2=value2...'
    80. Default: {}
    81. --file, -f
    82. Gremlin Script file to be executed, UTF-8 encoded, exclusive to
    83. --script
    84. --language, -l
    85. Default: gremlin-groovy
    86. --script, -s
    87. Gremlin script to be executed, exclusive to --file
    88. gremlin-schedule Execute Gremlin statements as asynchronous job
    89. Usage: gremlin-schedule [options]
    90. Options:
    91. --bindings, -b
    92. Gremlin bindings, valid format is: 'key1=value1,key2=value2...'
    93. Default: {}
    94. --file, -f
    95. Gremlin Script file to be executed, UTF-8 encoded, exclusive to
    96. --script
    97. --language, -l
    98. Gremlin script language
    99. Default: gremlin-groovy
    100. --script, -s
    101. Gremlin script to be executed, exclusive to --file
    102. backup Backup graph schema/data. If directory is on HDFS, use -D to
    103. set HDFS params. For exmaple:
    104. -Dfs.default.name=hdfs://localhost:9000
    105. Usage: backup [options]
    106. Options:
    107. --all-properties
    108. All properties to be backup flag
    109. Default: false
    110. --compress
    111. compress flag
    112. Default: true
    113. --directory, -d
    114. Directory of graph schema/data, default is './{graphname}' in
    115. local file system or '{fs.default.name}/{graphname}' in HDFS
    116. --format
    117. File format, valid is [json, text]
    118. Default: json
    119. --huge-types, -t
    120. Type of schema/data. Concat with ',' if more than one. 'all' means
    121. all vertices, edges and schema, in other words, 'all' equals with
    122. 'vertex,edge,vertex_label,edge_label,property_key,index_label'
    123. Default: [PROPERTY_KEY, VERTEX_LABEL, EDGE_LABEL, INDEX_LABEL, VERTEX, EDGE]
    124. --label
    125. Vertex or edge label, only valid when type is vertex or edge
    126. --log, -l
    127. Directory of log
    128. Default: ./logs
    129. --properties
    130. Vertex or edge properties to backup, only valid when type is
    131. vertex or edge
    132. Default: []
    133. --retry
    134. Retry times, default is 3
    135. Default: 3
    136. --split-size, -s
    137. Split size of shard
    138. Default: 1048576
    139. -D
    140. HDFS config parameters
    141. Syntax: -Dkey=value
    142. Default: {}
    143. schedule-backup Schedule backup task
    144. Usage: schedule-backup [options]
    145. Options:
    146. --backup-num
    147. The number of latest backups to keep
    148. Default: 3
    149. * --directory, -d
    150. The directory of backups stored
    151. --interval
    152. The interval of backup, format is: "a b c d e". 'a' means minute
    153. (0 - 59), 'b' means hour (0 - 23), 'c' means day of month (1 -
    154. (Sunday=0), "*" means all
    155. Default: "0 0 * * *"
    156. dump Dump graph to files
    157. Usage: dump [options]
    158. Options:
    159. --directory, -d
    160. Directory of graph schema/data, default is './{graphname}' in
    161. local file system or '{fs.default.name}/{graphname}' in HDFS
    162. --formatter, -f
    163. Formatter to customize format of vertex/edge
    164. Default: JsonFormatter
    165. --log, -l
    166. Directory of log
    167. Default: ./logs
    168. --retry
    169. Retry times, default is 3
    170. Default: 3
    171. --split-size, -s
    172. Split size of shard
    173. Default: 1048576
    174. -D
    175. HDFS config parameters
    176. Syntax: -Dkey=value
    177. Default: {}
    178. restore Restore graph schema/data. If directory is on HDFS, use -D to
    179. set HDFS params if needed. For
    180. exmaple:-Dfs.default.name=hdfs://localhost:9000
    181. Usage: restore [options]
    182. Options:
    183. --clean
    184. Whether to remove the directory of graph data after restored
    185. Default: false
    186. --directory, -d
    187. Directory of graph schema/data, default is './{graphname}' in
    188. --huge-types, -t
    189. Type of schema/data. Concat with ',' if more than one. 'all' means
    190. all vertices, edges and schema, in other words, 'all' equals with
    191. 'vertex,edge,vertex_label,edge_label,property_key,index_label'
    192. Default: [PROPERTY_KEY, VERTEX_LABEL, EDGE_LABEL, INDEX_LABEL, VERTEX, EDGE]
    193. --log, -l
    194. Directory of log
    195. Default: ./logs
    196. --retry
    197. Retry times, default is 3
    198. Default: 3
    199. -D
    200. HDFS config parameters
    201. Syntax: -Dkey=value
    202. Default: {}
    203. migrate Migrate graph
    204. Usage: migrate [options]
    205. Options:
    206. --directory, -d
    207. Directory of graph schema/data, default is './{graphname}' in
    208. local file system or '{fs.default.name}/{graphname}' in HDFS
    209. --graph-mode, -m
    210. Mode used when migrating to target graph, include: [RESTORING,
    211. MERGING]
    212. Default: RESTORING
    213. Possible Values: [NONE, RESTORING, MERGING, LOADING]
    214. --huge-types, -t
    215. Type of schema/data. Concat with ',' if more than one. 'all' means
    216. all vertices, edges and schema, in other words, 'all' equals with
    217. 'vertex,edge,vertex_label,edge_label,property_key,index_label'
    218. Default: [PROPERTY_KEY, VERTEX_LABEL, EDGE_LABEL, INDEX_LABEL, VERTEX, EDGE]
    219. --keep-local-data
    220. Whether to keep the local directory of graph data after restored
    221. Default: false
    222. --log, -l
    223. Directory of log
    224. Default: ./logs
    225. --retry
    226. Retry times, default is 3
    227. Default: 3
    228. --split-size, -s
    229. Split size of shard
    230. Default: 1048576
    231. --target-graph
    232. The name of target graph to migrate
    233. Default: hugegraph
    234. --target-password
    235. The password of target graph to migrate
    236. --target-timeout
    237. The timeout to connect target graph to migrate
    238. Default: 0
    239. --target-trust-store-file
    240. The trust store file of target graph to migrate
    241. --target-trust-store-password
    242. The trust store password of target graph to migrate
    243. --target-url
    244. The url of target graph to migrate
    245. Default: http://127.0.0.1:8081
    246. --target-user
    247. The username of target graph to migrate
    248. -D
    249. HDFS config parameters
    250. Syntax: -Dkey=value
    251. Default: {}
    252. deploy Install HugeGraph-Server and HugeGraph-Studio
    253. Usage: deploy [options]
    254. Options:
    255. * -p
    256. Install path of HugeGraph-Server and HugeGraph-Studio
    257. -u
    258. Download url prefix path of HugeGraph-Server and HugeGraph-Studio
    259. * -v
    260. Version of HugeGraph-Server and HugeGraph-Studio
    261. start-all Start HugeGraph-Server and HugeGraph-Studio
    262. Usage: start-all [options]
    263. Options:
    264. * -p
    265. Install path of HugeGraph-Server and HugeGraph-Studio
    266. * -v
    267. Version of HugeGraph-Server and HugeGraph-Studio
    268. clear Clear HugeGraph-Server and HugeGraph-Studio
    269. Usage: clear [options]
    270. Options:
    271. * -p
    272. Install path of HugeGraph-Server and HugeGraph-Studio
    273. stop-all Stop HugeGraph-Server and HugeGraph-Studio
    274. Usage: stop-all
    275. help Print usage
    276. Usage: help
    3.9 具体命令示例
    1. gremlin语句
    1. # 同步执行gremlin
    2. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph gremlin-execute --script 'g.V().count()'
    3. # 异步执行gremlin
    4. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph gremlin-schedule --script 'g.V().count()'
    2. 查看task情况
    1. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph task-list
    2. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph task-list --limit 5
    3. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph task-list --status success
    3. 图模式查看和设置
    4. 清理图
    1. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph graph-clear -c "I'm sure to delete all data"
    5. 图备份
    1. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph backup -t all --directory ./backup-test
    6. 周期性的备份
    1. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph --interval */2 * * * * schedule-backup -d ./backup-0.10.2
    7. 图恢复
    8. 图迁移
    1. ./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph migrate --target-url http://127.0.0.1:8090 --target-graph hugegraph