运行 我在 Giraph 上的工作

Running my own job on 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 class 的直接复制粘贴,仅更改了包名称和 class 名称。尝试使用 -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 和 this Whosebug question to make it work but unfortunately it still gives me a ClassNotFoundException. For better or worse, it doesn't throw it at me in the terminal anymore (it used to): terminal picture 的 HADOOP_CLASSPATH 建议。如您所见,它现在只失败并显示一般容器消息。

不幸的是,它仍然在日志中给我 Java.lang.ClassNotFoundException:log picture。 使用 Hadoop 2.4.0 和 Giraph 1.1.0。 我 运行不知道我的 Giraph 可能出了什么问题,开始考虑我是否应该转行。

您需要在 hadoop class 路径中包含 class GiraphAlgs.GiraphPBFS 的 jar。

此外,验证您的 class 路径是否由 运行 $bin/hadoop classpath 设置正确。

一旦在 hadoop 2.7 中设置 HADOOP_CLASSPATH 变量不起作用,我不得不将 jar 复制到 hadoop 共享库目录中:HADOOP_HOME/share/hadoop/mapreduce/lib.