anchor.diff:  
   CAUTION: OLTP operations on `HadoopGraph` are not efficient. They require linear scans to execute and are unreasonable for large graphs. In such large graph situations, make use of <<traversalvertexprogram,TraversalVertexProgram>> which is the OLAP implementation of the Gremlin language. Hadoop-Gremlin provides various `GraphComputer` implementations to execute OLAP computations over a `HadoopGraph`.
   
  -[source,text]
  -gremlin> hdfs.copyFromLocal('data/tinkerpop-modern-vertices.kryo', 'tinkerpop-modern-vertices.kryo')
  -==>null
  -gremlin> hdfs.ls()
  -==>rw-r--r-- marko supergroup 1439 tinkerpop-modern-vertices.kryo
  -gremlin> graph = GraphFactory.open('../../../hadoop-gremlin/conf/hadoop-gryo.properties')
  -==>hadoopgraph[gryoinputformat->gryooutputformat]
  -gremlin> g = graph.traversal(standard())
  -==>graphtraversalsource[hadoopgraph[gryoinputformat->gryooutputformat], standard]
  -gremlin> g.V().count()
  -==>6
  -gremlin> g.V().out().out().values('name')
  -==>ripple
  -==>lop
  -gremlin> g.V().group().by{it.value('name')[1]}.by('name').next()
  -==>a={marko=1, vadas=1}
  -==>e={peter=1}
  -==>i={ripple=1}
  -==>o={lop=1, josh=1}
  -
   [gremlin-groovy]
   ----
   hdfs.copyFromLocal('data/tinkerpop-modern.kryo', 'tinkerpop-modern.kryo')
  
positive.code: WARNING: Giraph uses a large number of Hadoop counters. The default for Hadoop is 120. In `mapred-site.xml` it is possible to increase the limit it via the `mapreduce.job.counters.limit` property. A good value to use is 1000. This is a cluster-wide property so be sure to restart the cluster after updating.
  
  WARNING: The maximum number of workers can be no larger than the number of map-slots in the Hadoop cluster minus 1. For example, if the Hadoop cluster has 4 map slots, then `giraph.maxWorkers` can not be larger than 3. One map-slot is reserved for the master compute node and all other slots can be allocated as workers to execute the VertexPrograms on the vertices of the graph.
  
  [source,text]
  gremlin> g = graph.traversal(computer()) // GiraphGraphComputer is the default graph computer when no class is specified
  ==>graphtraversalsource[hadoopgraph[gryoinputformat->gryooutputformat], giraphgraphcomputer]
  gremlin> g.V().count()
  INFO  org.apache.tinkerpop.gremlin.hadoop.process.computer.giraph.GiraphGraphComputer  - HadoopGremlin(Giraph): TraversalVertexProgram[GraphStep(vertex), CountGlobalStep, ComputerResultStep]
  INFO  org.apache.hadoop.mapred.JobClient  - Running job: job_201407281259_0037
  INFO  org.apache.hadoop.mapred.JobClient  -  map 0% reduce 0%
  ...
  INFO  org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph  - HadoopGremlin: CountGlobalMapReduce
  INFO  org.apache.hadoop.mapred.JobClient  - Running job: job_201407281259_0038
  INFO  org.apache.hadoop.mapred.JobClient  -  map 0% reduce 0%
  ...
  ==>6
  gremlin> g.V().out().out().values('name')
  INFO  org.apache.tinkerpop.gremlin.hadoop.process.computer.giraph.GiraphGraphComputer  - HadoopGremlin(Giraph): TraversalVertexProgram[GraphStep(vertex), VertexStep(OUT,vertex), VertexStep(OUT,vertex), PropertiesStep([name],value), ComputerResultStep]
  INFO  org.apache.hadoop.mapred.JobClient  - Running job: job_201407281259_0031
  INFO  org.apache.hadoop.mapred.JobClient  -  map 0% reduce 0%
  ...
  INFO  org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph  - HadoopGremlin: TraverserMapReduce
  INFO  org.apache.hadoop.mapred.JobClient  - Running job: job_201407281259_0032
  INFO  org.apache.hadoop.mapred.JobClient  -  map 0% reduce 0%
  ...
  ==>ripple
  ==>lop
  
  [gremlin-groovy]
  ----
  
negative.code: 
  NeoTechnology are the creators of the graph pattern-match query language link:http://www.neo4j.org/learn/cypher[Cypher]. It is possible to leverage Cypher from within Gremlin by using the `Neo4jGraph.cypher()` graph traversal method.
  
  [gremlin-groovy]
  ----
  graph = Neo4jGraph.open('/tmp/neo4j')
  graph.io(gryo()).readGraph('data/tinkerpop-modern.kryo')
  graph.cypher('MATCH (a {name:"marko"}) RETURN a')
  graph.cypher('MATCH (a {name:"marko"}) RETURN a').select('a').out('knows').values('name')
  graph.close()
  ----
  
  Thus, like <<match-step,`match()`>>-step in Gremlin, it is possible to do a declarative pattern match and then move back into imperative Gremlin.
  
  