Performance Janusgraph(GremlinServer)导入可提高性能
我正在尝试导入1GB的图形数据(由~100k个顶点、360万条边组成),这是gryo格式。我试图通过gremlin客户端导入,但出现以下错误: 小精灵> graph.io(IoCore.gryo()).readGraph('janusgraph\u dump\u 2020\u 09\u 30\u local.gryo')) 超出了GC开销限制类型:help或:h以获取帮助。展示 堆栈跟踪?[yN]y java.lang.OutOfMemoryError:GC开销限制 超过 org.cliffc.high_scale_lib.NonBlockingHashMapLong$CHM.(NonBlockingHashMapLong.java:471) 在 org.cliffc.high_scale_lib.NonBlockingHashMapLong.initialize(NonBlockingHashMapLong.java:241) Gremlin服务器,Cassandra详细信息如下: 小精灵服务器: Janusgraph版本:0.5.2 小精灵版本:3.4.6Performance Janusgraph(GremlinServer)导入可提高性能,performance,import,cassandra,janusgraph,gremlin-server,Performance,Import,Cassandra,Janusgraph,Gremlin Server,我正在尝试导入1GB的图形数据(由~100k个顶点、360万条边组成),这是gryo格式。我试图通过gremlin客户端导入,但出现以下错误: 小精灵> graph.io(IoCore.gryo()).readGraph('janusgraph\u dump\u 2020\u 09\u 30\u local.gryo')) 超出了GC开销限制类型:help或:h以获取帮助。展示 堆栈跟踪?[yN]y java.lang.OutOfMemoryError:GC开销限制 超过 org.cliffc.
Heap: JAVA_OPTIONS="-Xms4G -Xmx4G …
// gremlin conf
threadPoolWorker: 8
gremlinPool: 16
scriptEvaluationTimeout: 90000
// cql props
query.batch=true
Cassandra位于具有3个节点的集群中
卡桑德拉版本:3.11.0
节点1:RAM:8GB,Cassandra堆:1GB(-Xms1G-Xmx1G)节点2:RAM:8GB,Cassandra堆:4GB(-Xms4G-Xmx4G)
节点3:RAM:8GB,Cassandra堆:4GB(-Xms4G-Xmx4G) 每个节点都安装了Gremlin服务器(客户端负载平衡器)。但是我们正在Node1中执行gremlin查询 有人能在以下方面帮助我吗 导入(任何配置更改)需要做什么? >>将海量数据导出/导入Janusgraph(Gremlin服务器)的最佳方式是什么?(我需要答案) 有什么方法可以分块导出数据并分块导入吗? 提前谢谢 编辑: 我已经将Node1,Gremlin服务器堆增加到2GB。导入查询响应已取消。也许,对于Gremlin和Cassandra来说,RAM分配是不够的。这就是为什么我将其保持在1GB,以便执行查询 考虑到巨大的数据量(数十亿个顶点/边),这是非常少的,希望8GB RAM和2/4内核对于集群中的每个节点都足够。
Graph.io()
和现在首选的Gremlin步骤io()
使用GryoReader
读取文件(除非图形提供程序覆盖后一个Gremlinio())
step,我认为JansuGraph不会)。因此,如果使用GryoReader
,通常会需要大量内存(比您预期的要多),因为它会缓存所有顶点以加快加载速度。最终,它在加载方面并不是非常有效,TinkerPop认为,提供商在遇到io()
步骤时,会通过拦截io()
来优化自己的本地批量加载程序的加载。如果没有这种优化,一般建议使用直接使用的图的批量加载工具。对于JanusGraph,这可能意味着将加载作为脚本的一部分进行并行化,或者使用Gremlin OLAP加载方法。一些建议可以在以及这些博客帖子中找到:
还可以考虑自定义<代码> VistoDeals/Cuff>以进行大容量加载。TinkerPop有一个更通用的继承者(现在在最新版本中已弃用/删除),它在JanusGraph中颇受欢迎,因为它是TinkerPop放弃提供此类功能之前的通用批量加载工具
在几百万条边的规模下,我可能会编写一个小的groovy脚本,在Gremlin控制台中运行,直接将数据加载到图形中,避免先尝试使用Gryo这样的中间格式。它可能会运行得更快,并且可以避免您对JanusGraph的批量加载策略进行过多的研究。如果您选择这种情况,那么我上面提供的JanusGraph文档的链接应该对您有很大帮助。您可以不用担心使用OLAP、Spark和其他选项,直到有数亿条边(或更多)要加载。增加堆。。。至少3GbI已增加到2GB,然后查询被取消(响应)。我忘了提了。Cassandra真的不适合在这么低的堆环境中运行。。。您还可以为低堆大小tun JVM GC…我还配置了这样一种方式,gremlin将只连接到另外两个具有4GB堆但没有用处的Cassandra,Janus将使用集群中的所有Cassandra节点,因为您配置的是初始接触点。。。