(3)JanusGraph+HBase+ElasticSearch配置
配置
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
graph: conf/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":[]}}}
相关文章