玩转 HugeGraph 图数据库的步,从这迈出!

2022-04-25 00:00:00 数据 数据库 文件 配置 导入

引言

图的存储通常依赖图数据库。平时我用Neo4j相对较多,之前一直听说百度在18年开源了分布式图数据库HugeGraph,各项性能较竞品都不差,官方宣称可提供毫秒级的关联关系查询能力(OLTP), 且可与Hadoop、Spark等大数据平台集成以进行离线分析(OLAP)。目前版本已经迭代到 0.10,趁这段时间有空,打算学习体验一把。为后续在公司中团伙欺诈等场景中运用提前储备。

本篇文章就是这一系列的开篇:环境准备。相较于 Neo4j来说,HugeGraph的安装要稍显复杂。本文结构如下:

  1. 前期准备
  2. 安装 Server
  3. 安装 Studio
  4. 利用 Loader 导入数据
  5. 利用 Tools 管理数据库

阅读大约需要9分钟。

注:公众号后台对话框发送:虚拟机cassandrahugegraph即可获取本文所有软件的百度云下载地址

1. 前期准备

官方将 HugeGraph 划分为多个模块,有ServerStudioLoaderTools等。彼此之间的关系如下(源自官方文档):

"HugeGraph-Server": 是HugeGraph项目的核心部分,包含Core、Backend、API等子模块;
"Core":图引擎实现,向下连接Backend模块,向上支持API模块;
"Backend":实现将图数据存储到后端,支持的后端包括:Memory、Cassandra、ScyllaDB、RocksDB、HBase及MySQL,用户根据实际情况选择一种即可;
"API":内置REST Server,向用户提供RESTful API,同时完全兼容Gremlin查询。
"HugeGraph-Client":提供了RESTful API的客户端,用于连接HugeGraph-Server,目前仅实现Java版,其他语言用户可自行实现;
"HugeGraph-Loader":基于HugeGraph-Client的数据导入工具,将普通文本数据转化为图形的顶点和边并插入图形数据库中;
"HugeGraph-Spark":能在图上做并行计算,例如PageRank算法等;
"HugeGraph-Studio":是HugeGraph的Web可视化工具,可用于执行Gremlin语句及展示图;
"HugeGraph-Tools":是HugeGraph的部署和管理工具,包括管理图、备份/恢复、Gremlin执行等功能。

整体架构图如下。本次选择 Cassandra作为后端存储。

1.1 环境准备

环境基于 VMware 搭建而成,版本如下。具体安装方法,参考本公众号另外两篇文章:

  • 系统 CentOS 7
  • jdk 1.8.0_45
  • Cassandra 3.11.5
  1. 用VMware构建大数据学习环境「基础篇」

  2. 基于VMware 搭建 Cassandra 数据库集群

1.2 下载程序

直接官方地址:

https://hugegraph.github.io/hugegraph-doc/download.html

我的版本是

  • hugegraph-server:0.10.4
  • hugegraph-loader:0.10.0
  • hugegraph-studio:0.10.0
  • hugegraph-tools:1.4.0

用 Filezilla 将这些包拖至服务器上就可以,解压后,开始安装过程。

mkdir ~/opt/hugegraph
tar -zxvf hugegraph-.10.4.tar.gz -C ~/opt/hugegraph/
tar -zxvf hugegraph-studio-0.10.0.tar.gz -C ~/opt/hugegraph/
tar -zxvf hugegraph-loader-.10.0.tar.gz -C ~/opt/hugegraph/
tar -zxvf hugegraph-tools-1.4.0.tar.gz -C ~/opt/hugegraph/

2. 安装 Server

目前 HugeGraphServer 不支持分布式部署。所以,只需要在单台上配置即可。

2.1 修改配置文件

在 server 这我们需要配置三个文件:

  • gremlin-server.yaml:接受和解析用户的gremlin语句,调用 core API 执行。
  • rest-server.properties:接受不同的HTTP请求(Restful API),调用对应的Core API
  • hugegraph.properties: 配置与图存储和查询相关的参数,如后端数据库存储等
cd ~/opt/hugegraph/hugegraph-0.10.4
vi conf/gremlin-server.yaml
# 将默认的 host: 127.0.0.1 和 port: 8182 替换为实际 ip 和 端口,这里是
host: 192.168.34.133
port: 8182
vi conf/rest-server.properties
# 修改如下
restserver.url=http://192.168.34.133:8080
# 将gremlinserver.url 与 gremlin-server.yaml 设置一致
gremlinserver.url=http://192.168.34.133:8182
vi hugegraph.properties
# 修改后端 为 cassandra
backend=cassandra
serializer=cassandra
# 在下面的 cassandra 替换为对应的 seeds 的 ip
cassandra.host=192.168.34.133

至此,便完成server端文件配置 

https://hugegraph.github.io/hugegraph-doc/quickstart/hugegraph-server.html

2.2 修改防火墙

