配置概要
基本配置示例
JanusGraph的基本配置主要包括使用的后端存储和索引的配置,如果需要高性能的查询还涉及缓存的配置。下面是针对不同存储和索引以及开启缓存的配置示例:
下面是使用本机安装的Cassandra作为后端存储,ElasticSearch作为索引后端的配置示例:
storage.backend=cql
storage.hostname=localhost
index.search.backend=elasticsearch
index.search.hostname=100.100.101.1, 100.100.101.2
index.search.elasticsearch.client-only=true
下面是使用远程安装的HBase作为后端存储,同时为了高性能的查询而开启JanusGraph缓存组件的配置示例:
storage.backend=hbase
storage.hostname=100.100.101.1
storage.port=2181
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
下面是使用BerkeleyDB作为嵌入式后端存储,ElasticSearch作为嵌入式索引后端的配置示例:
storage.backend=berkeleyje
storage.directory=/tmp/graph
index.search.backend=elasticsearch
index.search.directory=/tmp/searchindex
index.search.elasticsearch.client-only=false
index.search.elasticsearch.local-mode=true
后面的配置参考 章节将具体描述这些配置选项.
更多配置示例
在Janusgraph的 conf/ 路径下有许多的示例配置文件,可以直接用来快速启动Janusgraph。如下所示:
// 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")
JanusGraphFactory
Gremlin Console
可以通过运行JanusGraph版本自带的脚本bin/gremlin.sh (Unix/Linux) or bin/gremlin.bat (Windows)来打开Gremlin Console。并在Gremlin Console中利用factory和配置文件configuration.properties打开一个JanusGraph的图。
graph = JanusGraphFactory.open('path/to/configuration.properties')
JanusGraphFactory可以嵌入到应用中来打开JanusGraph图与应用运行在同一个JVM中。应用可以直接调用JanusGraph的API来访问JanusGraph图。
如果已经配置了JanusGraph集群而需要定义存储后端的时候,可以通过以下带冒号分隔符的方式对存储后端名称和主机名或目录进行配置,如下所示:
graph = JanusGraphFactory.open('cql:localhost')
graph = JanusGraphFactory.open('berkeleyje:/tmp/graph')
JanusGraph本身就是一组没有执行线程的jar文件。连接和使用JanusGraph图数据库有两种基本模式:
- 1. JanusGraph可以通过在客户端程序中嵌入JanusGraph调用来使用,该客户端程序提供执行线程。
- 2. JanusGraph长时间运行在单独程序中,这个长时间运行的服务器进程称为JanusGraph Server。
JanusGraph使用Apache TinkerPop技术栈中的Gremlin Server来响应客户端请求。JanusGraph为JanusGraph Server的提供了最简的默认配置来快速启动一个JanusGraph Server,但是也可以通过更改更多配置项来使得服务器功能更加丰富。
可以通过/conf/gremlin-server路径下的yml配置文件来对JanusGraph Server进行配置,如下所示:
...
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]}}}}
...
上述配置中的graphs配置的是JanusGraph使用的存储后端配置文件。plugins配置的是需要启用的Gremlin插件,以便客户端提交相关插件请求是能够处理响应。
更多的关于JanusGraph Server的配置,参照后面的章节JanusGraph Server。
全局配置示例
总体来说,JanusGraph的配置项分为本地配置和全局配置。本地配置应用于单个JanusGraph实例,全局配置应用于整个JanusGraph集群。严格意义上来说,JanusGraph配置项分为以下五种:
- LOCAL:local配置项只适用于单个JanusGraph实例。
- MASKABLE:MASKABLE配置项可以被本地配置文件中的配置覆盖。如果本地没有此配置项,则从集群中获取。
- GLOBAL:全局配置项是从集群中获取配置且不会被本地的配置项所覆盖。
- GLOBAL_OFFLINE:类似于GLOBAL配置项, 区别在于当修改这些配置项的时候需要重启集群从而确保配置项在整个集群中生效。
- FIXED:类似于GLOBAL配置项, 区别在于一旦集群初始化完成,这些配置项将无法进行修改。
当集群中第一个实例启动时,全局配置项将从本地配置文件初始化。后续的通过JanusGraph的管理API更改全局配置选项。调用g.getManagementSystem()来访问管理API。例如修改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
在集群中修改GLOBAL_OFFLINE配置项主要有以下几个步骤:
- 集群中保留一个实例运行,关闭其它实例。
- 连接到这个运行的实例。
- 确保所有运行的事务都已经关闭。
- 确保没有新的事务打开。
- 打开管理API。
- 修改配置项。
- 提交修改后实例将自动关闭。
- 重启所有实例。