使用exchange 从hive导入nebula速度较慢。数据共120亿左右数据,分12次导入,第一次导入全部顶点和10亿左右数据,剩下11次每次导入10亿左右数据。
create space xxx(partition_num=15, replica_factor=1, vid_type=fixed_string(32))
5块SSD设置parttion为15;测试查询性能使用,不考虑灾备,replica设置为1
- storaged.conf关键配置
- exchange conf关键配置
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
]
几个额外的问题:
- hadoop 是装在哪的,应该和 nebula 不在一个机器?他们之间的网络带宽是怎么样的
- 导入时,有没有开自动 compact?
- storage 也是在 graph 的这个节点上么?
数据导入瓶颈主要在磁盘 io 和网络带宽,可以搭建监控系统看一下。
磁盘 io 的话,有很大部分是小文件的写入,所以没有理想测试下那么高,不过你这个也是太慢了,是不是网络是千兆的。
我们自己环境 LDBC 数据集 8 千万点,5 亿边,3 副本,用 importer 导入 30 分钟到 1 小时。
几个可以尝试的地方:
- 搭监控,看看是不是网络打满了。
- 试试把一小部分数据导出放在本地,然后用 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
再次感谢。
如果开了自动 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
min.wu
10
200个吧。
rocksdb参数调一下,写性能不会差的。
1 个赞
关闭写入时的auto_compact,调整rocksdb参数,增加L0 stall/slow write,写入速度可增加
2 个赞