文档 1.0 版本已不再积极维护,你当前浏览的是一份归档快照。
最新文档请参阅 最新版本 。
HugeGraph-Server Quick Start 1 HugeGraph-Server概述 HugeGraph-Server 是 HugeGraph 项目的核心部分,包含Core、Backend、API等子模块。
Core模块是Tinkerpop接口的实现,Backend模块用于管理数据存储,目前支持的后端包括:Memory、Cassandra、ScyllaDB以及RocksDB,API模块提供HTTP Server,将Client的HTTP请求转化为对Core的调用。
文档中会大量出现HugeGraph-Server及HugeGraphServer这两种写法,其他组件也类似。这两种写法含义上并无大的差异,可以这么区分:HugeGraph-Server表示服务端相关组件代码,HugeGraphServer表示服务进程。
2 依赖 2.1 安装JDK-1.8 HugeGraph-Server 基于jdk-1.8开发,代码用到了较多jdk-1.8中的类和方法,请用户自行安装配置。
在往下阅读之前务必执行java -version命令查看jdk版本
2.2 安装GCC-4.3.0(GLIBCXX_3.4.10)或更新版本(可选) 如果使用的是RocksDB后端,请务必执行gcc --version命令查看gcc版本;若使用其他后端,则不需要。
3 部署 有三种方式可以部署HugeGraph-Server组件:
方式1:一键部署 方式2:下载tar包 方式3:源码编译 3.1 一键部署 HugeGraph-Tools提供了一键部署的命令行工具,用户可以使用该工具快速地一键下载、解压、配置并启动HugeGraphServer和HugeGraphStudio。
当然,还是得先下载HugeGraph-Tools的tar包。
1 wget https://github.com/hugegraph/hugegraph-tools/releases/download/v${ version } /hugegraph-tools-${ version } .tar.gz
2 tar -zxvf hugegraph-tools-${ version } .tar.gz
3 cd hugegraph-tools-${ version } 注:${version}为版本号,最新版本号可参考Download页面 ,或直接从Download页面点击链接下载
HugeGraph-Tools 的总入口脚本是bin/hugegraph,用户可以使用help子命令查看其用法,这里只介绍一键部署的命令。
1 bin/hugegraph deploy -v { hugegraph-version} -p { install-path} [ -u { download-path-prefix}] {hugegraph-version}表示要部署的HugeGraphServer及HugeGraphStudio的版本,用户可查看conf/version-mapping.yaml文件获取版本信息,{install-path}指定HugeGraphServer及HugeGraphStudio的安装目录,{download-path-prefix}可选,指定HugeGraphServer及HugeGraphStudio tar包的下载地址,不提供时使用默认下载地址,比如要启动 0.6 版本的HugeGraph-Server及HugeGraphStudio将上述命令写为bin/hugegraph deploy -v 0.6 -p services即可。
3.2 下载tar包
1 wget https://github.com/hugegraph/hugegraph/releases/download/v${ version } /hugegraph-${ version } .tar.gz
2 tar -zxvf hugegraph-${ version } .tar.gz 3.3 源码编译 下载HugeGraph源代码
1 git clone https://github.com/hugegraph/hugegraph.git 编译打包生成tar包
1 cd hugegraph
2 mvn package -DskipTests 执行日志如下:
1 ......
2 [ INFO] Reactor Summary:
3 [ INFO]
4 [ INFO] hugegraph .......................................... SUCCESS [ 0.003 s]
5 [ INFO] hugegraph-core ..................................... SUCCESS [ 15.335 s]
6 [ INFO] hugegraph-api ...................................... SUCCESS [ 0.829 s]
7 [ INFO] hugegraph-cassandra ................................ SUCCESS [ 1.095 s]
8 [ INFO] hugegraph-scylladb ................................. SUCCESS [ 0.313 s]
9 [ INFO] hugegraph-rocksdb .................................. SUCCESS [ 0.506 s]
10 [ INFO] hugegraph-mysql .................................... SUCCESS [ 0.412 s]
11 [ INFO] hugegraph-palo ..................................... SUCCESS [ 0.359 s]
12 [ INFO] hugegraph-dist ..................................... SUCCESS [ 7.470 s]
13 [ INFO] hugegraph-example .................................. SUCCESS [ 0.403 s]
14 [ INFO] hugegraph-test ..................................... SUCCESS [ 1.509 s]
15 [ INFO] ------------------------------------------------------------------------
16 [ INFO] BUILD SUCCESS
17 [ INFO] ------------------------------------------------------------------------
18 ...... 执行成功后,在hugegraph目录下生成 hugegraph-*.tar.gz 文件,就是编译生成的tar包。
4 配置 如果需要快速启动HugeGraph仅用于测试,那么只需要进行少数几个配置项的修改即可(见下一节)。
详细的配置介绍请参考配置文档 及配置项介绍
5 启动 启动分为"首次启动"和"非首次启动",这么区分是因为在第一次启动前需要初始化后端数据库,然后启动服务。
而在人为停掉服务后,或者其他原因需要再次启动服务时,因为后端数据库是持久化存在的,直接启动服务即可。
HugeGraphServer启动时会连接后端存储并尝试检查后端存储版本号,如果未初始化后端或者后端已初始化但版本不匹配时(旧版本数据),HugeGraphServer会启动失败,并给出错误信息。
如果需要外部访问HugeGraphServer,请修改rest-server.properties的restserver.url配置项
(默认为http://127.0.0.1:8080),修改成机器名或IP地址。
由于各种后端所需的配置(hugegraph.properties)及启动步骤略有不同,下面逐一对各后端的配置及启动做介绍。
5.1 Memory 修改 hugegraph.properties
1 backend = memory
2 serializer = text Memory后端的数据是保存在内存中无法持久化的,不需要初始化后端,这也是唯一一个不需要初始化的后端。
启动 server
1 bin/start-hugegraph.sh
2 Starting HugeGraphServer...
3 Connecting to HugeGraphServer ( http://127.0.0.1:8080/graphs) ....OK 提示的 url 与 rest-server.properties 中配置的 restserver.url 一致
5.2 RocksDB RocksDB是一个嵌入式的数据库,不需要手动安装部署, 要求 GCC 版本 >= 4.3.0(GLIBCXX_3.4.10),如不满足,需要提前升级 GCC
修改 hugegraph.properties
1 backend = rocksdb
2 serializer = binary
3 rocksdb.data_path = .
4 rocksdb.wal_path = . 初始化数据库(仅第一次启动时需要)
1 cd hugegraph-${ version }
2 bin/init-store.sh 启动server
1 bin/start-hugegraph.sh
2 Starting HugeGraphServer...
3 Connecting to HugeGraphServer ( http://127.0.0.1:8080/graphs) ....OK 5.3 Cassandra 用户需自行安装 Cassandra,要求版本 3.0 以上,下载地址
修改 hugegraph.properties
1 backend = cassandra
2 serializer = cassandra
3
4 # cassandra backend config
5 cassandra.host = localhost
6 cassandra.port = 9042
7 cassandra.username =
8 cassandra.password =
9 #cassandra.connect_timeout=5
10 #cassandra.read_timeout=20
11
12 #cassandra.keyspace.strategy=SimpleStrategy
13 #cassandra.keyspace.replication=3 初始化数据库(仅第一次启动时需要)
1 cd hugegraph-${ version }
2 bin/init-store.sh
3 Initing HugeGraph Store...
4 2017-12-01 11:26:51 1424 [ main] [ INFO ] com.baidu.hugegraph.HugeGraph [] - Opening backend store: 'cassandra'
5 2017-12-01 11:26:52 2389 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Failed to connect keyspace: hugegraph, try init keyspace later
6 2017-12-01 11:26:52 2472 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Failed to connect keyspace: hugegraph, try init keyspace later
7 2017-12-01 11:26:52 2557 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Failed to connect keyspace: hugegraph, try init keyspace later
8 2017-12-01 11:26:53 2797 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Store initialized: huge_graph
9 2017-12-01 11:26:53 2945 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Store initialized: huge_schema
10 2017-12-01 11:26:53 3044 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Store initialized: huge_index
11 2017-12-01 11:26:53 3046 [ pool-3-thread-1] [ INFO ] com.baidu.hugegraph.backend.Transaction [] - Clear cache on event 'store.init'
12 2017-12-01 11:26:59 9720 [ main] [ INFO ] com.baidu.hugegraph.HugeGraph [] - Opening backend store: 'cassandra'
13 2017-12-01 11:27:00 9805 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Failed to connect keyspace: hugegraph1, try init keyspace later
14 2017-12-01 11:27:00 9886 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Failed to connect keyspace: hugegraph1, try init keyspace later
15 2017-12-01 11:27:00 9955 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Failed to connect keyspace: hugegraph1, try init keyspace later
16 2017-12-01 11:27:00 10175 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Store initialized: huge_graph
17 2017-12-01 11:27:00 10321 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Store initialized: huge_schema
18 2017-12-01 11:27:00 10413 [ main] [ INFO ] com.baidu.hugegraph.backend.store.cassandra.CassandraStore [] - Store initialized: huge_index
19 2017-12-01 11:27:00 10413 [ pool-3-thread-1] [ INFO ] com.baidu.hugegraph.backend.Transaction [] - Clear cache on event 'store.init' 启动server
1 bin/start-hugegraph.sh
2 Starting HugeGraphServer...
3 Connecting to HugeGraphServer ( http://127.0.0.1:8080/graphs) ....OK 5.4 ScyllaDB 用户需自行安装 ScyllaDB,推荐版本 2.1 以上,下载地址
修改 hugegraph.properties
1 backend = scylladb
2 serializer = scylladb
3
4 # cassandra backend config
5 cassandra.host = localhost
6 cassandra.port = 9042
7 cassandra.username =
8 cassandra.password =
9 #cassandra.connect_timeout=5
10 #cassandra.read_timeout=20
11
12 #cassandra.keyspace.strategy=SimpleStrategy
13 #cassandra.keyspace.replication=3 由于 scylladb 数据库本身就是基于 cassandra 的"优化版",如果用户未安装 scylladb ,也可以直接使用 cassandra 作为后端存储,只需要把 backend 和 serializer 修改为 scylladb,host 和 post 指向 cassandra 集群的 seeds 和 port 即可,但是并不建议这样做,这样发挥不出 scylladb 本身的优势了。
初始化数据库(仅第一次启动时需要)
1 cd hugegraph-${ version }
2 bin/init-store.sh 启动server
1 bin/start-hugegraph.sh
2 Starting HugeGraphServer...
3 Connecting to HugeGraphServer ( http://127.0.0.1:8080/graphs) ....OK 5.5 HBase 用户需自行安装 HBase,要求版本 2.0 以上,下载地址
修改 hugegraph.properties
1 backend = hbase
2 serializer = hbase
3
4 # hbase backend config
5 hbase.hosts = localhost
6 hbase.port = 2181
7 # Note: recommend to modify the HBase partition number by the actual/env data amount & RS amount before init store
8 # it may influence the loading speed a lot
9 #hbase.enable_partition=true
10 #hbase.vertex_partitions=10
11 #hbase.edge_partitions=30 初始化数据库(仅第一次启动时需要)
1 cd hugegraph-${ version }
2 bin/init-store.sh 启动server
1 bin/start-hugegraph.sh
2 Starting HugeGraphServer...
3 Connecting to HugeGraphServer ( http://127.0.0.1:8080/graphs) ....OK 更多其它后端配置可参考配置项介绍
6 访问Server 6.1 服务启动状态校验 jps查看服务进程
1 jps
2 6475 HugeGraphServercurl请求RESTfulAPI
1 echo ` curl -o /dev/null -s -w %{ http_code} "http://localhost:8080/graphs/hugegraph/graph/vertices" ` 返回结果200,代表server启动正常
6.2 请求Server HugeGraphServer的RESTful API包括多种类型的资源,典型的包括graph、schema、gremlin、traverser和task,
graph包含vertices、edgesschema 包含vertexlabels、 propertykeys、 edgelabels、indexlabelsgremlin包含各种Gremlin语句,如g.v(),可以同步或者异步执行traverser包含各种高级查询,包括最短路径、交叉点、N步可达邻居等task包含异步任务的查询和删除6.2.1 获取hugegraph的顶点及相关属性
1 curl http://localhost:8080/graphs/hugegraph/graph/vertices 说明
由于图的点和边很多,对于 list 型的请求,比如获取所有顶点,获取所有边等,Server 会将数据压缩再返回,
所以使用 curl 时得到一堆乱码,可以重定向至 gunzip 进行解压。推荐使用 Chrome 浏览器 + Restlet 插件发送 HTTP 请求进行测试。
1 curl "http://localhost:8080/graphs/hugegraph/graph/vertices" | gunzip 当前HugeGraphServer的默认配置只能是本机访问,可以修改配置,使其能在其他机器访问。
1 vim conf/rest-server.properties
2
3 restserver.url=http://0.0.0.0:8080 响应体如下:
1 {
2 "vertices" : [
3 {
4 "id" : "2lop" ,
5 "label" : "software" ,
6 "type" : "vertex" ,
7 "properties" : {
8 "price" : [
9 {
10 "id" : "price" ,
11 "value" : 328
12 }
13 ],
14 "name" : [
15 {
16 "id" : "name" ,
17 "value" : "lop"
18 }
19 ],
20 "lang" : [
21 {
22 "id" : "lang" ,
23 "value" : "java"
24 }
25 ]
26 }
27 },
28 {
29 "id" : "1josh" ,
30 "label" : "person" ,
31 "type" : "vertex" ,
32 "properties" : {
33 "name" : [
34 {
35 "id" : "name" ,
36 "value" : "josh"
37 }
38 ],
39 "age" : [
40 {
41 "id" : "age" ,
42 "value" : 32
43 }
44 ]
45 }
46 },
47 ...
48 ]
49 } 详细的API请参考RESTful-API 文档
7 停止Server
1 $cd hugegraph-${ version }
2 $bin /stop-hugegraph.sh