首页 文章

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

提问于
浏览
0

我正在尝试运行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 . I also looked this up on 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

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

1 回答

  • 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
    

相关问题