运行 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.java
的 Cooccurrence.java
因为这个文件似乎是执行同现算法的文件。但是我如何告诉 yarn 将此文件与输入文件上的 pairs
和 stripes
参数一起使用?
您应该为 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
没有收到任何错误。
我在 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.java
的 Cooccurrence.java
因为这个文件似乎是执行同现算法的文件。但是我如何告诉 yarn 将此文件与输入文件上的 pairs
和 stripes
参数一起使用?
您应该为 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
没有收到任何错误。