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

封面图

本文首发于 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」即可习得大厂实践技能 ^^

推荐阅读

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容