Core模块是Tinkerpop接口的实现,Backend模块用于管理数据存储,目前支持的后端包括:Memory、Cassandra、ScyllaDB以及RocksDB,API模块提供HTTP Server,将Client的HTTP请求转化为对Core的调用。

    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版本;若使用其他后端,则不需要。

    1. gcc --version

    有三种方式可以部署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页面点击链接下载

    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] ------------------------------------------------------------------------
    15. [INFO] BUILD SUCCESS
    16. [INFO] ------------------------------------------------------------------------
    17. ......

    执行成功后,在hugegraph目录下生成 hugegraph-*.tar.gz 文件,就是编译生成的tar包。

    4 配置

    如果需要快速启动HugeGraph仅用于测试,那么只需要进行少数几个配置项的修改即可(见下一节)。 详细的配置介绍请参考及配置项介绍

    启动分为”首次启动”和”非首次启动”,这么区分是因为在第一次启动前需要初始化后端数据库,然后启动服务。 而在人为停掉服务后,或者其他原因需要再次启动服务时,因为后端数据库是持久化存在的,直接启动服务即可。

    如果需要外部访问HugeGraphServer,请修改rest-server.propertiesrestserver.url配置项 (默认为http://127.0.0.1:8080),修改成机器名或IP地址。

    由于各种后端所需的配置(hugegraph.properties)及启动步骤略有不同,下面逐一对各后端的配置及启动做介绍。

    5.1 Memory

    修改 hugegraph.properties

    1. backend=memory
    2. serializer=text

    启动 server

    提示的 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. rocksdb.data_path=.
    3. 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

    修改 hugegraph.properties

    1. backend=cassandra
    2. serializer=cassandra
    3. # cassandra backend config
    4. cassandra.host=localhost
    5. cassandra.port=9042
    6. cassandra.username=
    7. cassandra.password=
    8. #cassandra.connect_timeout=5
    9. #cassandra.read_timeout=20
    10. #cassandra.keyspace.strategy=SimpleStrategy
    11. #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

    启动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. # cassandra backend config
    4. cassandra.host=localhost
    5. cassandra.username=
    6. cassandra.password=
    7. #cassandra.connect_timeout=5
    8. #cassandra.read_timeout=20
    9. #cassandra.keyspace.strategy=SimpleStrategy
    10. #cassandra.keyspace.replication=3

    初始化数据库(仅第一次启动时需要)

    1. cd hugegraph-${version}
    2. bin/init-store.sh

    启动server

    5.5 HBase

    修改 hugegraph.properties

    1. backend=hbase
    2. serializer=hbase
    3. # hbase backend config
    4. hbase.hosts=localhost
    5. hbase.port=2181

    初始化数据库(仅第一次启动时需要)

    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 HugeGraphServer

    curl请求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包含verticesedges
    • schema 包含vertexlabelspropertykeysedgelabelsindexlabels
    • gremlin包含各种Gremlin语句,如g.v(),可以同步或者异步执行
    • traverser包含各种高级查询,包括最短路径、交叉点、N步可达邻居等
    • task包含异步任务的查询和删除
    6.2.1 获取hugegraph的顶点及相关属性
    1. curl http://localhost:8080/graphs/hugegraph/graph/vertices

    说明

    1. 由于图的点和边很多,对于 list 型的请求,比如获取所有顶点,获取所有边等,Server 会将数据压缩再返回, 所以使用 curl 时得到一堆乱码,可以重定向至 gunzip 进行解压。推荐使用 Chrome 浏览器 + Restlet 插件发送 HTTP 请求进行测试。

      1. curl "http://localhost:8080/graphs/hugegraph/graph/vertices" | gunzip
    2. 当前HugeGraphServer的默认配置只能是本机访问,可以修改配置,使其能在其他机器访问。

      1. vim conf/rest-server.properties
      2. restserver.url=http://0.0.0.0:8080

    响应体如下:

    详细的API请参考RESTful-API文档

    1. $cd hugegraph-${version}
    2. $bin/stop-hugegraph.sh