hadoop - tiene - cuál es la medida de una tarea de tierra
Apache Giraph: no se puede ejecutar en el modo maestro/trabajador dividido ya que solo hay 1 tarea a la vez (1)
Ejecuté Giraph 1.0.0 con hadoop 2.2.0 usando el ejemplo de PageRank Benchmark aquí .
De repente, recibí este resultado de error:
Excepción en el hilo "principal" java.lang.IllegalArgumentException: checkLocalJobRunnerConfiguration: ¡Cuando se utiliza LocalJobRunner, debe tener solo un trabajador, ya que solo 1 tarea a la vez! en org.apache.giraph.job.GiraphJob.checkLocalJobRunnerConfiguration (GiraphJob.java:151) en org.apache.giraph.job.GiraphJob.run (GiraphJob.java:225) en org.apache.giraph.benchmark.GiraphBenchmark.run (GiraphBenchmark.java:90) en org.apache.hadoop.util.ToolRunner.run (ToolRunner.java:70) en org.apache.hadoop.util.ToolRunner.run (ToolRunner.java:84) en org.apache. giraph.benchmark.PageRankBenchmark.main (PageRankBenchmark.java:71) en sun.reflect.NativeMethodAccessorImpl.invoke0 (Método nativo) en sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) en sun.reflect.DelegatingMethodAccessorImpl.invoke ( DelegatingMethodAccessorImpl.java:43) en java.lang.reflect.Method.invoke (Method.java:606) en org.apache.hadoop.util.RunJar.main (RunJar.java:212)
Cuando cambié el número de trabajadores a 1, obtuve:
Excepción en el hilo "principal" java.lang.IllegalArgumentException: checkLocalJobRunnerConfiguration: Cuando se utiliza LocalJobRunner, no se puede ejecutar en modo split master / worker ya que solo hay 1 tarea a la vez. en org.apache.giraph.job.GiraphJob.checkLocalJobRunnerConfiguration (GiraphJob.java:157) en org.apache.giraph.job.GiraphJob.run (GiraphJob.java:225) en org.apache.giraph.benchmark.GiraphBenchmark.run (GiraphBenchmark.java:90) en org.apache.hadoop.util.ToolRunner.run (ToolRunner.java:70) en org.apache.hadoop.util.ToolRunner.run (ToolRunner.java:84) en org.apache. giraph.benchmark.PageRankBenchmark.main (PageRankBenchmark.java:71) en sun.reflect.NativeMethodAccessorImpl.invoke0 (Método nativo) en sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) en sun.reflect.DelegatingMethodAccessorImpl.invoke ( DelegatingMethodAccessorImpl.java:43) en java.lang.reflect.Method.invoke (Method.java:606) en org.apache.hadoop.util.RunJar.main (RunJar.java:212)
Alguna solución?
Hola, ¿supongo que no estás ejecutando un clúster? Si corro en nuestras máquinas virtuales de demostración, obtengo el mismo error.
Puede desactivar el comportamiento del trabajador maestro dividido en giraph-site.xml
giraph.SplitMasterWorker=false
Si solo desea desactivar esto durante una ejecución de una sola pasada, también puede pasarlo como un parámetro de línea de comando a su programa.
-ca giraph.SplitMasterWorker=false
Por ejemplo, ejecuto una demostración para mi conferencia Big Data de esta manera:
#!/bin/bash
yarn jar /root/giraph-0.0.1-SNAPSHOT-jar-with-dependencies.jar org.apache.giraph.GiraphRunner at.jku.tk.steinbauer.bigdata.giraph.MaxInDegreeComputation -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/hue/graph/tinygraph.txt -of org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/hue/graph/degree -w 1 -ca giraph.SplitMasterWorker=false