yuval
1
- nebula 版本:2.0.1
- 部署方式(分布式):
- 是否为线上版本:N
- 硬件信息
- 问题的具体描述
一、最近在测试hdfs导入nebula的测试
1.创建space:
CREATE SPACE IF NOT EXISTS test_db (partition_num = 100, replica_factor = 1, vid_type = FIXED_STRING(60));
ps: spaceId = 12
2.use test_db;
-
DOWNLOAD HDFS "hdfs://nameservice_test:8020/tmp/nebula/sst/"
-
INGEST
以上步骤均正常 也将数据成功导入nebula
submit job stats 数据量正常
二、测试删除数据库后重新导入
- drop space test_db 后
创建space:
CREATE SPACE IF NOT EXISTS test_db (partition_num = 100, replica_factor = 1, vid_type = FIXED_STRING(60));
ps: spaceId = 24
2.use test_db;
-
DOWNLOAD HDFS "hdfs://nameservice_test:8020/tmp/nebula/sst/"
-
INGEST
经过以上4步之后 发现数据并没有成功导入到 test_db space之中
对应spaceid 存储文件:
18G 1
1.7G 12
40G 24
spaceid =24 下面data目录已经有数据
但是 submit job stats 数据全是0
问题描述
现在的问题有2个:
1.drop space之后
spaceid 对应的目录如何彻底清除
2.drop space 并新建相同名字的space
数据导入之后无法成功的原因 比较疑惑,希望能得到解答,感谢。
问题1: 2.0 删除 space 现在默认是不会将目录删除的,它有个开关控制,假如你希望删除,你在 storage 的配置文件里面加上 --auto_remove_invalid_space=true
,storage 重启之后就会删除掉它
问题2: 你上面也说明了原来space的id是12,你现在把space drop 后,创建同样名字的 space,space id 已经变了,已经不是12 了。集群里面的spaceid, tagid,edgeid 等等都是递增的。然后数据存储的时候,是根据 spaceid来的,不是根据名字来的。
yuval
3
新建的spaceid是24 , 导入之后,data目录有20多G
但是submit job stats 数据却是0
因为你创建完id 为12的space后,你还创建了tag edge 等等,这些用同个id递增的
yuval
5
你好,谢谢你的回答,我知道spaceID是会变的,
第二个问题 我想问的是 : 在新建的space下面 我再次导入数据 INGEST 之后 数据没有真正的导入进去,submit job stats 的结果 tags edges的数据全部都是0 。 download目录产生了24G的数据 data目录在INGEST后也有20G 但是在compact 之后 data目录的数据变得之后79MB了。
在没有重建space 的情况下 同样的步骤 却是正常的 。不知道是什么原因导致我重建space之后数据是没有正常导入的( 用id为12 通过spark生成的sst 文件 导入到 id为24的库中 是没法成功的?)。
yuval
6
数据后续是每天全量全部重新导入的,
所以需要清空当前space下所有的 tags和edges的数据,我们当前最新版本的nebula是否支持
tags和edges 的truncate 而不用重建tags和edges?
另外在download 和 INGEST 成功执行之后 有什么快捷的办法使得 download 目录清空?
你的tagid和edgeid也已经变了,生成的数据里面会记录这些信息,所以数据已经不能用了
你好,space中的tag和edge重建之后会有新的tagId和edgeId, sst文件需要重新生成的。
yuval
10
那就有点麻烦了。
我们现在是准备新建两套集群,一主一备,每天切,每天都做全量导入。
按照当前的模式,如果生成的数据记录了集群的tagid和edgeid 那导入一次文件到2套集群就必须得生成两套数据集(基于不同nebula集群的sst文件集)
基于这种两套集群的全量导入场景,我们的nebula有没有比当前导入方式更合理的解决方案呢?
yuval
12
当前线上用的还是neo4j 准备用nebula来代替
nebula还在测试阶段,目前用的是一个space,估算了数据量 大约每天全量500G数据的样子。
那你做全量的时候,直接把data目录删除重启服务,然后再次启动,安装之前创建的schema的顺序重新创建,这些数据就可以复用。
yuval
14
好的 我测试一下。
是不是我两套集群的spaceid 是一样的 就可以共用一套sst文件集了?
yuval
16
删除data目录之后 新建的tag和edge顺序一样 是否可以完全保障 不同集群的同名id是一样的?