无法执行基本的Hadoop Mapreduce Wordcount示例

时间:2016-09-25 00:48:16

标签: java linux ubuntu hadoop mapreduce

我正在尝试运行WordCount example。但我面临着编制程序的问题。

我收到错误:

  

错误:包org.apache.hadoop.mapred不存在

执行后:

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

我使用此tutorial设置了hadoop。 我还在stackoverflow 上查看了这个内容:question并在bin/hadoop classpath中执行了/usr/local/hadoop命令。这是我获得的输出:

  

/ 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

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

1 个答案:

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