? ? ?本文創作只是為了工作之余的總結,非專業工程人士角度。另外本文沒有從0到1步步教你如何搭建,只求讓你對janusGraph 圖形數據庫搭建有個清晰的認識。當然本人并未觀看JanusGraph 框架源碼,其中理解完全源于對JanusGraph官方文檔的解讀,如有不足之處,請多多指教。
一、搭建要求前提:集群中已經搭建完成hadoop、hbase /zookeeper (java1.8以上)
其中DataNode 、NameNode、SecondaryNameNode是hadoop 啟動進程
HRegionServer HMaster 是 hbase 啟動進程
QuorumPeerMain 是zookeeper 啟動進程
二.JanusGraph 圖形數據庫搭建的幾種形式
JanusGraph圖形數據庫可以與集群(hbase)搭建在一起,也可以另外的機器上去搭建。搭建一起的可能的好處就是減少數據的傳輸。
1)單機搭建。
對每張圖從左往右進行標號1客戶端 、2 janusGrph(配置)、3單機集群(后端)
這張圖可以理解這樣理解:客戶端和janusGrph 搭建在同一臺機器上 單機集群可以部署在遠端也可以理解部署在客戶端和janusGraph 同一臺機器上,只不過配置不同罷了。
搭建過程:
在本地機器搭建完后端后,從官網上下載JanusGraph janusgraph-0.3.0-hadoop2.zip?
完成以下配置:
在文件下../conf/ 修改 與搭建后端相同的properties
例如:
在我的本地搭建只搭建了hbase后端存儲,沒有索引ES。那么在properties配置中就刪除掉關于ES等配置,只保留storage 相關的配置。如果只是本地搭建的單機形式只要修改一下storage.backend=hbase/storage.hostname=127.0.0.1 即可 如果集群不在本地搭建的只需要修改一下后端存儲storage.hostname 以及storage.port即可。注意:如果你想設置一下插入后端數據的表名可用:graph.graphname默認的值為JanusGraph。graph.graphname=mazze這樣的話你得插入hbase表名就是mazze。其他的配置說明請看官網上的配置
在此單機搭建完成了。
測試:
在目錄bin/下執行gremlin.sh 至于為什么要通過Gremlin建議可以看一下官網文檔,在此不多說。
進入交互式界面后,我們怎么跟本地的后端或者遠處的服務器通信呢?
很簡單:
在交互式界面執行:gremlin> graph = JanusGraphFactory.open('conf/xx.properties')
這樣我們就可以得到了一個圖了,你可以通過內置的函數進行加載數據到圖中如:
gremlin> GraphOfTheGodsFactory.load(graph)
(因為我的測試hbase 沒有安裝ES,所以對數據的加載只能按以下方式:
gremlin> GraphOfTheGodsFactory.loadWithoutMixedIndex(graph, true)
)
完成數據的載入后,你就可以對圖進行操作了,操作前需要執行以下函數:
gremlin> g = graph.traversal()
至此本地的JanusGraph的搭建完成了,你可以盡情的測試。
2 ).JanusGraph 分布式搭建
對每張圖從左往右進行標號1客戶端 、2 janusGraph集群、3存儲集群(后端)
如果我們有對圖的數據庫分布式的需求可以如上形式的搭建,其跟單機的單建基本相同,不同之處在于我們需要配置JanusGraph包到多臺機器上。至此不再贅述。
3).JanusGraph分布式 服務器形式搭建(+gremlinServer)
對每張圖從左往右進行標號 1客戶端 、2 janusGraph集群+gremlinServer(janusGraph server)、3存儲集群(后端)
如果你確實不知道他跟JanusGraph 分布式搭建下稱之為JanusGraph+? ? 的形式有什么不同,你可以暫時理解為JanusGraph分布式 服務器形式搭建(+gremlinServer) 下稱之為 JanusGraph+server,在其中在每臺機器上多開了一直運行的服務進程。而這些服務本質是gremlinServer 服務。為什么是GremlinServer這就需要你去瞅瞅了。那么維持這個服務的目的在于什么呢?可以方便你隨時的去取已經被你配置在gremlin-server或操作過的圖實例,不需要你每次進入客戶端去anusGraphFactory.open('conf/xx.properties')加載你的配置、創建圖實例
他始終維持加載好的圖實例,方便你隨時隨地的去操作,是不是很有用。
配置如下:
1.配置gremlin-server
1). 跟單機配置properties 文件一樣,你需要配置一個properties 文件。該文件就是你的后端(hbase等)配置文件
2).配置yaml 文件,該文件是你的服務端跟你的客戶端相關通信的配置。例如socket還有http.
host 表示你需要監聽的ip以及端口 0.0.0.0 表示所有客戶端的請求IP
如果你想在該服務端始終保持兩個圖實例,那么如上圖的wzbgraph和wcfgraph。這里說明一下兩者的不同,以及用處。wzbgraph的文件properties配置與wcfgraph文件propertie配置不同之處在于有沒有設置graph.graphname這一項,如果設置了那么你的圖的實例以及存入hbase的表名都會是設置的值,如果沒有設置那么你的實例就是你的wzbgraph 存入hbase 里面的表明就是默認的Janusgraph. 這些是需要注意,也是一些基本的東西。
2.啟動gremlin-server
對你剛剛配置的yaml 文件進行啟動 例如:
bin/gremlin-server.sh ./conf/gremlin-server/socket-gremlin-server.yaml
3.配置本地客戶端的訪問的文件
1).在你的本地配置遠程訪問文件。
其中hosts是你的gremlin-server 部署的機器ip port允許訪問的端口
4.本地客戶端訪問gremlin-server
本地進入bin目錄:
執行gremlin.sh
然后gremlin>remote connect tinkerpop.server conf/remote.yaml
至此你就可以使用在服務器中已經配置好的圖實例了。例如上面的wzbgraph 圖實例 wcfgraph圖實例根據你的graph.graphname。
當然如果你需要自己建一個新的圖實例,并加載到gremlin服務
gremlin>:remote console
然后自己加載你需要的配置以及實例吧!!
gremlin> graph = JanusGraphFactory.open('conf/xx.properties')
JanusGraph 圖形數據庫的講解完畢。