Проблема с запуском задания жирафа (classnotfoundexception)

Я пытаюсь собрать пример SimpleShortestPathsComputation, включенный в Giraph, и запустить его из своего домашнего каталога. По сути, я просто пытаюсь настроить пример SimpleShortestPaths и запустить его без каких-либо хлопот (не совсем уверен, как лучше всего это сделать). Мой подход был следующим:

SimpleShortestPathsComputaiton.java:

import org.apache.giraph.graph.BasicComputation;
......
import org.apache.log4j.Logger;
import java.io.IOException;
public class SimpleShortestPathsComputation extends BasicComputation<
    LongWritable, DoubleWritable, FloatWritable, DoubleWritable> { 
......

Я строю так:

JCC = javac
JFLAGS = "-Xlint"
OUTPUT_CLASS="test"
CLASSPATH = $(HADOOP_HOME)/hadoop-core-0.20.203.0.jar:$(GIRAPH_HOME)/giraph-core/target/giraph-1.1.0-SNAPSHOT-for-hadoop-0.20.203.0-jar-with-dependencies.jar

default: SimpleShortestPathsComputation.class

SimpleShortestPathsComputation.class: SimpleShortestPathsComputation.java
mkdir -p $(OUTPUT_CLASS)
$(JCC) $(JFLAGS) -classpath $(CLASSPATH) -d $(OUTPUT_CLASS)    SimpleShortestPathsComputation.java
jar cvf SimpleShortestPathsComputation.jar -C $(OUTPUT_CLASS)/ .

Это отлично работает, и я создаю файл jar с именем SimpleShortestPathsComputation. Затем я пытаюсь запустить его так:

$HADOOP_HOME/bin/hadoop jar $GIRAPH_HOME/giraph-examples/target/giraph-examples-1.1.0-SNAPSHOT-for-hadoop-0.20.203.0-jar-with-dependencies.jar \
org.apache.giraph.GiraphRunner /home/hduser/SimpleShortestPathsComputation.jar \
-vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat \
-vip /user/hduser/input/tiny_graph.txt \
-vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat \
-op /user/hduser/output/shortestpaths -w 1 \
/

Однако это приводит к следующему:

Exception in thread "main" java.lang.ClassNotFoundException:   /home/hduser/SimpleShortestPathsComputation.jar
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at org.apache.giraph.utils.ConfigurationUtils.handleComputationClass(ConfigurationUtils.java:470)
at org.apache.giraph.utils.ConfigurationUtils.populateGiraphConfiguration(ConfigurationUtils.java:453)
at org.apache.giraph.utils.ConfigurationUtils.parseArgs(ConfigurationUtils.java:207)
at org.apache.giraph.GiraphRunner.run(GiraphRunner.java:74)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
at org.apache.giraph.GiraphRunner.main(GiraphRunner.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

Я не совсем уверен, что я делаю неправильно. Если кто-нибудь может указать мне правильное направление или дать ссылку на ресурс, который объясняет более простой способ того, что я пытаюсь выполнить, я был бы очень признателен!


person the_man_slim    schedule 21.10.2013    source источник
comment
Вы знаете разницу между классом и файлом jar?   -  person Thomas Jungblut    schedule 21.10.2013
comment
Да ... на самом деле у меня была опечатка выше - я должен пытаться запустить класс, а не саму банку.   -  person the_man_slim    schedule 21.10.2013


Ответы (1)


Если вы используете "Быстрый старт", на самом деле есть несоответствие с 1.0.0:

(1) аргумент "-vof" должен был быть "-of". «-vof» был введен в версии 1.1.0 (см. GIRAPH-774).

(2) В версии 1.0.0 не существует класса с именем «org.apache.giraph.examples.SimpleShortestPathsComputation», измените его на «org.apache.giraph.examples.SimpleShortestPathsVertex».

person Dongcai Shen    schedule 29.03.2014