Setup and configuration of JanusGraph for a Spark cluster and Cassandra
apache-spark, cassandra, hadoop, janusgraph, titan
Solution
Try fixing these properties:
janusgraphmr.ioformat.conf.storage.keyspace=janusgraph
storage.keyspace=janusgraph
Replace with:
janusgraphmr.ioformat.conf.storage.cassandra.keyspace=janusgraph
storage.cassandra.keyspace=janusgraph
The default keyspace name is `janusgraph`, so despite the mistakes on the property names, I don't think you would have observed that problem unless you loaded your data using a different keyspace name.
The latter property is described in the Configuration Reference. Also, keep an eye on this open issue to improve the docs for Hadoop-Graph usage.
Problem
I am running JanusGraph (0.1.0) with Spark (1.6.1) on a single machine. I did my configuration as described here. When accessing the graph on the gremlin-console with the SparkGraphComputer, it is always empty. I cannot find any error in the logfiles, it is just an empty graph. Is anyone using JanusGraph with Spark and can share his configuration and properties? Using a JanusGraph, I get the expected Output: ``` gremlin> graph=JanusGraphFactory.open('conf/test.properties') ==>standardjanusgraph[cassandrathrift:[127.0.0.1]] gremlin> g=graph.traversal() ==>graphtraversalsource[standardjanusgraph[cassandrathrift:[127.0.0.1]], standard] gremlin> g.V().count() 14:26:10 WARN org.janusgraph.graphdb.transaction.StandardJanusGraphTx - Query requires iterating over all vertices [()]. For better performance, use indexes ==>1000001 gremlin> ``` Using a HadoopGraph with Spark as GraphComputer, the graph is empty: ``` gremlin> graph=GraphFactory.open('conf/test.properties') ==>hadoopgraph[cassandrainputformat->gryooutputformat] gremlin> g=graph.traversal().withComputer(SparkGraphComputer) ==>graphtraversalsource[hadoopgraph[cassandrainputformat->gryooutputformat], sparkgraphcomputer] gremlin> g.V().count() ==>0==============================================> (14 + 1) / 15] ``` My conf/test.properties: ``` # # Hadoop Graph Configuration # gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph gremlin.hadoop.graphInputFormat=org.janusgraph.hadoop.formats.cassandra.CassandraInputFormat gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat gremlin.hadoop.memoryOutputFormat=org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat gremlin.hadoop.memoryOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat gremlin.hadoop.deriveMemory=false gremlin.hadoop.jarsInDistributedCache=true gremlin.hadoop.inputLocation=none gremlin.hadoop.outputLocation=output # # Titan Cassandra InputFormat configuration # janusgraphmr.ioformat.conf.storage.backend=cassandrathrift janusgraphmr.ioformat.conf.storage.hostname=127.0.0.1 janusgraphmr.ioformat.conf.storage.keyspace=janusgraph storage.backend=cassandrathrift storage.hostname=127.0.0.1 storage.keyspace=janusgraph # # Apache Cassandra InputFormat configuration # cassandra.input.partitioner.class=org.apache.cassandra.dht.Murmur3Partitioner cassandra.input.keyspace=janusgraph cassandra.input.predicate=0c00020b0001000000000b000200000000020003000800047fffffff0000 cassandra.input.columnfamily=edgestore cassandra.range.batch.size=2147483647 # # SparkGraphComputer Configuration # spark.master=spark://127.0.0.1:7077 spark.serializer=org.apache.spark.serializer.KryoSerializer spark.executor.memory=100g gremlin.spark.persistContext=true gremlin.hadoop.defaultGraphComputer=org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer ``` HDFS seems to be configured correctly as described here: ``` gremlin> hdfs ==>storage[DFS[DFSClient[clientName=DFSClient_NONMAPREDUCE_178390072_1, ugi=cassandra (auth:SIMPLE)]]] ```