(3)JanusGraph+HBase+ElasticSearch配置

2022-03-21 00:00:00 修改 配置 接口 方式 验证

配置

JanusGraph图数据库集群由一个或多个JanusGraph实例组成。要打开JanusGraph实例,必须提供一个配置,指定如何设置JanusGraph。

JanusGraph配置指定JanusGraph应使用哪些组件,控制JanusGraph部署的所有操作方面,并提供许多调整选项以从JanusGraph集群获得大性能。

JanusGraph配置至少必须定义JanusGraph应该用作存储后端的持久性引擎。如果需要图形查询支持(例如全文搜索,地理搜索或范围查询),则必须配置其他索引后端。如果需要考虑查询性能,则应启用缓存。后续章节会描述到。

对应版本的兼容性查看https://github.com/JanusGraph/janusgraph/releases/tag/v0.3.1 或者: https://docs.janusgraph.org/latest/version-compat.html

1.JanusGraph+HBase+ElasticSearch配置

JanusGraph+HBase+ElasticSearch的安装主要分为四个部分:JanusGraph安装、HBase安装、ElasticSearch安装和Gremlin-Server配置。下面分别介绍这四个部分,后再介绍了下这个环境的日常使用命令。这里hbase我们使用CDH5.12.1版本中的hbase1.2.0 ,ES暂时使用JG自带的6.0.1版本,使用非root用户,用./bin/elasticsearch -d命令启动

PS:如果需要从外部连接ES,需要在janusgraphelasticsearch/config/elasticsearch.yml中配置监听的外部IP地址,例如: 

network.host: 0.0.0.0

修改了IP地址之后,启动可能会提示失败需要修改内容:   max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

在/etc/sysctl.conf文件末尾增加如下一行:

vm.max_map_count=26214


保存后,执行"sudo sysctl -p"让配置立即生效。可以通过如下命令查看是否生效:

sudo sysctl -a|grep vm.max_map_count


到这里JanusGraph就算装完成,是否觉得有些奇怪的是JanusGraph并没有启动什么进程服务之类的。这是因为JanusGraph本身就是一些Jar包,并没有什么服务。这里引出一个话题:访问JanusGraph数据的方式,也就是嵌入式和Gremlin-Server方式。嵌入式的方式就是直接通过JanusGraph的jar包去存取,只需要设定后端存储的IP地址即可。Gremlin-Server提供了一种RESTful接口的方式。

为了保证JausGraph+HBase+ElasticSearch环境搭建的完整性,这里将Gremlin-Server也搭建好。

注意:Gremlin-Server是在Tinkerpop中的叫法,在JanusGraph被成为JanusGraph Server。

2.配置JanusGraph Server

JanusGraph Server的配置分为两部分:janusgraph-hbase-es-server.properties 和gremlin-hbase-es-server.yaml。

2.1 janusgraph-hbase-es-server.properties的配置

在JG目录的conf下已经默认有了各种组合的配置,这里我们选择文件: janusgraph-hbase-es.properties。默认是本地环境配置,如果hbase或者es是远程的需要修改一下对应ip或端口。将该文件复制一份到conf/gremlin-server/下面。并改名janusgraph-hbase-es-server.properties


cp conf/janusgraph-hbase-es.properties 

        conf/gremlin-server/janusgraph-hbase-es-server.properties


修改文件属性:

gremlin.graph=org.janusgraph.core.JanusGraphFactory
storage.backend=hbase
storage.hostname=127.0.0.1
index.search.backend=elasticsearch
index.search.hostname=127.0.0.1


2.2 janusgraph-hbase-es-server.yaml的配置


拷贝conf/gremlin-server/下面的gremlin-server.yaml并作修改:

cp gremlin-server.yaml gremlin-hbase-es-server.yaml

    2.2.1修改channelizer和graphs

channelizer是关系访问gremlin-server的方式,它提供了WebSocket和Http两种方式,默认只配置了WebSocket,即

org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer。这里可以改为同时支持两种方式,如下:


channelizer: org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer

graphconf/gremlin-server/janusgraph-hbase-es-server.properties


3.启动JanusGraph Server


> nohup bin/gremlin-server.sh conf/gremlin-server/gremlin-hbase-es-server.yaml 

> jg-server.out 2>&1


4.JanusGraph Server测试验证

上面提到JanusGraph Server支持WebSocket和HTTP访问。下面将通过这两种方式来验证环境的正确性。

[1] WebSocket接口验证

通过Gremlin控制台远程连接JanusGraph Server是WebSocket方式,因此可以用这种方式来验证。

打开gremlin控制台


 

> gremlin.sh
gremlin> :remote connect tinkerpop.server conf/remote.yaml
==>Configured localhost/127.0.0.1:8182
gremlin> :> g.V().count()
==>0



g.V().count()是统计当前图数据库中的所有顶点。这里返回值为0.


[2] HTTP接口验证

HTTP接口验证要更简单,可以直接在浏览器输入IP地址+端口,后面跟Gremlin查询语言。示例如下:

 http://192.168.1.22:8182/?gremlin=g.V().count()

如果正常,会返回如下JSON结果:

{"requestId":"d3a895c5-082d-464f-8604-94e09f3946c4","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":[]}},"result":


{"data":{"@type":"g:List","@value":[{"@type":"g:Int64","@value":}]},"meta":{"@type":"g:Map","@value":[]}}}


相关文章