v2 nightly版本升级到2.0.0版本,同exchange配置文件导入数据异常缓慢,问:如何才能提高导数据的并发量和速度

nebula 版本:2.0.0
studio 版本:2.0.0
部署方式 :单机
硬件信息
磁盘: 2T SSD
CPU、内存信息:52 vCPU 384G

#park 相关配置
spark: {
app: {
name: Spark Writer
}
driver: {
cores: 16
maxResultSize: 32G
}
cores {
max: 128
}
}

batch: 256
partition: 128

请问下是不是更改这些配置就可以提高并发呀

我们升了版本后,和之前差不多数据量的数据导入,且导数据时的配置文件也没有变,但是现在每天的数据导不完了,异常缓慢,请问下,应该怎么处理,是改配置文件,还是有其他的处理我们并不清楚。。现在

为什么你们用 Studio 又用 Exchange?Studio 是用来做可视化,Exchange 导入数据吗?

是的啊 exchange导入数据 studio用来展示 顺带写了下版本

nightly升级到2.0.0是个啥过程??

关于如何提升Exchange的导入速度,论坛有相关的博客可以参考,你可以搜一下。
简单的可以提升性能的几个配置:

  1. spark partition配置, 即tags和edges中的partition
  2. batch
  3. rate.limit

适当提高这几个配置可以提高导入的并发度。 前提是在提交Exchange任务时要分配好executor的数目,尽量保持partition数是executor 总核数的2-3倍。

配置改了 但导数据还是很慢 :sob:

在导节点的时候,改完配置导数据还是挺快的,但是导边的时候好像无效,速度没有提升,很慢很慢,有大佬能解答下,或者给下建议不。 :upside_down_face:

很慢很慢是有多慢, 导入点的速度和导入边的速度分别是多少?
也把一条点数据的size和一条边数据的size发一下吧

一个点数据和一条边数据都是两三个字段的,都很小,估计小几K

差不多数据量的点20分钟导完,边十多个小时都不行

  1. 点和边使用的Exchange并发配置是一样的么,包括提交命名。可以分别发一下。
  2. 你在console中分别执行下insert batch条点 和insert batch条边,看下执行时间。

如果你的batch很大可以稍微处理下,或者去Exchange配置的error.output路径中看下有没有文件,文件内部一行就是一个insert ngql。

在console上导入边非常的快

你的Exchange配置文件的batch设置的1?
batch是几,一条insert语句中就会有几条数据的,你上面的示例是只插入一条肯定很快

设置的是10000

上面这个两个发一下, batch是10000

{
  #park 相关配置
  spark: {
    app: {
      name: Spark Writer
    }
    driver: {
      cores: 16
      maxResultSize: 32G
    }
    cores {
      max: 128
    }
  }
  # Nebula Graph 相关配置
  nebula: {
    address:{
      # 以下为 Nebula Graph 的 Graph 服务和 Meta 服务所在机器的 IP 地址及端口
      # 如果有多个地址,格式为 "ip1:port","ip2:port","ip3:port"
      # 不同地址之间以英文逗号 (,) 隔开
      graph:["172.16.113.127:9669"]
      meta:["172.16.113.127:34006"]
    }

    # 填写的账号必须拥有 Nebula Graph 相应图空间的写数据权限
    user: user
    pswd: password
    # 填写 Nebula Graph 中需要写入数据的图空间名称
    space: ***Graph
    connection {
      timeout: 6000
      retry: 3
    }
    execution {
      retry: 3
    }
    error: {
      max: 32
      output: /tmp/errors
    }
    rate: {
      limit: 1024
      timeout: 5000
    }
  }
 #Processing edges
  edges:[
    {
      name: loginUserAndDevice
      type: {ss
        source: hive
        sink: client
      }
      exec: "select concat(uid,sdi) as id, uid as id_source,sdi as id_dst,final_day as loginTime from  antispam.antispam_nlp_uid_sdi_final_sd  where day = '${one_day_ago}' and uid is not null and sdi is not null and sdi!=''"
      fields: [id,id_source ,id_dst,loginTime]
      nebula.fields: [id, id_source,id_dst,loginTime]
      source: id_source
      target: id_dst
      batch: 10000
      partition: 128
    }
  ]
}

配置文件已经贴了 大佬帮忙看下这应该才能提高导入的速度

你的batch太大了,设置成2000试下

本来任务平稳导数据,但是导了一段时间后,就没数据进来了 并且存储占比越来越低。。

浙ICP备20010487号