关于nebula:手把手教你从数据预处理开始体验图数据库

72次阅读

共计 3012 个字符,预计需要花费 8 分钟才能阅读完成。

本文首发于 Nebula 公众号:手把手教你从数据预处理开始体验图数据库,由社区用户 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. 提前下载镜像 https://hub.docker.com/search?q=vesoft&type=image,将 metad、graphd、storaged、console、studio、http-gateway、http-client、nginx、importer(用 docker save xxx 命令将拉好的镜像导出成 tar 包)
  4. 配置文件 https://github.com/vesoft-inc/nebula-docker-compose/blob/docker-swarm/docker-stack.yaml
  5. nebula-studio GitHub 上下载 zip 包 https://github.com/vesoft-inc/nebula-web-docker

装置

  1. 装置 Docker:
$ rpm -ivh <rpm 包 >
$ systemctl start docker -- 启动
$ systemctl status docker -- 查看状态 
  1. 装置 docker-compose
$ mv docker-compose /usr/local/bin/ -- 把 docker-compose 文件挪动到 /usr/local/bin
$ chmod a+x /usr/local/bin/docker-compose -- 改权限
$ docker-compose -version
  1. 导入镜像
$ docker load < 镜像 tar 包 >
$ docker image ls
  1. 在机器 manager machine 上执行以下命令初始化 Docker Swarm 集群:
$ sudo docker swarm init --advertise-addr <manager machine ip>
  1. 依据提醒在另一台服务器上以 worker 的身份 join swarm
$ docker node ls
  • 增加 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"

个别是防火墙未敞开导致的(用以下形式敞开防火墙)。

$ systemctl status firewalld.service
$ systemctl disable firewalld.service
  1. 在 manager 节点上改写 docker-stack.yml,并创立 nebula.env
-- nebula.env
TZ=UTC
USER=root
  • Yaml file 里的 hostname 多台机器不可同名, 启动时的谬误多半是因为配置文件写得有问题,v1 降级 v2 也只须要把配置文件里的镜像换一下就能够了。
  1. 在 manager 节点上动 nebula 集群
$ docker stack deploy <stack name> -c docker-stack.yml

这里附带一些我 Debug / 查看办法:

$ docker service ls -- 查看服务状态
$ docker service ps <NAME/ID> -- 查看某一个具体的状态
$ docker stack ps --no-trunc <stack name> -- 查看 stack 里所有的过程 
  1. 装置 Studio

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

$ cd nebula-web-docker

$ cd nebula-web-docker/v2
$ docker-compose up -d -- 构建并启动 Studio 服务; 

其中,-d 示意在后盾运行服务容器

启动胜利后,在浏览器地址栏输出: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: http://archive.apache.org/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 导入)

硬件资源

备注: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 万条边
  2. 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. 选取 1000 个 vertex,进行 1000 次查问的平均值

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

最初,心愿这份文档对和我一样的小白们有帮忙,也感激始终以来社区和官网的答疑解惑。

Nebula 真的让用户感到真的十分 supportive,在学习应用 Nebula 的过程中我也播种了很多~

进一步交换

交换图数据库技术?退出 Nebula 交换群请先填写下你的 Nebulae 名片,Nebula 小助手会拉你进群~~

要不要看看【美团的图数据库系统】、【微众银行的数据治理计划】以及其余大厂的风控、常识图谱实际?Follow Nebula 公众号 :NebulaGraphCommunity 回复「PPT」即可习得大厂实际技能 ^^

举荐浏览

  • 浅谈图数据库
  • 聊聊图数据库和图数据库的小常识
  • Nebula Graph 技术总监陈恒:图数据库怎么和深度学习框架进行联合?
  • 图数据库爱好者的团聚在议论什么?

正文完
 0