运行 hadoop中的共现算法

Run co-occurrence algorithm in hadoop

我在 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中的共现算法。在描述中它说该程序可以与以下命令一起使用

$ 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.run(URLClassLoader.java:366)
    at java.net.URLClassLoader.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 使用位于 hadoop-cooccurrence/src/main/java/cooc/Cooccurrence.javaCooccurrence.java 因为这个文件似乎是执行同现算法的文件。但是我如何告诉 yarn 将此文件与输入文件上的 pairsstripes 参数一起使用?

您应该为 jar 提供包含共现 class 的 jar 路径。 Jar 在目标文件夹中 (cooc-1.0-SNAPSHOT.jar).

您不需要指明 class 名称,因为它已在清单文件中设置

我实际上 运行 编写了程序。我的方法并没有错,正如 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

没有收到任何错误。