使用 Neo4j Batch-importer 导入大型数据集时配置设置

Configure settings when importing a large dataset using Neo4j Batch-importer

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

这是我在 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)。我们可以改进吗?

您应该尝试 Neo4j 2.2.0-M03

附带的新导入工具

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

如果您想使用我的批量导入器:

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

你用了多少堆?

  • 使用更快的磁盘
  • 使用更多 RAM
  • 索引增加了额外的开销(只是为了测试,尝试 运行 它没有索引)
  • 如果你还没有使用Linux,如果你检查磁盘调度程序是否为 noop 或 deadline no cfq
  • 尝试 use_memory_mapped_buffers=true