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