在Giraph上完成自己的工作

时间:2018-02-17 20:28:47

标签: 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

正如您所看到的,我已经尝试使用来自this Stackoverflow question的-libjars和HADOOP_CLASSPATH建议来使其工作,但不幸的是它仍然给了我一个ClassNotFoundException。无论好坏,它都不会再在终端中抛弃它(以前):terminal picture。正如您所看到的,它现在只能通过一般容器消息失败。

不幸的是,它仍然在日志中提供了Java.lang.ClassNotFoundException:log picture。 使用Hadoop 2.4.0和Giraph 1.1.0。 我已经没想到我的Giraph会出现什么问题,并开始考虑是否应该改变职业。

1 个答案:

答案 0 :(得分:0)

你需要在hadoop类路径中包含类GiraphAlgs.GiraphPBFS的jar。

此外,通过运行.ent name验证您的类路径是否设置正确。

一旦进入hadoop 2.7设置HADOOP_CLASSPATH变量不起作用,我不得不在hadoop share lib目录中复制jar:$bin/hadoop classpath