2016-09-25 162 views
0

我试图运行WordCount example。但是我正在编译程序时遇到问题。无法执行基本的Hadoop Mapreduce Wordcount示例

我得到的错误:

error: package org.apache.hadoop.mapred does not exist

执行后:

javac -classpath /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.3.jar -d wordcount_classes WordCount.java 

我成立了Hadoop的使用这个tutorial我也看了这个在stackoverflowquestion并在/usr/local/hadoop执行bin/hadoop classpath命令。这是我得到的输出:

/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/share/hadoop/common/lib/* :/usr/local/hadoop/share/hadoop/common/* :/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/* :/usr/local/hadoop/share/hadoop/hdfs/* :/usr/local/hadoop/share/hadoop/yarn/lib/* :/usr/local/hadoop/share/hadoop/yarn/* :/usr/local/hadoop/share/hadoop/mapreduce/lib/* :/usr/local/hadoop/share/hadoop/mapreduce/* :/contrib/capacity-scheduler/*.jar

但我不知道该怎么做,或者我的下一步应该是什么!请帮忙!

回答

2

您正在尝试使用众多hadoop依赖关系jar(hadoop-common-x.x.x.jar)之一来编译源代码。包含错误消息中记录的mapred软件包的jar是hadoop-mapreduce-client-core jar。

我建议你使用诸如Maven或Gradle等构建工具来构建源代码,因为它会为你管理传递依赖。

或者继续与你的javac手动调用,尝试这样的事情(未经测试):

javac -cp '/usr/local/hadoop/share/hadoop/common/*' \ 
    -cp '/usr/local/hadoop/share/hadoop/hdfs/lib/*' \ 
    -cp '/usr/local/hadoop/share/hadoop/hdfs/*' \ 
    -cp '/usr/local/hadoop/share/hadoop/yarn/lib/*' \ 
    -cp '/usr/local/hadoop/share/hadoop/yarn/*' \ 
    -cp '/usr/local/hadoop/share/hadoop/mapreduce/lib/*' \ 
    -cp '/usr/local/hadoop/share/hadoop/mapreduce/*' \ 
    -d wordcount_classes WordCount.java