Выполняю свою работу на Giraph

Итак, я успешно выполнил SimpleShortestPathComputation на своем компьютере с помощью сценария, показанного здесь:

#VARIABLES
user_dir=/user/hduser
jar=giraph-examples/target/giraph-examples-1.1.0-for-hadoop-2.4.0-jar-with-dependencies.jar
runner=org.apache.giraph.GiraphRunner
computation=org.apache.giraph.examples.SimpleShortestPathsComputation
informat=org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat
outformat=org.apache.giraph.io.formats.IdWithValueTextOutputFormat

#DELETE PREVIOUS
bin/hdfs dfs -rm -r $user_dir/output/shortestpaths

#GIRAPH JOB
bin/hadoop jar $GIRAPH_HOME/$jar $runner -Dgiraph.yarn.task.heap.mb=3000 $computation -vif $informat -vip $user_dir/input/tiny_graph.txt -vof $outformat -op $user_dir/output/shortestpaths -w 1

Теперь проблема в том, что я пытаюсь запустить свою собственную работу. На самом деле это прямая копия-вставка из класса SimpleShortestPathComputation, только изменено имя пакета и имя класса. Попытка запустить его с -libjars. Вот полный скрипт:

#VARIABLES
user_dir=/user/hduser
jar=giraph-examples/target/giraph-examples-1.1.0-for-hadoop-2.4.0-jar-with-dependencies.jar
runner=org.apache.giraph.GiraphRunner
computation=org.apache.giraph.examples.SimpleShortestPathsComputation
informat=org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat
outformat=org.apache.giraph.io.formats.IdWithValueTextOutputFormat
libjars=/usr/local/hadoop-2.4.0/lib/giraphtrials.jar,$GIRAPH_HOME/giraph-core.jar

#Setup class paths
export HADOOP_CLASSPATH=/usr/local/hadoop-2.4.0/lib/giraphtrials.jar:$GIRAPH_HOME/$jar:$HADOOP_CLASSPATH

#DELETE PREVIOUS
bin/hdfs dfs -rm -r $user_dir/output/shortestpaths

#GIRAPH JOB
bin/hadoop jar $GIRAPH_HOME/$jar $runner -libjars $libjars \
GiraphAlgs.GiraphPBFS -vif $informat -vip $user_dir/input/tiny_graph.txt \
-vof $outformat -op $user_dir/output/shortestpaths -w 1

Как видите, я пытался использовать -libjars и предложение HADOOP_CLASSPATH из этого Вопрос Stackoverflow, чтобы заставить его работать, но, к сожалению, он все еще дает мне исключение ClassNotFoundException. Хорошо это или плохо, но он больше не бросает мне его в терминал (раньше): картинка терминала. Как вы можете видеть, теперь он терпит неудачу только с общим сообщением контейнера.

К сожалению, в журналах по-прежнему возникает исключение Java.lang.ClassNotFoundException: картинка журнала . Использование Hadoop 2.4.0 и Giraph 1.1.0. У меня заканчиваются идеи, что может быть не так с моим Жирафом, и я начинаю думать, не стоит ли мне сменить профессию.


person user2992391    schedule 17.02.2018    source источник


Ответы (1)


Вам нужно иметь банку, содержащую класс GiraphAlgs.GiraphPBFS в пути к классам Hadoop.

Кроме того, убедитесь, что ваш путь к классам задан правильно, запустив $bin/hadoop classpath.

После того, как в Hadoop 2.7 установка переменной HADOOP_CLASSPATH не сработала, мне пришлось скопировать банку в каталог общей библиотеки Hadoop: HADOOP_HOME/share/hadoop/mapreduce/lib.

person enator    schedule 14.03.2018
comment
Использование $HADOOP_HOME/share/hadoop/mapreduce/lib действительно сработало! Раньше я пробовал $HADOOP_HOME/lib/share и просто помещал jar-файлы в путь к классам, но на самом деле это дало мне некоторый прогресс. Большое спасибо! - person user2992391; 26.03.2018