Chapter 4. Configuration

一個(gè)JanusGraph數(shù)據(jù)庫集群可以包含一個(gè)或多個(gè)JanusGraph實(shí)例检访。需要提供一個(gè)配置用于創(chuàng)建一個(gè)JanusGraph實(shí)例。

JanusGraph配置指定了JanusGraph應(yīng)使用哪些組件,控制JanusGraph部署的所有操作崎脉,并提供許多配置選項(xiàng)使的JanusGraph集群獲得最大性能撬碟。

JanusGraph配置至少需要定義后端的存儲引擎。 第III部分“存儲后端”列出了所有支持的存儲引擎以及如何配置它們底靠。 如果需要高級圖查詢支持(例如全文搜索害晦,地理搜索或范圍查詢),則需要配置其他索引后端暑中。 有關(guān)詳細(xì)信息壹瘟,請參見第IV部分“索引后端”。 如果需要考慮查詢性能鳄逾,則應(yīng)啟用緩存稻轨。 緩存配置和調(diào)優(yōu)在第13章JanusGraph 緩存中描述。

4.1. 配置示例

下面是一些示例配置文件雕凹,用于演示如何配置最常用的存儲后端殴俱,索引系統(tǒng)和性能組件。 這僅涵蓋了可用配置選項(xiàng)的一小部分枚抵。 有關(guān)所有選項(xiàng)的完整列表线欲,請參閱第15章:配置參考。

4.1.1. Cassandra+Elasticsearch

設(shè)置JanusGraph使用本地運(yùn)行的Cassandra存儲引擎和遠(yuǎn)程Elasticsearch索引系統(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
4.1.2. HBase+Caching

設(shè)置JanusGraph使用遠(yuǎn)程運(yùn)行的HBase存儲引擎汽摹,為了獲取更好的性能李丰,同時(shí)使用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
4.1.3. BerkeleyDB

設(shè)置JanusGraph使用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

第15章:配置參考 詳細(xì)介紹了所有這些配置選項(xiàng)。 JanusGraph發(fā)行版的conf目錄包含其他配置示例圾旨。

4.1.4. 更多示例

已有幾個(gè)配置樣例文件在conf目錄下踱讨,可以用來快讀啟動(dòng)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")

4.2. 使用配置

配置如何提供給janusgraph取決于實(shí)例化模式砍的。

4.2.1. JanusGraphFactory
4.2.1.1. Gremlin Console

JanusGraph發(fā)行版包含一個(gè)命令行工具Gremlin Console痹筛,很容易的與JanusGraph互動(dòng)。執(zhí)行bin/gremlin.sh (Unix/Linux) or bin/gremlin.bat (Windows) 來啟動(dòng)Console廓鞠,然后打開JanusGraph用factory傳入配置路徑:

graph = JanusGraphFactory.open('path/to/configuration.properties')
4.2.1.2. 內(nèi)嵌JanusGraph

JanusGraphFactory也能用來打開一個(gè)JVM的用戶應(yīng)用程序里的內(nèi)嵌JanusGraph實(shí)例帚稠。這種情況,JanusGraph是用戶程序的一部分床佳,應(yīng)用程序可以通過公共api直接調(diào)用JanusGraph滋早。

4.2.1.3. 短代碼

如果JanusGraph圖集群先配置好了,只有后端存儲需要被定義砌们。JanusGraphFactory接受冒號分隔的string表示后端存儲名稱和目錄(主機(jī)名)

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

JanusGraph杆麸,自身是一個(gè)簡單的jar文件集合搁进,并沒有執(zhí)行線程。有兩種基礎(chǔ)方法連接和使用JanusGraph數(shù)據(jù)庫:

  1. 可以在內(nèi)嵌了Janusgraph的客戶端程序使用昔头,由該程序提供執(zhí)行線程饼问。
  2. JanusGraph Server端,啟動(dòng)后允許遠(yuǎn)程client揭斧,或邏輯分離的程序調(diào)用莱革。

JanusGraph Server用Apache Tinkerpop框架的Gremlin Server來服務(wù)客戶端請求。JanusGraph提供外部的配置文件用于快速啟動(dòng)JanusGraph Server讹开,但這個(gè)配置文件是能被改變來提供廣泛的服務(wù)器能力盅视。

可以通過yaml配置文件放在./conf/gremlin-server目錄來配置JanusGraph Server。配置文件中配置一個(gè)圖實(shí)例則需要如下設(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]}}}}
...