从上面的配置可发现,我们需要开通 8080(rest-server) 和 8182(gremlin-server)两个端口。

# 切换管理员权限
su -
# 开端口 8080 8182
firewall-cmd --zone=public --add-port=8080/tcp --add-port=8182/tcp --permanent
# 刷新
firewall-cmd --reload
# 查看
firewall-cmd --list-all

2.3 启动图数据库

# 切换普通用户
su kevin
source ~/.bash_profile
# 初始化存储
bin/init-store.sh
# 启动 hugegraph
bin/start-hugegraph.sh
# 停止 hugegraph
# bin/stop-hugegraph.sh

在 Chrome 中检验也没有问题,至此完成了 server 模块安装

3. 安装 Studio

HugeGraph-Studio是HugeGraph的前端展示工具, 通过它可以执行Gremlin语句,并及时获得图形化的展示结果。其依赖 HugeGraph server。需要配置如下:

2.1 修改配置文件

在 server 这我们需要配置一个文件:

hugegraph-studio.properties:设置 server 端口,以及相关的显示颜色、大个数等。

cd ~/opt/hugegraph/hugegraph-studio-0.10.
vi conf/hugegraph-studio.properties
# 这里 仅需修改下面两个信息
studio.server.host=192.168.34.133
graph.server.host=192.168.34.133

至此,便完成 studio 端文件配置 https://hugegraph.github.io/hugegraph-doc/quickstart/hugegraph-studio.html

2.2 修改防火墙

从上面的配置可发现,我们需要开通 8088(studio)。

# 切换管理员权限
su -
# 开端口 8088
firewall-cmd --zone=public --add-port=8088/tcp --permanent
# 刷新
firewall-cmd --reload
# 查看
firewall-cmd --list-all

开通成功

2.3 启动 Studio

# 切换普通用户
su kevin
source ~/.bash_profile
# 启动 studio
bin/hugegraph-studio.sh

启动成功

4. 利用 Loader 导入数据

从 Studio 的结果可以看到现在 HugeGraph 并没有数据。下面我们用 Loader 导入一些数据。官方说,HugeGraph 支持多种数据源和格式(目录主要用在批量导入时)

  • 本地磁盘文件或目录(TEXT、CSV、JSON)
  • HDFS 文件或目录
  • 部分关系型数据库(MySQL等)

数据导入步骤

分为4步

  1. 编写图模型 Schema
  2. 准备数据文件
  3. 编写输入源映射文件
  4. 执行命令导入

Neo4j 不同的是,HugeGraph在,准备好数据的同时,还需要编写 schema输入源映射文件,略显复杂。后续打算出专题文章,深入讲解数据导入与图更新。在这里我们先专注在将Loader用起来上。因此导入数据,采用官方给的 example 中的数据,相关 schema 和 映射文件也已准备好。

# 导入命令
bin/hugegraph-loader -g hugegraph -f example/file/struct.json -s example/file/schema.groovy -h 192.168.34.133

导入成功,为了在sudio中看到具体的图结果,需要重启 studio。后面可以愉快的练习 Gremlin 了。

5. 利用 Tools 管理数据库

Tools这部分,我们先专注于其 两个基本和重要功能,备份和恢复

1.备份

我们先将上面的图做个备份,这在日常维护也很重要:

# 好是备份在别的磁盘上
mkdir -p ~/opt/hugegraph/graph_backup
cd hugegraph-tools-1.4./
# 修改 bin/hugegraph 配置
export HUGEGRAPH_URL=http://192.168.34.131:8080

# 备份
bin/hugegraph backup --directory ../graph_backup --huge-* all

2.恢复

HugeGraph 有个 graph mode 的开关设置:取值NONE 默认、RESTORING恢复、 MERGING 合并。因此在恢复时,需将 graph mode 模式进行切换。具体如下

# 先删除数据,有个二次确认机制 双引号内容必须一致。
bin/hugegraph graph-clear --confirm-message "I'm sure to delete all data"

# 获取当前图模式
bin/hugegraph graph-mode-get
# 切换至 恢复模式
bin/hugegraph graph-mode-set -m RESTORING
# 恢复 图
bin/hugegraph restore -d ../graph_backup -t all
# 切换至 默认模式

过程图结果对比图

总结

至此,完成 HugeGraph 的上手工作,通过这篇文章,希望帮助大家快速 完成 HugeGraph 的环境搭建。并为后续的深入学习开个好头。后续我将介绍更多关于 HugeGraph 的深入使用,以及图查询语言 Gremlin的内容。敬请期待。

参考文章

  1. 百度安全开源大规模图数据库HugeGraph
  2. DTCC 2019 | 百度安全开源图数据库HugeGraph 引领国产图数据库发展
  3. https://hugegraph.github.io/hugegraph-doc/

原文链接:https://mp.weixin.qq.com/s/TiYacKunBtOvqmmda0TYIQ

相关文章