JanusGraph配置
配置文件
JanusGraph数据库集群由一个或多个JanusGraph实例组成。要打开JanusGraph实例,必须提供一个配置,指定如何设置JanusGraph。
JanusGraph配置指定JanusGraph应该使用哪些组件,控制JanusGraph部署的所有操作方面,并提供许多调优选项以从JanusGraph集群获得最大性能。
JanusGraph配置至少必须定义JanusGraph应该用作存储后端的持久性引擎。存储后端列出了所有支持的持久性引擎以及如何分别配置它们。如果需要高级图形查询支持(例如全文搜索、地理位置搜索或范围查询),则必须配置额外的索引后端。有关详细信息,请参见索引后端。如果查询性能是一个问题,那么应该启用缓存。缓存配置和调优在JanusGraph Cache中描述。
配置示例
下面是一些示例配置文件,演示如何配置最常用的存储后端、索引系统和性能组件。这只涵盖了可用配置选项的一小部分。有关所有选项的完整列表,请参阅配置参考。
Cassandra+Elasticsearch
设置JanusGraph以使用本地运行的Cassandra持久性引擎和远程弹性搜索索引系统:
storage.backend=cql
storage.hostname=localhostindex.search.backend=elasticsearch
index.search.hostname=100.100.101.1, 100.100.101.2
index.search.elasticsearch.client-only=true
HBase+Caching
将JanusGraph设置为使用远程运行的HBase持久性引擎,并使用JanusGraph的缓存组件提高性能。
storage.backend=hbase
storage.hostname=100.100.101.1
storage.port=2181cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
BerkeleyDB
将JanusGraph设置为使用BerkeleyDB作为嵌入式持久化引擎,将Elasticsearch作为嵌入式索引系统。
storage.backend=berkeleyje
storage.directory=/tmp/graphindex.search.backend=elasticsearch
index.search.directory=/tmp/searchindex
index.search.elasticsearch.client-only=false
index.search.elasticsearch.local-mode=true
配置参考详细描述了所有这些配置选项。JanusGraph发行版的conf目录包含其他配置示例。
更多示例
conf/目录中有几个示例配置文件可用于快速入门JanusGraph。这些文件的路径可以传递到JanusGraphFactory.open(…),如下所示:
// Connect to Cassandra on localhost using a default configuration
graph = JanusGraphFactory.open("conf/janusgraph-cql.properties")
// Connect to HBase on localhost using a default configuration
graph = JanusGraphFactory.open("conf/janusgraph-hbase.properties")
使用配置
如何向JanuGraph提供配置取决于实例化模式。
JanusGraphFactory
Gremlin Console
JanusGraph发行版包含一个命令行Gremlin控制台,它使JanusGraph易于启动和交互。调用bin/gremlin.sh(Unix/Linux)或bin/gremlin.bat(Windows)启动控制台,然后使用工厂打开JanusGraph图形,其配置存储在可访问的属性配置文件中:
graph = JanusGraphFactory.open('path/to/configuration.properties')
JanusGraph Embedded
JanusGraphFactory还可以用于从基于JVM的用户应用程序中打开嵌入式JanusGraph实例。在这种情况下,JanusGraph是用户应用程序的一部分,应用程序可以通过其公共API直接调用JanusGraph。
Short Codes
如果JanusGraph集群以前已配置和/或只需要定义存储后端,JanusGraphFactory将接受以冒号分隔的字符串表示的存储后端名称和主机名或目录。
graph = JanusGraphFactory.open('cql:localhost')
graph = JanusGraphFactory.open('berkeleyje:/tmp/graph')
JanusGraph服务器
JanusGraph本身就是一组没有执行线程的jar文件。连接和使用JanusGraph数据库有两种基本模式:
- JanusGraph可以通过在客户端程序中嵌入JanusGraph调用来使用,该程序提供执行线程。
- JanusGraph打包了一个长时间运行的服务器进程,该进程在启动时允许在单独程序中运行的远程客户端或逻辑进行JanusGraph调用。这个长时间运行的服务器进程称为JanusGraph服务器。
对于JanuGraph服务器,JanuGraph使用ApacheTinkerpop堆栈的Gremlin服务器来服务客户机请求。JanuGraph提供了一个现成的配置,以便快速启动JanuGraph服务器,但可以更改配置,以提供广泛的服务器功能。
配置JanusGraph服务器是通过JanusGraph发行版的./conf/gremlin Server目录中的JanusGraph服务器yaml配置文件完成的。要使用图形实例(JanusGraph)配置JanusGraph服务器,JanusGraph服务器配置文件需要以下设置:
...
graphs: {graph: conf/janusgraph-berkeleyje.properties
}
scriptEngines: {gremlin-groovy: {plugins: { org.janusgraph.graphdb.tinkerpop.plugin.JanusGraphGremlinPlugin: {},org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {},org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {},org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]},org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}}
...
图的条目定义了到特定JanusGraph配置的绑定。在上面的例子中,它将graph绑定到位于conf/JanusGraph-berkeleyje.properties的JanusGraph配置。plugins条目启用JanusGraph Gremlin插件,该插件启用JanusGraph类的自动导入,以便在远程提交的脚本中引用它们。
了解有关在JanusGraph服务器中配置和使用JanusGraph服务器的更多信息。
服务器分发
JanusGraph zip文件包含一个快速入门服务器组件,可以帮助您更轻松地开始使用Gremlin服务器和JanusGraph。调用bin/janusgraph.sh start,用Cassandra和Elasticsearch启动Gremlin服务器。
Note
出于安全原因,Elasticsearch和janusgraph.sh必须在非根帐户下运行
Note
从0.5.1开始,它只是包含在完整的包版本中。
全局配置
JanusGraph区分了本地和全局配置选项。本地配置选项应用于单个JanusGraph实例。全局配置选项适用于集群中的所有实例。更具体地说,JanusGraph为配置选项区分了以下五个范围:
- LOCAL:这些选项仅适用于单个JanusGraph实例,并在初始化JanusGraph实例时提供的配置中指定。
- MASKABLE:本地配置文件可以覆盖单个JanusGraph实例的这些配置选项。如果本地配置文件没有指定该选项,则从全局JanusGraph集群配置读取其值。
- GLOBAL:这些选项总是从集群配置中读取,不能在实例的基础上被覆盖。
- GLOBAL_OFFLINE:与GLOBAL类似,但是更改这些选项需要重新启动集群,以确保整个集群中的值相同。
- FIXED:与GLOBAL类似,但是一旦JanusGraph集群初始化,就不能更改该值。
当集群中的第一个JanusGraph实例启动时,将从提供的本地配置文件初始化全局配置选项。随后,通过JanusGraph的管理API更改全局配置选项。要访问管理API,请对打开的JanusGraph实例句柄g调用g.getManagementSystem()。例如,要更改JanusGraph群集上的默认缓存行为,请执行以下操作:
mgmt = graph.openManagement()
mgmt.get('cache.db-cache')
// Prints the current config setting
mgmt.set('cache.db-cache', true)
// Changes option
mgmt.get('cache.db-cache')
// Prints 'true'
mgmt.commit()
// Changes take effect
更改脱机选项
更改配置选项不会影响正在运行的实例,只适用于新启动的实例。更改全局脱机配置选项需要重新启动群集,以便更改对所有实例立即生效。要更改全局脱机选项,请执行以下步骤:
- 关闭集群中除一个JanuGraph实例外的所有实例
- 连接到单个实例
- 确保所有正在运行的事务都已关闭
- 确保没有启动新事务(即群集必须脱机)
- 打开管理API
- 更改配置选项
- 调用commit,它将自动关闭图形实例
- 重新启动所有实例
有关包括每个选项的配置范围的更多信息,请参阅《配置参考》中的完整配置选项列表。
JanusGraph配置相关推荐
- JanusGraph服务器
JanusGraph 服务器 JanusGraph使用Gremlin服务器引擎作为服务器组件来处理和回答客户机查询.当封装在JanusGraph中时,Gremlin服务器称为JanusGraph服务器 ...
- 图解图库JanusGraph系列-解惑图数据库,你知道什么是图数据库吗?
解惑图数据库!你知道什么是图数据库吗? 大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 地址:htt ...
- 解惑图数据库!你知道什么是图数据库吗?
简介 为什么需要图数据库? 设想一个场景:在金融的反欺诈场景下,当一个用户小李 请求订单,我们可以设定一个规则: 获取该用户的身份证号.注册手机号.银行预留手机号.银行卡号.紧急联系人等信息 通过这些 ...
- 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化
背景 字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源.后续为了支持业务发展,做了很多修修补补的工作,系统 ...
- janusgraph整合mysql_JanusGraph多图配置 (cassandra)
JanusGraph多图配置目的 :一个端口开启后可根据句柄操作多个图 .(cassandra存储后端) 1.GremlinServer多图配置 服务器gremlin-server.yaml中可以设置 ...
- 需要监控JanusGraph的一些指标
一.官方文档中说明开启metrics可以监控JanusGraph中的指标: 1.开始,提交和回滚的事务数 2.每种存储后端的尝试和失败的操作类型 3.每种存储后端操作类型的响应时间分布 实际操作后,在 ...
- JanusGraph报错:Unknown external index backend
使用java连接JanusGraph进行创建图操作,报错地方是程序运行第50行代码其作用是生成混合索引,截图如下: 后在0.6版本官方文档发现有说明先贴一份截图: 具体说明如下: The exampl ...
- java 连接janusgraph_基于JanusGraph的大数据图数据库
导读 知识图谱是近来很火的概念,很多领域都希望能用知识图谱解决一些问题.在零售领域其实也有使用知识图谱的场景,比如阿里使用知识图谱进行商品智能导购以及商品"巡检",而我想试验着把知 ...
- java对象底层原存储结构图解_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构...
大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 转载文章请保留以下声明: 一:存储模式 留言或私信我,邀请你加入"图数据库交流"微信群! 1. ...
- JanusGraph 安装
下载地址:https://github.com/JanusGraph/janusgraph/releases/ 版本:Version 0.3.2 (June 16, 2019) 安装 解压 janus ...
最新文章
- 这个 AI 模型火上 GitHub 热榜第一,在线修复照片
- Java web 强制301跳转
- SpringCloud之Feign源码分析
- 技术解析系列 PouchContainer Goroutine Leak 检测实践
- new malloc
- 两条信号之间加电容_模电总结:第七章、波形的发生和信号的转换,正弦波振荡的电路...
- numpy元素特定条件查找过滤
- python中函数参数*args和**kw的区别
- Android ListView下拉刷新点击加载更多
- 杭电HDUacm2098
- LayUI中的内置模块之 工具集文档 - layui.util
- 秋招之8.31农行研发中心笔试
- java去除空格的函数_JAVA中去掉空格--trim函数
- 成立一年,手游交叉推广交易社区Chartboost已有8000款游戏加入
- 招聘简历管理系统的简单设计
- 用户要进行远程登录 必须在自己的计算机上,大学计算机基础上机考试题库3
- Microsoft Remote Desktop提示「Your session was disconnected」
- 什么样的人适合学习嵌入式开发
- C语言中如何输出一些特殊的字符
- 电竞AI之视觉篇:YOLO算法在电竞中的应用(Darknet + TF)