使用Neo4j批处理导入程序导入大型数据集时配置设置

时间:2015-02-08 23:14:51

标签: neo4j out-of-memory batch-processing

我正在尝试使用Batch-importer向Neo4j导入2000万个节点和2.5亿个关系。我有8GB的RAM。

以下是batch.properties中的当前设置:

use_memory_mapped_buffers=false
neostore.nodestore.db.mapped_memory=500M
neostore.relationshipstore.db.mapped_memory=2000M
neostore.relationshipgroupstore.db.mapped_memory=10M
neostore.propertystore.db.mapped_memory=1G
neostore.propertystore.db.strings.mapped_memory=200M
neostore.propertystore.db.arrays.mapped_memory=0M
neostore.propertystore.db.index.keys.mapped_memory=15M
neostore.propertystore.db.index.mapped_memory=50M
batch_import.node_index.users=exact
batch_import.csv.quotes=false
cache_type=none

导入2000万个节点大约需要7分钟。

对于关系来说,导入1000万(根据控制台上的输出)需要13分钟。

意味着导入所有关系大约需要6个小时(250/10 * 13)。我们能改进吗?

1 个答案:

答案 0 :(得分:0)

您应该尝试Neo4j 2.2.0-M03

附带的新导入工具

它使用更少的内存,跨CPU更好地扩展。

如果您想使用我的批次导入程序:

通常它导入1M个节点/ s,大约100k到500k rels /秒。

你使用了多少堆?

  • 使用更快的磁盘
  • 使用更多内存
  • 索引增加了额外的开销(仅用于测试,尝试在没有索引的情况下运行它)
  • 如果您还没有使用Linux,如果您确实检查磁盘调度程序是noop还是截止日期没有cfq
  • 尝试use_memory_mapped_buffers = true