如何提升exchange数据导入效率,及配置调优问题

  • nebula 版本:v2.6.2
  • 部署方式:分布式 (3节点)
  • 安装方式:RPM
  • 是否为线上版本:N
  • 硬件信息
    • 磁盘: HHD+SSD 500G
    • CPU、内存信息: 48C / 90G
  • 问题的具体描述:如何提升exchange组件导入效率?以LDBC-sf30测试数据为例,使用exchange组件,通过spark工具将csv文件数据从hdfs上导入到nebula图数据库中。
    能够针对当前环境配置给一些建议,可以是从修改优化exchange源码或对任务运行配置参数建议等。
  • 相关的 meta / storage / graph info 日志信息(尽量使用文本形式方便检索)
    Nebula Exchange v2.6.3版本
    Spark v2.4.0版本
    CDH v6.3.2版本

具体问题描述:


上图中storaged这两块配置参数功能一样吗?如果想提升exchange组件导入效率,调大配置文件节点或边信息中batch参数,可以修改哪些配置呢?
配置文件中节点或边信息中的partition参数应设置为多少,有没有相关的参考依据?
在nebula配置信息中,rate.limit导入速率可配置多少?有无相关的参考依据?
在spark任务提交参数中,哪些参数影响比较大?怎么设置比较合理?(如–master yarn、num-executors、executor-memory、executor-cores)

如果是从exchange源码上做优化的话,有没有一些好的方法?

1 个赞
1 个赞

谢谢老师回答。上面只提到了batch及rate.limit参数,其它问题内容能具体讲讲吗?

另外,关于tags或edges中partition分区参数的设置,跟我们创建space时设置的分区数partition_num,两个值有关系没?在设置时需求相互参考吗?

  1. batch是指 向nebula服务发送数据插入请求时,一次请求插入多少条数据。
  2. spark 任务提交的参数可以参考 https://spark.apache.org/docs/latest/configuration.html#application-properties
  3. tags和edges中设置的partition数是指 通过spark进行数据处理和写入时把数据拆分出的分区数,和创建space时指定的partition_num无关。
1 个赞

老师好,这个rocksdb的参数问题能帮忙解释下吗?在上面的图片中标注了~~~

另外一个问题,我们提交exchange的数据导入任务使用yarn-client(默认)和yarn-cluster两种模式,在导入性能上有什么区别没?推荐哪种模式更优?

这就是yarn-client与yarn-cluster的区别,在yarn官方文档中有体现的。推荐cluster模式。

client模式是将执行spark-submit命令的机器作为driver,cluster模式是随机在yarn集群选择一个机器作为driver,直白说 如果client不是yarn集群中的一个worker,那么client模式会增加额外的通信开销。

更详细的区别可以了解下 spark on yarn的driver是负责什么的,driver主要进行sparkcontext的初始化、资源申请、任务分配等,需要与executor执行者进行频繁通信。

1 个赞

那几个参数 在数据写入过程数据量过大或写入速度过快导致发生异常时可以进行调整。详细说明需要其他同学给你解释下 @Lisa

好的,谢谢老师!麻烦Lisa老师帮忙解答下哈 :slightly_smiling_face:

1 个赞

谢谢古老师!
另外再问下,在exchange组件session建立连接后/导入数据前,可以增加设置关闭/开启rocksdb自动压缩功能来提升数据导入效率吗?(importer是不是在这块做了相应的设置?)

UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = true }
UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = false }

这个可以去掉了哈,现在不推荐用 UPDATE CONFIGS 的方式去修改这些配置了(用这个意味着不是 local config)。

推荐还是用修改文件的方式来修改任何配置吧,上边是配置的解释

如果local_config为true,使用CONFIGS命令行修改配置项不会生效是吧?

对的