当前位置: 首页 > news >正文

elasticsearch 嵌入式_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

73ca142942df79afdbb3c825b3d6e6cb.png

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":0}]},"meta":{"@type":"g:Map","@value":[]}}}

相关文章:

  • mysql数据库怎末导出函数_MySQL数据库之mysql 导入导出数据库以及函数、存储过程的介绍...
  • Mysql 数组放进表里_新人求大神教教:如何把一个一维数组存入mysql 表格中
  • rabbitmq支持两个消费者同时提取数据吗_认识RabbitMQ从这篇文章开始
  • 安装mysql什么版本号_Linux安装MySQL以及版本说明
  • mysql的checkpoint_mysql 之 checkpoint和LSN详解
  • asp.net 调mysql过程_asp.net c# java调用mysql存储过程方法
  • java和Mysql数据一致性_Redis缓存和MySQL数据一致性方案详解
  • mysql double 转string类型转换_String类型转化为double类型的问题
  • mysql数据库命令 单选_MySQL常用命令
  • 为什么a链接不起作用了_考前必读:原理题难点——最高点是平衡点?催化剂为什么能提高产率?...
  • python随机数比大小_Python实现基于权重的随机数2种方法
  • dao interface运用_简单DAO层示例
  • python爬虫框架论文开题报告范文_基于Web爬虫系统设计开题报告
  • mysql中查询数字字符串很慢_mysql获取字符串中数字的查询语句
  • mysql的内存数据库_内存数据库
  • Angular2开发踩坑系列-生产环境编译
  • HashMap剖析之内部结构
  • HTTP那些事
  • JavaScript中的对象个人分享
  • JAVA之继承和多态
  • MySQL数据库运维之数据恢复
  • Redis 中的布隆过滤器
  • 初识 webpack
  • 动态魔术使用DBMS_SQL
  • 强力优化Rancher k8s中国区的使用体验
  • 入门到放弃node系列之Hello Word篇
  • 写给高年级小学生看的《Bash 指南》
  • 一份游戏开发学习路线
  • 移动端唤起键盘时取消position:fixed定位
  • 白色的风信子
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​Spring Boot 分片上传文件
  • # 数据结构
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (bean配置类的注解开发)学习Spring的第十三天
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (八)Flask之app.route装饰器函数的参数
  • (二)斐波那契Fabonacci函数
  • (力扣)循环队列的实现与详解(C语言)
  • (三)uboot源码分析
  • (转)Google的Objective-C编码规范
  • (转)Windows2003安全设置/维护
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .bat批处理(六):替换字符串中匹配的子串
  • .equals()到底是什么意思?
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET delegate 委托 、 Event 事件
  • .NET Micro Framework 4.2 beta 源码探析
  • .net mvc 获取url中controller和action
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .Net语言中的StringBuilder:入门到精通
  • @EventListener注解使用说明
  • @Transient注解