HBase作为JanusGraph图数据库存储

目的

JanusGraph作为一个分布式的图数据库,支持很多的数据库作为它的图数据存储介质。这里将介绍运用HBase作为JanusGraph的存储数据库。

JanusGraph & HBase

优点

  • 能够很好的和 Apache Hadoop 生态圈进行融合。
  • 对强一致性有很好的支持。
  • 通过机器的扩容能够使得存储得到线性的扩展。
  • 严格的读写事务控制。
  • 运行状态参数可以通过JMX导出。
  • 都具备Apache 2 许可证。

配置

在配置文件conf/janusgraph-hbase-solr.properties中添加HBase的访问,配置参数如下:

storage.backend=hbase //使用HBase作为存储后端
storage.hostname=zookeeper-host1,zookeeper-host2,zookeeper-host3 //HBase的Zookeeper
storage.hbase.table=janusgraph//HBase存储JanusGraph元数据的表名
storage.hbase.ext.zookeeper.znode.parent=/hbase //HBase使用的Znode
storage.hbase.ext.hbase.zookeeper.property.clientPort=2181 //端口

HBase的查询是基于Rowkey,所以在条件查询这块是弱项,一旦Rowkey确定如果有新的查询就比较难。所以为了解决这个问题,JanusGraph引入了索引后端,下面我们介绍下如何配置Solr作为JanusGraph的索引后端。配置文件conf/janusgraph-hbase-solr.properties配置参数如下:

index.search.backend=solr //使用solr作为索引后端
index.search.solr.mode=cloud //solr使用集群模式
index.search.solr.zookeeper-url=zookeeper-host1:2181/solr,zookeeper-
host2:2181/solr,zookeeper-host3:2181/solr //HBase使用的Zookeeper
index.search.solr.configset=janusgraph //Solr使用HBase的元数据表名

工作原理

JanusGraph源自Apache TinkerPop,支持Gremlin图遍历语言,例如下面的这个Gremlin语言:

/**
 *查找Alice朋友的朋友名称列表
 */
g.V().has("name", "Alice").out("knows").out("knows").values("name")
  • g.V().has("name", "Alice")是索引查询,从Solr中查询。
  • .out("knows").out("knows").values("name")是遍历查询,从HBase中查询。
    查询流程如下图:
    查询流程

你可能感兴趣的:(HBase作为JanusGraph图数据库存储)