知识图谱我爱编程

JanusGraph图形数据库搭建

2018-08-08  本文已影响914人  你我他wzb

     本文创作只是为了工作之余的总结,非专业工程人士角度。另外本文没有从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 图形数据库的讲解完毕。

上一篇下一篇

猜你喜欢

热点阅读