在hadoop中运行共现算法

时间:2016-07-23 23:34:01

标签: java hadoop yarn

我在github上发现了以下项目https://github.com/fbukevin/hadoop-cooccurrence,它在hadoop中使用了共现算法。

我正在使用虚拟化的Ubuntu 14.04并设法使用此指令http://www.bogotobogo.com/Hadoop/BigData_hadoop_Install_on_ubuntu_single_node_cluster.php将hadoop安装为单节点群集。我是hadoop的新手,这是我第一次尝试用纱线运行程序。

我可以在命令行中执行命令yarn,但我不知道如何在yarn中运行共现算法。在描述中,它表示该程序可以与以下命令一起使用

$ yarn jar <hadoop>.jar [pairs | stripes] <input_file>

所以我尝试了这个:

$ yarn jar /home/vmiller/Downloads/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar pairs pg100.txt
Exception in thread "main" java.lang.ClassNotFoundException: pairs
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:278)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

这绝对不正确,但我不知道如何正确运行命令。不知何故,我必须告诉yarn使用Cooccurrence.java中的hadoop-cooccurrence/src/main/java/cooc/Cooccurrence.java,因为此文件似乎是执行共生算法的文件。但是如何告诉yarn使用此文件与输入文件上的pairsstripes参数?

2 个答案:

答案 0 :(得分:0)

你应该给jar提供jar的路径,包括Cooccurrence类。 Jar在目标文件夹中(cooc-1.0-SNAPSHOT.jar)。

您不需要指明在清单文件中设置的班级名称

答案 1 :(得分:0)

我实际上设法运行该程序。我的方法并没有错,因为tokiloutok提到我必须包含正确的jar文件。

在我执行命令之前,我必须将pg100.txt导入HDFS。

所以我不得不用

停用名称节点的安全模式
hdfs dfsadmin -safemode leave

并使用

导入文件
hdfs dfs -put /home/vmiller/workspace/hadoop-cooccurrence/pg100.txt /user/hadoop/

这样我才能最终运行

yarn jar target/cooc-1.0-SNAPSHOT.jar pairs pg100.txt

没有任何错误。