社区用户 |手把手教你从数据预处理开始体验图数据库

ywz888
发布于 2022-10-11 11:27
浏览
0收藏

“本文由社区用户 Jiayi98 供稿,分享了她离线部署 Nebula Graph、预处理 LDBC 数据集的经验,是个对新手极度友好的手把手教你学 Nebula 分享。”

这不是一个标准的压力测试,而是通过一个小规模的测试帮助我熟悉 Nebula 的部署,数据导入工具,查询语言,Java API,数据迁移,以及集群性能的一个简单了解。



背景 



所有的准备都需要找个有网的环境

  1. docker RPM 包 https://docs.docker.com/engine/install/centos/#install-from-a-package
  2. docker-compose tar 包 https://github.com/docker/compose/releases
  3. 提前下载镜像 Docker Hub
  4. metad, graphd, storaged, console, studio, http-gateway, http-client, nginx, importer(用 docker save xxx 命令将拉好的镜像导出成 tar 包)
  5. 配置文件 https://github.com/vesoft-inc/nebula-docker-compose/blob/docker-swarm/docker-stack.yaml
  6. nebula-studio GitHub 上下载 zip 包 https://github.com/vesoft-inc/nebula-web-docker



离线安装 



1. 安装 Docker

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

2. 安装 docker-compose

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

3. 导入镜像

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

4. 在机器 manager machine 上执行以下命令初始化 Docker Swarm 集群

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

5. 根据提示在另一台服务器上以 worker 的身份 join swarm 

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

添加 worker node 如果出现以下报错: Error response from daemon: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 172.16.9.129:2377: connect: no route to host" 

一般是防火墙未关闭导致的(用以下方式关闭防火墙)。

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

6. 在 manager 节点上改写 docker-stack.yml ,并创建 nebula.env 

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

Yaml file 里的 hostname 多台机器不可同名,启动时的错误多半是因为配置文件写得有问题,v1 升级 v2 也只需要把配置文件里的镜像换一下就可以了。

7. 在 manager 节点上启动 nebula 集群

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

这里附带一些我 Debug / 检查方法:

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

8. 安装 Studio

代码文件夹里是 v1,有一个 v2 的文件夹里是 v2

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

其中, -d 表示在后台运行服务容器。Studio 启动成功后,在浏览器地址栏输入:http://ip address:7001。



 测试



我用的 LDBC 数据。

>>>>

准备

  1. 获取源码:https://github.com/ldbc/ldbc_snb_datagen/tree/stable,scale factor 1-1000 用 stable branch。
  2. 下载 hadoop-3.2.1.tar.gz: Index of /dist/hadoop/core/hadoop-3.2.1
  3. LDBC 数据预处

>>>>

LDBC 数据预处理

这里需要说明一下,要注意你用的 nebula 版本是否支持 “|” 作为分隔符。

LDBC 的所有 vertex 和 edge 的 ID / index 都有问题,需要处理一下使得所有 vertex 的 ID 变为 unique key。

我的做法是每个 vertex 我都给一个前缀,比如 person,原始 ID 为 933,变为 p933。(为了试用一下我自己搭的 CDH 我用 Spark 做的数据预处理,处理过的数据放在 HDFS 以便后面用 nebula-exchange 导入)

>>>>

硬件资源

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

备注(小声bb):Nebula 不推荐使用 HDD,但我也没有 SSD, 最后测试结果证明 HDD 真的很弱。

>>>>

服务分布

3 节点,服务分布如下

  • 192.168.1.10 meta,storage
  • 192.168.1.12 graph,meta,storage
  • 192.168.1.60 graph,meta,storage

2 图空间

  1. csv:10 个 partition
  1. 原始数据约 42 M
  2. 7 千多个点,40 万条边
  1. test:100 个 partition

  1. 原始数据约 73 G
  2. 1.1 亿多个点,28.2 亿多条边(Edge: 1,101,535,334;Vertex: 282,612,309)

导入 Nebula 之后,占用储存空间共约 76 G,其中 wal 文件占 2.2 G 左右。

没有做导入的测试,一部分用了 Nebula-Importer 导入,一部分用了 Exchange 导入:

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区


 开始测试



测试方法:

选取 1,000 个 vertex,进行 1,000 次查询的平均值。

社区用户 |手把手教你从数据预处理开始体验图数据库-鸿蒙开发者社区

三度超时是将 timeout 参数调高至 120 秒后的结果,后来在终端执行了一次三度发现要三百多秒。

最后,希望这份文档对和我一样的小白们有帮助,也感谢一直以来社区和官方的答疑解惑。

Nebula 真的让用户感到真的非常 supportive,在学习使用 Nebula 的过程中我也收获了很多~




文章转载自公众号:Nebula Graph Community

分类
标签
已于2022-10-11 11:27:43修改
收藏
回复
举报
回复
    相关推荐