JanusGraph---批量导入数据优化

批量导入配置项

storage.batch-loading =true
  • 导入的数据必须具有一致性并且和已存在的数据必须具有一致性。(比如:name数据是具有唯一索引(a unique composite index),那么导入的数据在name属性上上和已有的数据不能重复)

  • 下面是优化配置,优化的目的,就是减少批量导入时间。

ID 分配优化

ID Block Size

ids.block-size
  • 配置项,JanusGraph实例通过id池管理对象从id blocks中获取ids值为新加入的vertex、edge分配唯一id,为了保证库唯一性,所以获取id block(id块)是昂贵的(因为存在多个实例竞争),所以增加block-size可以减少获取block的次数,但是值过大会导致多余的id被浪费掉。
  • 一般情况下事务的负载,ids.block-size的默认值是满足要求的。但是对于批量导入时,需要调节值为每个JanusGraph实例需要添加节点和边数的10倍。
  • 该配置项在集群中所有实例上值必须唯一。

ID Acquisition Process

1) ids.authority.wait-time
  • 配置毫秒:id池管理器允许id block获取程序最大允许等待时间,时间到还未获取到就失败。建议值设置为存储后端第95%时读写时间之和。
  • 该配置在集群上要设置统一值。
2) ids.renew-timeout
  • 在失败获取id block后,id池管理程序等待多少毫秒后再次发起一个新的尝试。尽可能大。

读写优化

Buffer Size

storage.buffer-size  缓存大小
  • JanusGraph会缓存写操作,然后批量发送到后端执行。这样可以减少请求次数,从而避免短时间内执行服务器写请求过多导致的失败。
  • 如果缓存设置太大,会增加写延迟因此会增加执行失败的可能性。
  • 建议:谨慎设置该值。

Read and Write Robustness

  • 如果存储后端的写或读操作失败后(storage.buffer-size 太大会增加失败的可能性),将会重试多少次才会放弃。
storage.read-attempts   读尝试的次数
storage.write-attempts  写尝试次数
storage.attempt-wait  :两次尝试之间的时间间隔,在批量导入情况下,此值可以设置大一些

策略

Parallelizing the Load

  • 如果存储后端可以可承受足够的请求,那么可以在多个机器上并行批量导入,可以减少导入时间。
  • Chapter 35, JanusGraph with TinkerPop’s Hadoop-Gremlin 通过MapReduce批量导入数据。
  • 如果不使用Hadoop,则可以将大图拆分成小图并行导入。
  • 如果图不可以被拆分,那么可以将顶点和边分开并行导入。(具体看文档)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,176评论 6 13
  • 我的家乡是沧州市,沧州一个小小的城市却有很久远的历史。 扁鹊,马致远,纪晓岚,张之洞,冯国璋,马本斋,霍元甲等...
    心旷神怡_3f41阅读 718评论 0 1
  • 2016年11月23日我们相恋。仓促又急切。只知道彼此相互喜欢却不明白未来长远的在一起是任重而道远的事情。我们都记...
    静听细水长流阅读 853评论 8 0
  • 现在是大四上学期的下旬,是11月份的尾巴,是接近2018年的最后一个月,心里慌慌的,乱乱的,每天都为别人看来没所谓...
    阿敏的耳朵阅读 401评论 1 1