使用 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
我正在尝试使用 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