exchange导入性能问题

使用exchange 从hive导入nebula速度较慢。数据共120亿左右数据,分12次导入,第一次导入全部顶点和10亿左右数据,剩下11次每次导入10亿左右数据。

  • nebula 版本:

  • 部署方式:
    单机

  • 硬件信息

    • 可用14*1.5T SSD。实际配置使用了5块磁盘。
      磁盘写入速度约1.4G/S
      磁盘读取速度约3.4G/S
    • CPU
      16core
      64processor
    • 内存信息
      754G
  • 问题的具体描述
    第一次导入后,磁盘占用550G左右,导入用时约24小时,后续compact时间也较长。请问有什么参数可以调整增加导入性能,或这个数据量级的HIVE数据是否该使用其他方式导入。
    还有110亿数据没有导入,目前的导入速度无法接受

  • space create

create space xxx(partition_num=15, replica_factor=1, vid_type=fixed_string(32))
5块SSD设置parttion为15;测试查询性能使用,不考虑灾备,replica设置为1
nebula:
{
  connection {
    timeout: 3000
    retry: 3
  }
  error: {
    max: 32
  }
  rete: {
   limit: 10240
   time: 1000
 }
}
tags: [
type: {
source: hive
sink: client
}
batch: 2048
partition: 768
]
edges:[
type: {
source: hive
sink: client
}
#Hive
batch: 2048
partition: 768
]

几个额外的问题:

  1. hadoop 是装在哪的,应该和 nebula 不在一个机器?他们之间的网络带宽是怎么样的
  2. 导入时,有没有开自动 compact?
  3. storage 也是在 graph 的这个节点上么?

数据导入瓶颈主要在磁盘 io 和网络带宽,可以搭建监控系统看一下。
磁盘 io 的话,有很大部分是小文件的写入,所以没有理想测试下那么高,不过你这个也是太慢了,是不是网络是千兆的。

我们自己环境 LDBC 数据集 8 千万点,5 亿边,3 副本,用 importer 导入 30 分钟到 1 小时。

几个可以尝试的地方:

  1. 搭监控,看看是不是网络打满了。
  2. 试试把一小部分数据导出放在本地,然后用 importer 导入对比一下速度。
1 个赞

多谢大佬。
1.hadoop和nebula不在一个机器,nebula是单独的测试机。两者带宽,因为环境问题没有装iperf之类的工具,我们用scp简单测试了下为17M/S,但考虑到ssh安全策略的问题,可能速度有较大限制,根据之前经验更改安全策略后scp速度约100M。的确带宽不高。
2.第一次导入开启了自动compact,但从SPARK任务进度看,纯数据导入耗时应该是24小时左右。
3.单机部署,全部服务都在一个节点。

关于尝试点的几个问题:
1.IO监控nebula是否有配套工具可以使用,或有没有什么推荐工具。
2.我们现在准备更换导入的策略,使用SPARK直接将HIVE数据转换为SST格式,然后通过中间存储直接拉取SST数据 。请问这种策略下,SST生成配置或storage配置有没有什么好的建议,如何可以高效率的进行storage均衡或使生成的SST更加便于传输(因为看到之前exchange生成的sst文件都为几十M,可能会导致出现很多小文件。)
3.为了关闭自动compact,重启了服务,但是出现了storaged无法启动的问题,请问有什么解决方法吗?重启storaged服务失败 - #3,来自 hancong0601

再次感谢。

partition数量好像太少了吧

FIO怎么测的?顺序还是随机?DirectIO?

如果开了自动 compact 是会比较慢的。
监控工具,就 prometheus + node exporter,我们自己整理了 docker-compose 的,可以参考https://github.com/vesoft-inc/nebula-bench/tree/master/third

spark 生成 SST 是目前新功能,还没有对外发布,目前还不支持自定义 SST 的配置。

他这个硬盘不错,把L0 stall/slow write改大一点,应该是完全写的动的。compact不会影响写
调rocksdb 参数可以查rocksdb的手册

这样测的
time dd if=/dev/zero of=test.dbf bs=8k count=300000
实际写的数据更大,没有加oflag=direct

请问partition有推荐配置吗

200个吧。
rocksdb参数调一下,写性能不会差的。

1 个赞

感谢。
我试试

rocksdb建议调哪些参数,可以参考吗

你这边有调参数吗,效果怎么样

关闭写入时的auto_compact,调整rocksdb参数,增加L0 stall/slow write,写入速度可增加

2 个赞