JanusGraph基础1:配置

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

JanusGraph配置可以指定JanusGraph使用哪些组件,控制JanusGraph部署的所有可选内容,并提供许多调整选项以使得JanusGraph集群达到最佳性能。

JanusGraph配置至少需要定义一个持久引擎,JanusGraph会将其用作存储后端。 存储后端页面列出了所有可支持的持久引擎以及如何分别配置它们。 如果需要高级图形查询支持(例如,全文搜索,地理位置信息搜索或范围查询),则必须配置其他索引后端。 有关详细信息,请参见索引后端 如果需要考虑查询性能,则应启用缓存。 缓存配置和调整在JanusGraph缓存中进行了描述。

配置的栗子🌰

以下是一些示例配置文件,以演示如何配置最常用的存储后端,索引系统和性能组件。这仅涵盖了可用配置选项的一小部分。
参考 配置参考 以了解全部的可选项。

Cassandra+Elasticsearch

将JanusGraph设置为使用本地运行的Cassandra持久引擎和远程ES索引系统:

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+Caching

将JanusGraph设置为使用远程运行的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

将JanusGraph设置为用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目录包含其他配置示例。

更多示例

There are several example configuration files in the conf/ directory that can be used to get started with JanusGraph quickly. Paths to these files can be passed to JanusGraphFactory.open(...) as shown below:
conf /目录中有几个示例的配置文件,可使用他们快速开始JanusGraph。 这些文件的路径可以配置到JanusGraphFactory.open(...),如下所示:

// 使用默认的配置文件连接到本地 Cassandra 
graph = JanusGraphFactory.open("conf/janusgraph-cql.properties")
// 使用默认的配置文件连接到本地 HBase
graph = JanusGraphFactory.open("conf/janusgraph-hbase.properties")

使用配置

根据不同的实例化模式有几种不同的方式用于配置JanusGraph。

JanusGraphFactory

Gremlin Console

JanusGraph发行版包含一个命令行工具Gremlin Console,可以用来与JanusGraph进行交互,并且很容易上手。 调用bin/gremlin.sh(Unix / Linux)或bin/gremlin.bat(Windows)来启动控制台,然后使用存储在可访问的属性配置文件中的默认配置打开JanusGraph:

graph = JanusGraphFactory.open('path/to/configuration.properties')

JanusGraph Embedded

我们还可以在基于JVM的用户应用程序中通过调用JanusGraphFactory类来启动一个嵌入的JanusGraph图实例。在这样的情况下,JanusGraph是这个应用程序的一部分,而且这个应用程序可以通过公共API接口方便的调用JanusGraph。

Short Codes

如果先前已经配置了JanusGraph图集群和/或仅需要定义存储后端,则JanusGraphFactory可以接收以冒号分隔的字符串表示形式,用来传递存储后端名称和主机名或目录,如下所示。

graph = JanusGraphFactory.open('cql:localhost')
graph = JanusGraphFactory.open('berkeleyje:/tmp/graph')

JanusGraph Server

JanusGraph本身也可以认为是一组没有执行线程的jar文件。 有两种连接和使用JanusGraph数据库的基本模式:

  1. 一个程序的可执行线程可以通过调用嵌入的JanusGraph方式来使用JanusGraph。

  2. JanusGraph打包了一个可长期运行的服务器进程,启动该进程后,它允许远程客户端或运行在单独程序中的逻辑调用JanusGraph。 这个长期运行的服务器进程称为** JanusGraph Server **。

JanusGraph Server 使用Apache TinkerPopGremlin Server 堆栈来处理客户端请求。JanusGraph提供了开箱即用的配置,可快速启动JanusGraph Server,但可以更改配置以提供更多功能。

通过位于JanusGraph发行版./conf/gremlin-server目录中的JanusGraph Server yaml配置文件来配置JanusGraph Server。 要使用JanusGraph Server配置一个图实例(JanusGraph`),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这一个条目中定义了‘捆绑物bindings’来明确JanusGraph的配置。在上面的栗子中,把 graph绑定到了conf/janusgraph-berkeleyje.properties这个配置文件上。plugins这个条目启用了JanusGraph Gremlin Plugin,这样可以自动导入JanusGraph类,以便可以在远程提交的脚本中引用它们。

想了解更多关于JanusGraph Server 的配置和使用方法可参见 JanusGraph Server.

服务器分配

JanusGraph zip文件包含一个快速启动服务器组件,该组件有助于简化和快速启动Gremlin Server和JanusGraph。 调用bin/janusgraph.sh start来启动Gremlin Server,并使用Cassandra和Elasticsearch做后端。

- 注意事项
为了安全起见, Elasticsearch 和 `janusgraph.sh` 应该使用非root账户启动。

全局配置

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

修改离线配置

更改配置选项不会影响正在运行的实例,仅会在新启动的实例上生效。 更改 GLOBAL_OFFLINE 配置选项需要重新启动群集,以便更改对所有实例立即生效。 要更改 GLOBAL_OFFLINE 选项,请按照以下步骤操作:

  • 只保留一个集群中的实例,其他所有实例全部关掉
  • 连接到该实例
  • 确认所有事务都已经关闭
  • 确认不会有新的事务启动 (i.e. 集群必须是下线模式)
  • 启动管理API
  • 修改配置选项
  • 提交配置,该调用会自动关闭实例
  • 重启全部实例

要了解全部配置详情请参考 配置说明 包括配置选项和选项的配置范围。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容