圖實(shí)例設(shè)置的入口首先定義了指定的janusgraph配置旦万,上面例子是綁定配置到conf/janusgraph-berkeleyje.properties闹击。下面的plugins入口激活janusgraph gremlin插件,完成自動(dòng)import一些janusgraph classes纸型,使遠(yuǎn)端執(zhí)行腳本可以引用這些classes方法拇砰。

更多可以到Chapter 7, JanusGraph Server了解。

4.2.2.1 部署Server

JanusGraph的zip文件包含一個(gè)快速啟動(dòng)server組件狰腌。幫助更易于啟動(dòng)janusgraph在gremlin server上除破。執(zhí)行bin/janusgraph.sh啟動(dòng)一個(gè)gremlin server with Cassandra and Elasticsearch。

注意:因?yàn)榘踩紤]琼腔,es默認(rèn)必須運(yùn)行在非root賬戶下瑰枫。

4.3 全局配置

JanusGraph區(qū)分local和global配置參數(shù)。local配置參數(shù)應(yīng)用一個(gè)獨(dú)立的實(shí)例丹莲。global配置參數(shù)應(yīng)用與集群中所有實(shí)例光坝。根據(jù)的,janusgraph區(qū)分下面5種配置范圍:

  1. local:只作用于一個(gè)獨(dú)立的janusgraph實(shí)例甥材,當(dāng)初始化實(shí)例時(shí)在配置中明確指定盯另。
  2. maskable:是local模式的兼容、可重寫版本洲赵,如果local配置沒有提供鸳惯,則從global配置中讀取。
  3. global:集群配置作用于所有實(shí)例叠萍,不可被重寫芝发。
  4. global_offline:類似global,但是變更時(shí)必須重啟集群苛谷,確保集群中所有實(shí)例的配置一致辅鲸。
  5. fixed:類似global,但是集群啟動(dòng)后不可更改腹殿。

當(dāng)集群的第一個(gè)實(shí)例被啟動(dòng)独悴,從本地配置文件初始化global配置參數(shù)例书。通過management API可以即時(shí)改變global配置參數(shù)。訪問management API绵患,在打開的實(shí)例上調(diào)用g.getManagementSystem()處理g雾叭。例如悟耘,改變默認(rèn)的集群cache:

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
4.3.1 改變offline參數(shù)

改變配置參數(shù)不會影響運(yùn)行的實(shí)例落蝙,只會作用于新實(shí)例。改變global_offline需要重啟集群暂幼,配置會即刻生效于所有實(shí)例筏勒。下面是操作步驟:

  1. 關(guān)閉集群中所有實(shí)例;
  2. 連接到一個(gè)單獨(dú)的實(shí)例旺嬉;
  3. 確認(rèn)所有運(yùn)行中事務(wù)已關(guān)閉管行;
  4. 確認(rèn)不會有新事務(wù)啟動(dòng)(如集群必須offline);
  5. 打開management API邪媳;
  6. 改變配置參數(shù)捐顷;
  7. 執(zhí)行commit,會自動(dòng)關(guān)閉當(dāng)前實(shí)例雨效;
  8. 重啟所有實(shí)例迅涮;

更詳細(xì)的配置參數(shù)說明請看 * Chapter 15, Configuration Reference *

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市徽龟,隨后出現(xiàn)的幾起案子叮姑,更是在濱河造成了極大的恐慌,老刑警劉巖据悔,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件传透,死亡現(xiàn)場離奇詭異,居然都是意外死亡极颓,警方通過查閱死者的電腦和手機(jī)朱盐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菠隆,“玉大人兵琳,你說我怎么就攤上這事〗眨” “怎么了闰围?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長既峡。 經(jīng)常有香客問我羡榴,道長,這世上最難降的妖魔是什么运敢? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任校仑,我火速辦了婚禮忠售,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稻扬。我一直安慰自己,他們只是感情好泰佳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布尘吗。 她就那樣靜靜地躺著逝她,像睡著了一般。 火紅的嫁衣襯著肌膚如雪睬捶。 梳的紋絲不亂的頭發(fā)上黔宛,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天擒贸,我揣著相機(jī)與錄音,去河邊找鬼介劫。 笑死徽惋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜕猫。 我是一名探鬼主播寂曹,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼回右,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翔烁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤侣背,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后贩耐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潮太,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了更鲁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奇钞。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖景埃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纠亚,我是刑警寧澤筋夏,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布条篷,位于F島的核電站骗随,受9級特大地震影響赴叹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乞巧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚕冬。 院中可真熱鬧是辕,春花似錦囤热、人聲如沸获三。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贞谓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間经宏,已是汗流浹背驯击。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工耐亏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人广辰。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓择吊,卻偏偏與公主長得像李根,于是被迫代替她去往敵國和親几睛。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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