环境信息:
- Centos 7
- Java 8
- HBase 2.2.4
- ElasticSearch 7.6.1
- JanusGraph 0.5.2
基于上一篇博文《JanusGraph本地安装》的配置进行修改,即可实现远程服务器模式。
一、复制conf/janusgraph-hbase-es.properties到conf/gremlin-server/目录下
修改名字以便识别
cp conf/janusgraph-hbase-es.properties conf/gremlin-server/janusgraph-hbase-es-server.properties
二、复制conf/gremlin-server/gremlin-server.yaml
修改名字以便识别
cp conf/gremlin-server/gremlin-server.yaml conf/gremlin-server/ws-http-gremlin-server.yaml
三、修改配置文件
vi conf/gremlin-server/ws-http-gremlin-server.yaml
# 配置项
host: 0.0.0.0 # 服务器节点IP地址,根据当前机器和网络环境实际情况填写
port: 8182
scriptEvaluationTimeout: 30000
channelizer: org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer # 同时支持Websocket 和 http 模式连接
graphs: {
graph: conf/gremlin-server/janusgraph-hbase-es-server.properties // 图后端配置
}
四、启动服务端
sh bin/gremlin-server.sh ./conf/gremlin-server/ws-http-gremlin-server.yaml
五、客户端连接
1. 修改remote.yaml
hosts: [localhost] # 根据填写服务器IP
2. 启动客户端
sh bin/gremlin.sh
3. 连接服务器
gremlin> :remote connect tinkerpop.server conf/remote.yaml # 连接服务器端
gremlin> :remote console
gremlin> graph # 加载图
gremlin> g # 相当于 g = graph.traversal()
gremlin> saturn = g.V().has('name', 'saturn').next()
==>v[4304]
六、JAVA客户端
1. 创建maven项目,编辑pom.xml
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-driver</artifactId>
<version>0.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-driver</artifactId>
<version>3.4.8</version>
</dependency>
2. 增加配置文件
在resources下创建
conf/remote-graph.properties 文件
gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
gremlin.remote.driver.clusterFile=conf/remote-objects.yaml
gremlin.remote.driver.sourceName=g
conf/remote-objects.yaml 文件
hosts: [ 0.0.0.0 ] // 服务端IP
port: 8182
serializer: {
className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0,
config: {
ioRegistries: [ org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry ]
}
}
3. 编写代码
package org.example;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal;
public class App
{
public static void main( String[] args ) throws Exception {
GraphTraversalSource g = traversal().withRemote("conf/remote-graph.properties");
Object herculesAge = g.V().has("name", "hercules").values("age").next();
System.out.println("Hercules is " + herculesAge + " years old.");
}
}
4. 输出结果
Hercules is 30 years old.
七、参考资料
https://github.com/JanusGraph/janusgraph/blob/master/docs/basics/server.md
https://github.com/JanusGraph/janusgraph/blob/master/docs/connecting/java.md