JanusGraph基礎(chǔ)1:配置

JanusGraph圖形數(shù)據(jù)庫集群由一個(gè)或多個(gè)JanusGraph實(shí)例組成搪花。 要打開JanusGraph實(shí)例,必須提供一個(gè)配置撮竿,該配置指定應(yīng)如何設(shè)置JanusGraph幢踏。

JanusGraph配置可以指定JanusGraph使用哪些組件,控制JanusGraph部署的所有可選內(nèi)容房蝉,并提供許多調(diào)整選項(xiàng)以使得JanusGraph集群達(dá)到最佳性能。

JanusGraph配置至少需要定義一個(gè)持久引擎搭幻,JanusGraph會(huì)將其用作存儲(chǔ)后端檀蹋。 存儲(chǔ)后端頁面列出了所有可支持的持久引擎以及如何分別配置它們。 如果需要高級(jí)圖形查詢支持(例如俯逾,全文搜索,地理位置信息搜索或范圍查詢)皇筛,則必須配置其他索引后端识脆。 有關(guān)詳細(xì)信息善已,請(qǐng)參見索引后端 如果需要考慮查詢性能离例,則應(yīng)啟用緩存。 緩存配置和調(diào)整在JanusGraph緩存中進(jìn)行了描述宫蛆。

配置的栗子??

以下是一些示例配置文件,以演示如何配置最常用的存儲(chǔ)后端想虎,索引系統(tǒng)和性能組件叛拷。這僅涵蓋了可用配置選項(xiàng)的一小部分。
參考 配置參考 以了解全部的可選項(xiàng)忿薇。

Cassandra+Elasticsearch

將JanusGraph設(shè)置為使用本地運(yùn)行的Cassandra持久引擎和遠(yuǎn)程ES索引系統(tǒng):

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設(shè)置為使用遠(yuǎn)程運(yùn)行的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設(shè)置為用BerkeleyDB作為嵌入式持久性引擎筋栋,并將Elasticsearch用作嵌入式索引系統(tǒng)。

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

配置參考詳細(xì)描述了所有這些配置選項(xiàng)抢腐。 JanusGraph發(fā)行版的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 /目錄中有幾個(gè)示例的配置文件,可使用他們快速開始JanusGraph授瘦。 這些文件的路徑可以配置到JanusGraphFactory.open(...)竟宋,如下所示:

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

使用配置

根據(jù)不同的實(shí)例化模式有幾種不同的方式用于配置JanusGraph。

JanusGraphFactory

Gremlin Console

JanusGraph發(fā)行版包含一個(gè)命令行工具Gremlin Console徒欣,可以用來與JanusGraph進(jìn)行交互蜗字,并且很容易上手脂新。 調(diào)用bin/gremlin.sh(Unix / Linux)或bin/gremlin.bat(Windows)來啟動(dòng)控制臺(tái)粗梭,然后使用存儲(chǔ)在可訪問的屬性配置文件中的默認(rèn)配置打開JanusGraph:

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

JanusGraph Embedded

我們還可以在基于JVM的用戶應(yīng)用程序中通過調(diào)用JanusGraphFactory類來啟動(dòng)一個(gè)嵌入的JanusGraph圖實(shí)例断医。在這樣的情況下,JanusGraph是這個(gè)應(yīng)用程序的一部分鉴嗤,而且這個(gè)應(yīng)用程序可以通過公共API接口方便的調(diào)用JanusGraph。

Short Codes

如果先前已經(jīng)配置了JanusGraph圖集群和/或僅需要定義存儲(chǔ)后端兔簇,則JanusGraphFactory可以接收以冒號(hào)分隔的字符串表示形式荣挨,用來傳遞存儲(chǔ)后端名稱和主機(jī)名或目錄朴摊,如下所示。

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

JanusGraph Server

JanusGraph本身也可以認(rèn)為是一組沒有執(zhí)行線程的jar文件口锭。 有兩種連接和使用JanusGraph數(shù)據(jù)庫的基本模式:

  1. 一個(gè)程序的可執(zhí)行線程可以通過調(diào)用嵌入的JanusGraph方式來使用JanusGraph介杆。

  2. JanusGraph打包了一個(gè)可長(zhǎng)期運(yùn)行的服務(wù)器進(jìn)程,啟動(dòng)該進(jìn)程后荆隘,它允許遠(yuǎn)程客戶端或運(yùn)行在單獨(dú)程序中的邏輯調(diào)用JanusGraph赴背。 這個(gè)長(zhǎng)期運(yùn)行的服務(wù)器進(jìn)程稱為** JanusGraph Server **。

JanusGraph Server 使用Apache TinkerPopGremlin Server 堆棧來處理客戶端請(qǐng)求凰荚。JanusGraph提供了開箱即用的配置,可快速啟動(dòng)JanusGraph Server缆毁,但可以更改配置以提供更多功能到涂。

