玩转 HugeGraph 图数据库的步,从这迈出!
引言
图的存储通常依赖图数据库。平时我用Neo4j
相对较多,之前一直听说百度在18年开源了分布式图数据库HugeGraph
,各项性能较竞品都不差,官方宣称可提供毫秒级的关联关系查询能力(OLTP), 且可与Hadoop、Spark等大数据平台集成以进行离线分析(OLAP)。目前版本已经迭代到 0.10
,趁这段时间有空,打算学习体验一把。为后续在公司中团伙欺诈等场景中运用提前储备。
本篇文章就是这一系列的开篇:环境准备。相较于 Neo4j
来说,HugeGraph
的安装要稍显复杂。本文结构如下:
前期准备 安装 Server 安装 Studio 利用 Loader 导入数据 利用 Tools 管理数据库
阅读大约需要9分钟。
注:公众号后台对话框发送:虚拟机
、cassandra
、hugegraph
即可获取本文所有软件的百度云下载地址。
1. 前期准备
官方将 HugeGraph 划分为多个模块,有Server
、Studio
、Loader
、Tools
等。彼此之间的关系如下(源自官方文档):
"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
用VMware构建大数据学习环境「基础篇」
基于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 APIhugegraph.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步
编写图模型 Schema 准备数据文件 编写输入源映射文件 执行命令导入
与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的内容。敬请期待。
参考文章
百度安全开源大规模图数据库HugeGraph DTCC 2019 | 百度安全开源图数据库HugeGraph 引领国产图数据库发展 -
https://hugegraph.github.io/hugegraph-doc/
原文链接:https://mp.weixin.qq.com/s/TiYacKunBtOvqmmda0TYIQ
相关文章