我正在尝试在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等)放在我的类路径中。
答案 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或任何类似的网站获得它。我不知道到现在为止你做了什么。