通過位于JanusGraph發(fā)行版./conf/gremlin-server目錄中的JanusGraph Server yaml配置文件來配置JanusGraph Server颁督。 要使用JanusGraph Server配置一個(gè)圖實(shí)例(JanusGraph`)浇雹,JanusGraph Server配置文件需要以下設(shè)置:

...
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這一個(gè)條目中定義了‘捆綁物bindings’來明確JanusGraph的配置箫爷。在上面的栗子中,把 graph綁定到了conf/janusgraph-berkeleyje.properties這個(gè)配置文件上虎锚。plugins這個(gè)條目啟用了JanusGraph Gremlin Plugin,這樣可以自動(dòng)導(dǎo)入JanusGraph類效斑,以便可以在遠(yuǎn)程提交的腳本中引用它們柱徙。

想了解更多關(guān)于JanusGraph Server 的配置和使用方法可參見 JanusGraph Server.

服務(wù)器分配

JanusGraph zip文件包含一個(gè)快速啟動(dòng)服務(wù)器組件,該組件有助于簡(jiǎn)化和快速啟動(dòng)Gremlin Server和JanusGraph敌完。 調(diào)用bin/janusgraph.sh start來啟動(dòng)Gremlin Server,并使用Cassandra和Elasticsearch做后端羊初。

- 注意事項(xiàng)
為了安全起見, Elasticsearch 和 `janusgraph.sh` 應(yīng)該使用非root賬戶啟動(dòng)晦攒。

全局配置

JanusGraph的配置選項(xiàng)區(qū)分為本地配置選項(xiàng)和全局配置選項(xiàng)得哆。 本地配置選項(xiàng)適用于單個(gè)JanusGraph實(shí)例。 全局配置選項(xiàng)適用于集群中的所有實(shí)例贩据。 更具體地說,JanusGraph為配置選項(xiàng)區(qū)分了以下五個(gè)級(jí)別:

  • LOCAL: 這些選項(xiàng)僅適用于單個(gè)JanusGraph實(shí)例讼庇,并在初始化JanusGraph實(shí)例時(shí)提供的配置文件中指定近尚。

  • MASKABLE: 本地配置文件可以為單個(gè)JanusGraph實(shí)例覆蓋這些配置選項(xiàng)。 如果本地配置文件未指定該選項(xiàng)歼跟,則從全局JanusGraph群集配置中讀取其值。

  • GLOBAL: 這些選項(xiàng)始終從集群配置中讀取留瞳,不能基于實(shí)例進(jìn)行覆蓋骚秦。

  • GLOBAL_OFFLINE: 類似于 GLOBAL, 但是可以更改,更改這些選項(xiàng)需要重新啟動(dòng)群集作箍,以確保整個(gè)群集中的值相同。

  • FIXED: 類似于 GLOBAL, 但是一旦JanusGraph集群初始化荧止,就無法更改該值阶剑。

當(dāng)?shù)谝粋€(gè)集群中的JanusGraph實(shí)例啟動(dòng)時(shí),將從提供的本地配置文件中初始化全局配置選項(xiàng)素邪。 隨后递宅,通過JanusGraph的管理API更改全局配置選項(xiàng)。 要訪問管理API办龄,請(qǐng)?jiān)诖蜷_的JanusGraph實(shí)例句柄g上調(diào)用g.getManagementSystem()俐填。 例如翔忽,要更改JanusGraph群集上的默認(rèn)緩存行為可以使用下面的栗子:

mgmt = graph.openManagement()
mgmt.get('cache.db-cache')
// Prints the current config setting 輸出當(dāng)前配置
mgmt.set('cache.db-cache', true)
// Changes option 修改配置
mgmt.get('cache.db-cache')
// Prints 'true'輸出 
mgmt.commit()
// Changes take effect

修改離線配置

更改配置選項(xiàng)不會(huì)影響正在運(yùn)行的實(shí)例,僅會(huì)在新啟動(dòng)的實(shí)例上生效驶悟。 更改 GLOBAL_OFFLINE 配置選項(xiàng)需要重新啟動(dòng)群集材失,以便更改對(duì)所有實(shí)例立即生效。 要更改 GLOBAL_OFFLINE 選項(xiàng),請(qǐng)按照以下步驟操作:

  • 只保留一個(gè)集群中的實(shí)例熊响,其他所有實(shí)例全部關(guān)掉
  • 連接到該實(shí)例
  • 確認(rèn)所有事務(wù)都已經(jīng)關(guān)閉
  • 確認(rèn)不會(huì)有新的事務(wù)啟動(dòng) (i.e. 集群必須是下線模式)
  • 啟動(dòng)管理API
  • 修改配置選項(xiàng)
  • 提交配置诗赌,該調(diào)用會(huì)自動(dòng)關(guān)閉實(shí)例
  • 重啟全部實(shí)例

要了解全部配置詳情請(qǐng)參考 配置說明 包括配置選項(xiàng)和選項(xiàng)的配置范圍。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洪碳,一起剝皮案震驚了整個(gè)濱河市叼屠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纯趋,老刑警劉巖冷离,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件西剥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瞭空,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門南捂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旧找,“玉大人,你說我怎么就攤上這事鞭缭∥和牵” “怎么了?”我有些...
    開封第一講書人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵沦童,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我躏精,道長(zhǎng)鹦肿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任瞭吃,我火速辦了婚禮涣旨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘霹陡。我一直安慰自己,他們只是感情好攒霹,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開白布浆洗。 她就那樣靜靜地躺著,像睡著了一般抠刺。 火紅的嫁衣襯著肌膚如雪摘昌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,895評(píng)論 1 314
  • 那天买优,我揣著相機(jī)與錄音挺举,去河邊找鬼烘跺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛梧喷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铺敌,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼偿凭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了痰哨?” 一聲冷哼從身側(cè)響起匾嘱,我...
    開封第一講書人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撬讽,沒想到半個(gè)月后悬垃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酱床,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年趟佃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罐寨。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡序矩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓶蝴,到底是詐尸還是另有隱情租幕,我是刑警寧澤,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布男窟,位于F島的核電站,受9級(jí)特大地震影響歉眷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淑际,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一凉唐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧淡溯,春花似錦簿训、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夫晌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間所袁,已是汗流浹背凶掰。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留前翎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓鱼填,卻偏偏與公主長(zhǎng)得像毅戈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赘理,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容