4

我正在尝试在 Cloudera 4 的 linux (CentOS) 安装上编译一个简单的 WordCount.java map-reduce 示例。当我引用任何 hadoop 类时,我一直遇到编译器错误,但我无法弄清楚哪些 jars /usr/lib/hadoop 下的数百个我需要添加到我的类路径中才能编译。任何帮助将不胜感激!我最想要的是一个用于字数统计的 java 文件(以防我发现的文件由于某种原因不好)以及用于编译和运行它的相关命令。

我正在尝试仅使用 javac 而不是 Eclipse 来做到这一点。无论哪种方式,我的主要问题是 Cloudera 4 安装中的 Hadoop 库到底是什么,我需要包含这些库才能编译经典的 WordCount 示例。基本上,我需要将 Java MapReduce API 类(Mapper、Reducer 等)放在我的类路径中。

4

4 回答 4

5

我有一个构建我的 hadoop 类的脚本。尝试:

#!/bin/bash

program=`echo $1 | awk -F "." '{print $1}'`

if [ ! -d "${program}_classes" ]
    then    mkdir ${program}_classes/;
fi

javac -classpath /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.1.jar:/usr/lib/hadoop/client/h\
adoop-mapreduce-client-core-2.0.0-cdh4.0.1.jar -d ${program}_classes/ $1

jar -cvf ${program}.jar -C ${program}_classes/ .;

您可能错过了关键罐子:

 /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.1.jar

/usr/lib/hadoop/client/hadoop-mapreduce-client-core-2.0.0-cdh4.0.1.jar
于 2012-08-13T13:15:56.323 回答
2

如果您正在运行 Cloudera CDH4 虚拟机,那么以下内容应该可以让您运行:

javac -classpath /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.0.jar:/usr/lib/hadoop/client/hadoop-mapreduce-client-core-2.0.0-cdh4.0.0.jar -d wordcount_classes WordCount.java
于 2012-09-03T20:14:05.707 回答
1

或者您可以导出环境:

export JAVA_HOME=/usr/java/default

export PATH=${JAVA_HOME}/bin:${PATH}

export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar

并使用以下命令:

$ bin/hadoop com.sun.tools.javac.Main WordCount.java

$ jar cf wc.jar WordCount*.class
于 2015-11-05T02:28:25.607 回答
0

如果您使用的是 Eclipse,请添加 Hadoop 包。您可以从 java2s 或任何类似站点获得它。我不能说不知道你到现在为止做了什么。

于 2012-08-11T04:05:38.907 回答