Пример кратчайших путей Giraph ClassNotFoundException

я пытаюсь запустить пример кратчайших путей из инкубатора жирафа ( https://cwiki.apache.org/confluence/display/GIRAPH/Shortest+Paths +Пример). Однако вместо выполнения примера из файла giraph-*-dependencies.jar я создал свою собственную банку заданий. Когда я создал один файл задания, как показано в примере, я получил

java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.test.giraph.Test$SimpleShortestPathsVertexInputFormat

. Затем я переместил внутренние классы (SimpleShortestPathsVertexInputFormat и SimpleShortestPathsVertexOutputFormat) для разделения файлов и переименовал их на всякий случай (SimpleShortestPathsVertexInputFormat_v2, SimpleShortestPathsVertexOutputFormat_v2); классы больше не статичны. Это решило проблемы класса, не найденного для SimpleShortestPathsVertexInputFormat_v2, однако я все еще получаю ту же ошибку для SimpleShortestPathsVertexOutputFormat_v2. Ниже моя трассировка стека.

INFO mapred.JobClient: Running job: job_201205221101_0003
INFO mapred.JobClient:  map 0% reduce 0%
INFO mapred.JobClient: Task Id : attempt_201205221101_0003_m_000005_0, Status : FAILED
    java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.test.giraph.utils.SimpleShortestPathsVertexOutputFormat_v2
            at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:898)
            at org.apache.giraph.graph.BspUtils.getVertexOutputFormatClass(BspUtils.java:134)
            at org.apache.giraph.bsp.BspOutputFormat.getOutputCommitter(BspOutputFormat.java:56)
            at org.apache.hadoop.mapred.Task.initialize(Task.java:490)
            at org.apache.hadoop.mapred.MapTask.run(MapTask.java:352)
            at org.apache.hadoop.mapred.Child$4.run(Child.java:259)
            at java.security.AccessController.doPrivileged(Native Method)
            at javax.security.auth.Subject.doAs(Subject.java:415)
            at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
            at org.apache.hadoop.mapred.Child.main(Child.java:253)
    Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.test.giraph.utils.SimpleShortestPathsVertexOutputFormat_v2
            at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:866)
            at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:890)
            ... 9 more

Я проверил свою банку с заданиями, и все классы там. Кроме того, я использую hadoop 0.20.203 в псевдораспределенном режиме. То, как я запускаю свою работу, представлено ниже.

hadoop jar giraphJobs.jar org.test.giraph.Test -libjars /path/to/giraph-0.2-SNAPSHOT-jar-with-dependencies.jar /path/to/input /path/to/output 0 3

Также я определил HADOOP_CLASSPATH для файла giraph-*-dependencies.jar. Я могу без проблем запустить пример PageRankBenchmark (непосредственно из giraph-*-dependencies.jar), и пример с коротким путем тоже работает (тоже напрямую из giraph-*-dependencies.jar).Другие задания Hadoop работают без проблем (где-то я читал, чтобы проверить, правильно ли работает мой «кластер»). Кто-нибудь сталкивался с подобной проблемой? Любая помощь будет оценена.


Решение(извините, что публикую это в таком виде, но я не могу ответить на свой вопрос еще пару часов)

Чтобы решить эту проблему, мне пришлось добавить свою банку Job в -libjars изменения в HADOOP_CLASSPATH, где они были сделаны). Команда запуска задания теперь выглядит так.

hadoop jar giraphJobs.jar org.test.giraph.Test -libjars /path/to/giraph-0.2-SNAPSHOT-jar-with-dependencies.jar,/path/to/job.jar /path/to/input /path/to/output 0 3

Список банок должен быть разделен запятой. Хотя это решило мою проблему. Мне все еще любопытно, почему я должен передавать свою банку работы как параметр «путь к классам»? Может кто-нибудь объяснить мне, в чем рациональность этого? Поскольку мне показалось странным (по меньшей мере) вызывать мою банку заданий, а затем снова передавать ее как банку «путь к классам». Мне действительно интересно объяснение.

5
задан chomp 11 March 2015 в 03:14
поделиться