1 概述
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版本
java -version
2.2 安装GCC-4.3.0(GLIBCXX_3.4.10)或更新版本(可选)
如果使用的是RocksDB后端,请务必执行gcc --version命令查看gcc版本;若使用其他后端,则不需要。
gcc --version
3 部署
有三种方式可以部署HugeGraph-Server组件:
方式1:一键部署
方式2:下载tar包
方式3:源码编译
本文采用方式2:下载HugeGraph的tar包进行安装部署
3.1 下载tar包
# 方式一:终端下使用wget下载(具体下载地址需要根据情况修改)
$ wget https://github.com/hugegraph/hugegraph/releases/download/v${version}/hugegraph-${version}.tar.gz
# 解压
$ tar -zxvf hugegraph-${version}.tar.gz
# 方式二:浏览器下载(具体下载地址需要根据情况修改)
$ HugeGraph的github仓库下载HugeGraph:https://github.com/hugegraph
# 解压
$ hugegraph-${version}.tar.gz
4配置:
4.1 进入安装好的HugeGraph目录,查看conf中的配置文件:
为了实现在外网浏览器访问HugeGraph服务,先在服务器终端进入安装好的HugeGraph-0.9.2目录,再进入conf目录,需要修改以下的配置文件:rest-server.properties 、 gremlin-driver-settings.yaml 、 hugegraph.properties
[root@cdh1 conf]# pwd
/Programe_Files/HugeGraph/hugegraph-0.9.2/conf
[root@cdh1 conf]# ll
total 28
-rw-rw-r-- 1 2000 2000 177 Sep 10 17:00 gremlin-driver-settings.yaml
-rw-rw-r-- 1 2000 2000 2275 Apr 19 20:12 gremlin-server.yaml
-rw-rw-r-- 1 2000 2000 942 Sep 10 18:20 hugegraph.properties
-rw-rw-r-- 1 2000 2000 1723 Apr 19 20:12 log4j2.xml
-rw-rw-r-- 1 2000 2000 209 Apr 19 20:12 remote-objects.yaml
-rw-rw-r-- 1 2000 2000 239 Apr 19 20:12 remote.yaml
-rw-rw-r-- 1 2000 2000 219 Sep 10 15:30 rest-server.properties
4.2 修改conf中的配置文件:
(1)修改配置文件:rest-server.properties
因为也需要使用外网访问HugeGraph,所以要将restserver这一项修改为:http://0.0.0.0:8080。(ip设置为:0.0.0.0可以让同一网段的机器都可以访问,8080表示你的电脑提供的端口号,根据你自己的需要修改)。建议修改为:http://0.0.0.0,除非自己电脑上访问HugeGraph。
[root@cdh1 conf]# pwd
/Programe_Files/HugeGraph/hugegraph-0.9.2/conf
[root@cdh1 conf]# vim rest-server.properties
# 下面是vim打开的结果展示:
# bind url
restserver.url=http://0.0.0.0:8080
# graphs list with pair NAME:CONF_PATH
graphs=[hugegraph:conf/hugegraph.properties]
# authentication
#auth.require_authentication=
#auth.admin_token=
#auth.user_tokens=[]
(2)修改配置文件:gremlin-driver-settings.yaml
这里的port端口号,修改为上一步rest-server.properties中的,restserver.url所设置的端口号。
[root@cdh1 conf]# pwd
/Programe_Files/HugeGraph/hugegraph-0.9.2/conf
[root@cdh1 conf]# vim gremlin-driver-settings.yaml
# 下面是vim打开的结果展示:
hosts: [localhost]
port: 8080
serializer: {
className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0,
config: {
serializeResultToString: false
}
}
(2)修改配置文件:hugegraph.properties
这里修改的是存储方式,方式一表示Memory方式存储。Memory后端的数据是保存在内存中无法持久化的,不需要初始化后端,这也是唯一一个不需要初始化的后端。方式二表示rocksdb方式存储,可以持久化存储数据,需要初始化存储后端。具体修改方式如下:
[root@cdh1 conf]# pwd
/Programe_Files/HugeGraph/hugegraph-0.9.2/conf
[root@cdh1 conf]# vim hugegraph.properties
# 下面是vim打开的部分结果展示:(只显示了我们需要关注的几项)
#修改方式一:
backend=memory
serializer=text
store=hugegraph
#修改方式二:
backend=rocksdb
serializer=binary
store=hugegraph
4.3 启动 server(二选一)
(1)方式一:memory存储方式的启动方式server:
[root@cdh1 hugegraph-0.9.2]# pwd
/Programe_Files/HugeGraph/hugegraph-0.9.2
[root@cdh1 hugegraph-0.9.2]# bin/start-hugegraph.sh # 这里是memory存储方式的启动方式
(2)方式二:rocksdb存储方式的启动方式server:
[root@cdh1 hugegraph-0.9.2]# pwd
/Programe_Files/HugeGraph/hugegraph-0.9.2
[root@cdh1 hugegraph-0.9.2]# bin/init-store.sh # 初始化数据库(仅第一次启动时需要)
[root@cdh1 hugegraph-0.9.2]# bin/start-hugegraph.sh # 这里是rocksdb存储方式的启动方式
(官方网站对于配置文件中的参数进行了详细的讲解:配置文档及配置项)
5 访问Server
5.1 服务启动状态校验
jps查看服务进程
$ jps
6475 HugeGraphServer
curl请求RestfulAPI
$ echo `curl -o /dev/null -s -w %{http_code} "http://localhost:8080/graphs/hugegraph/graph/vertices"`
返回结果200,代表server启动正常
5.2 请求Server
HugeGraphServer的RESTful API包括多种类型的资源,典型的包括graph、schema、gremlin、traverser和task,
graph包含vertices、edges
schema 包含vertexlabels、 propertykeys、 edgelabels、indexlabels
gremlin包含各种Gremlin语句,如g.v(),可以同步或者异步执行
traverser包含各种高级查询,包括最短路径、交叉点、N步可达邻居等
task包含异步任务的查询和删除
5.2.1 获取hugegraph的顶点及相关属性
$ curl http://localhost:8080/graphs/hugegraph/graph/vertices
说明
由于图的点和边很多,对于 list 型的请求,比如获取所有顶点,获取所有边等,Server 会将数据压缩再返回, 所以使用 curl 时得到一堆乱码,可以重定向至 gunzip 进行解压。推荐使用 Chrome 浏览器 + Restlet 插件发送 HTTP 请求进行测试。
curl "http://localhost:8080/graphs/hugegraph/graph/vertices" | gunzip
当前HugeGraphServer的默认配置只能是本机访问,可以修改配置,使其能在其他机器访问。
$ vim conf/rest-server.properties
# 修改配置文件项restserver为 : restserver.url=http://0.0.0.0:8080
# 停止Server
$ cd hugegraph-${version}
$ bin/stop-hugegraph.sh
注意:当出现多个HugeGraphServer,需要全部关闭,然后再重新开启HugeGraphServer,否则可能会出现异常:(linux系统kill一些类名称相同的进程)
# kill一些类名称相同的进程:HugeGraphServer
$ jps | grep "HugeGraphServer" | awk '{print $1}' | xargs kill
end:整个HugeGraph环境已经安装完成,如果需要浏览器访问还需要安装HugeGraph-Studio,安装详情请参考我的下一篇文章:HugeGraph-Studio安装教程
参考教程:
HugeGraph中文官网
准备执行Gremlin的图形化环境
#End----------------------------------------------------------------------------------
文章为原创,转载请注明出处。
欢迎大家对我的文章中的疑问进行留言,多多交流