如何在Cloudera 4上编译WordCount.java?

时间:2012-08-11 01:04:20

标签: java hadoop javac cloudera word-count

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

我正在尝试使用javac而不是Eclipse。我的主要问题是Cloudera 4安装的Hadoop库究竟是什么,我需要包含这些库以便编译经典的WordCount示例。基本上,我需要将Java MapReduce API类(Mapper,Reducer等)放在我的类路径中。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分:0)

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