JanusGraph 存储后端之 HBase 安装配置

Apache HBase 是一个开源的,分布式的,版本化的非关系数据库,参照 Google’s Bigtable: A Distributed Storage System for Structured Data by Chang et al 实现。 正如 Bigtable 利用 Google 文件系统提供的分布式数据存储一样,Apache HBase 在 Hadoop 和 HDFS 之上提供类似 Bigtable 的功能。

-- Apache HBase Homepage

19.1 HBase 安装

以下部分讲述了 JanusGraph 与 Apache HBase 协同使用的各种方式。

19.1.1 本地服务模式

HBase 可以作为独立的单机数据库在与 JanusGraph 和最终用户应用程序相同的本地主机上运行。 在这个模型中,JanusGraph 和 HBase 通过 localhost 套接字相互通信。 在 HBase 上运行 JanusGraph 需要以下设置步骤:

$ ./bin/start-hbase.sh
starting master, logging to ../logs/hbase-master-machine-name.local.out

现在,您可以按如下方式创建 HBase JanusGraph:

JanusGraph graph = JanusGraphFactory.build()
    .set("storage.backend", "hbase")
    .open();

请注意,由于默认情况下尝试使用 localhost 连接,因此您无需指定主机名。 此外,在 Gremlin 控制台中,您无法定义变量 confg 的类型。 因此,只需省略类型声明即可。

19.1.2 远程服务模式

当图形库需要扩展,超出单个机器的范围时,HBase 和 JanusGraph 在逻辑上分成不同的机器。 在此模型中,HBase 集群维护图形表示,并且任意数量的 JanusGraph 实例都维护对 HBase 集群的基于套接字的读/写访问。 最终用户应用程序可以在与 JanusGraph 相同的 JVM 中直接与 JanusGraph 交互。

例如,假设我们有一个运行的 HBase 集群,其 ZooKeeper 仲裁由 IP 地址为 77.77.77.77, 77.77.77.78 和 77.77.77.79 的三台机器组成,然后将 JanusGraph 与集群连接如下:

JanusGraph g = JanusGraphFactory.build()
    .set("storage.backend", "hbase")
    .set("storage.hostname", "77.77.77.77, 77.77.77.78, 77.77.77.79")
    .open();

storage.hostname 接受以逗号分隔的 IP 地址列表以及 JanusGraph 应连接的 HBase 集群中任何机器子集的主机名。 此外,在 Gremlin 控制台中,您无法定义变量 confg 的类型。 因此,只需省略类型声明即可。

19.1.3 使用 Gremlin Server 的远程服务模式

最后,Gremlin Server 可以包装在前一小节中定义的每个 JanusGraph 实例上。 通过这种方式,最终用户应用程序不必是基于 Java 的应用程序,因为它可以作为客户端与 Gremlin Server 进行通信。 这种类型的部署非常适用于多语言体系结构,其中使用不同语言编写的各种组件需要在图形上进行引用和计算。

http://gremlin-server.janusgraph.machine1/mygraph/vertices/1
http://gremlin-server.janusgraph.machine2/mygraph/tp/gremlin?script=g.v(1).out('follows').out('created')

在这种情况下,每个 Gremlin Server 都将配置为连接到 HBase 集群。 以下显示了 Gremlin Server 配置的图形特定片段。 有关完整示例以及有关如何配置服务器的详细信息,请参阅第7章JanusGraph Server(译著,参考译文 Chapter 7. JanusGraph Server)。

...
graphs: {
  g: conf/janusgraph-hbase.properties}
plugins:
  - janusgraph.imports
...

19.2 HBase 特定配置

有关除常规 JanusGraph 配置选项外的所有 HBase 特定配置选项的完整列表,请参阅 第15章,配置参考

配置 HBase 时,建议考虑以下 HBase 特定配置选项:

  • storage.hbase.table:用于存储 JanusGraph 图的 HBase 表的名称。 允许多个 JanusGraph 图在同一 HBase 集群中共存。

有关更多 HBase 配置选项及其说明,请参阅 HBase 配置文档。 通过在 JanusGraph 配置中使用 storage.hbase.ext 添加相应的 HBase 配置选项,它将在初始化时传递给 HBase。 例如,要对 HBase 使用 znode /hbase-secure,请设置属性:storage.hbase.ext.zookeeper.znode.parent = /hbase-secure。 这种前缀允许通过 JanusGraph 配置任意 HBase 配置选项。

重要:HBase 后端使用毫秒来表示时间戳。 在 JanusGraph 0.2.0 及更早版本中,如果未明确设置 graph.timestamps 属性,则默认为 MICRO。 在这种情况下,graph.timestamps 属性必须显式设置为 MILLI。 在任何情况下都不要将 graph.timestamps 属性设置为其他值。

19.3 全局图操作

HBase 上的 JanusGraph 支持全局顶点和边迭代。 但是,请注意所有这些顶点和、或边将被加载到内存中,这可能导致 OutOfMemoryException。 使用 Chapter 37, JanusGraph with TinkerPop’s Hadoop-Gremlin 有效地迭代大图中的所有顶点或边。

19.4 管理 HBase 群集的贴士和技巧

主服务器上的 HBase shell 可用于获取群集的总体状态检查。

$HBASE_HOME/bin/hbase shell

通过 shell,以下命令通常被用于了解群集的状态。

status 'janusgraph'
status 'simple'
status 'detailed'

上述命令可以识别 region server 是否已关闭。 如果是这样,可以 ssh 到失败的 region server 机器并执行以下操作:

sudo -u hadoop $HBASE_HOME/bin/hbase-daemon.sh stop regionserver
sudo -u hadoop $HBASE_HOME/bin/hbase-daemon.sh start regionserver

使用 pssh 可以简化此过程,因为无需单独登录每台计算机来运行命令。 将 region servers 的 IP 地址放入 hosts.txt 文件,然后执行以下操作。

pssh -h host.txt sudo -u hadoop $HBASE_HOME/bin/hbase-daemon.sh stop regionserver
pssh -h host.txt sudo -u hadoop $HBASE_HOME/bin/hbase-daemon.sh start regionserver

接下来,有时您需要重新启动主服务器(例如遇到连接拒绝异常)。 为此,在主服务器上执行以下操作:

sudo -u hadoop $HBASE_HOME/bin/hbase-daemon.sh stop master
sudo -u hadoop $HBASE_HOME/bin/hbase-daemon.sh start master

最后,如果已经部署了HBase集群并且主服务器或区域服务器需要更多内存,只需使用必需的 -Xmx -Xms 参数编辑相应计算机上的 $HBASE_HOME/conf/hbase-env.sh 文件。 编辑完成后,如前所述停止/启动主服务器和/或 region servers。


翻译自官方文档原文地址:JanusGraph Documentation > Storage Backends > Apache HBase

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论