2015-02-08 43 views
0

我試圖使用Batch-importer導入2000萬個節點和2.5億個關係到Neo4j。我有8GB的RAM。使用Neo4j導入大型數據集時配置設置批量導入程序

這裏是我的當前設置在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 

花了大約7分鐘,進口20萬個節點。

看來,對於關係而言,導入1000萬(按照控制檯上的輸出)需要13分鐘。

這意味着需要大約6個小時(250/10 * 13)來導入所有的關係。我們可以改進嗎?

回答

0

你應該儘量自帶Neo4j 2.2.0-M03

它使用較少的內存,擴展在CPU更好的新的導入工具。

如果你想要去與我的批處理進口商:

通常它進口1M節點/ s和大約100K至500K RELS /秒。

你使用多少堆?

  • 使用速度更快的磁盤
  • 使用更多的內存
  • 指數增加了額外的開銷(只是用於測試,嘗試沒有索引來運行它),如果你不還,如果
  • 使用Linux,你做檢查磁盤調度是空操作,或無期限CFQ
  • 嘗試use_memory_mapped_buffers =真
+0

謝謝邁克爾,這個優秀的祕訣! 我已經轉移到使用新的導入工具,我可以在25分鐘內導入完整的數據集。 你能解釋一下控制檯輸出的含義嗎? 它會打印跳過的關係數量嗎? – Jay 2015-02-10 01:04:50

+0

特別是,以下不同的意思是什麼意思?它每秒都在控制檯上打印輸出嗎? '[INPUT ------ | PREPARE(| RELATIO ||] 49M' and'[Relationship - > Relationship + counts -------] 282M' 我想找每秒導入多少個節點/邊緣。 – Jay 2015-02-12 03:04:30