分布式问题

原先 单机 A meta graph storage
现在 三台机 A meta storage B graph storage C graph storage

原来单机只写入A
现在向 B C写入,每个rdd partition会根据partitionId选择B或者C
同样spark参数,导入相同数据现在比原来还要慢些,分布式只是提高query可用性的吗?对数据导入,和query的性能理论上有提高作用吗?

怎么样才能提高写入性能呢?

nebual好像是允许loop edge的,这样子感觉会在遍历时候有问题的吧

你的space是几副本的。
NebulaGraph的集群模式 多storage服务可以将数据进行分散的,写入时需要计算数据所在的partition,根据partitionId进行写。 graph服务之间是无状态的,可以做到负载均衡,并且方便水平扩展。Nebula 架构剖析系列(零)图数据库的整体架构设计

提高写入性能:适当调大Spark的并发数和每条NGQL语句的数据条数batch; 服务端可以适当调大buffer size(在storaged配置文件中增加 max_buffer_size配置)。

几副本是指 replica? create space时候没有特别设置,应该是默认的,这个跟导入性能有关吗?副本越多不是应该速度越慢?
storage默认是100个partition?

create space的时候默认是单副班,100个partition的。

所以,多机部署增加 meta,graph,storage,到底哪个能够提高导入数据的性能呢?我意思是常规insert的方法,如果用ingest sst,那多机同时干当然是提高速度。

bump

  1. 增加storage 会分散磁盘写的压力,可以提高导入性能的。
  2. 当storage足够空闲了,此时瓶颈会在graph上,增加graph可以提高写入的并发量。
  3. meta的heartbeat可以适当调大,因为storage每隔heartbeat时间会从meta读取schema,读取会加锁,也会有性能影响。
  4. 大量数据导入之前,把自动compact配置关掉。
2 个赞

浙ICP备20010487号