大家。我最近成功安装了我的计算机上的Windows HDP2.0。它还通过了HDP2.0提供的烟雾测试示例。我试图通过命令行编译我自己的mapreduce程序。我使用命令行:`
javac -classpath C:\ HDP \ Hadoop的2.2.0.2.0.6.0-0009 \ Hadoop的2.2.0.2.0.6.0-0009-core.jar添加 wordcountclass WordCount.java
然而,它不起作用。我发现hadoop-2.2.0.2.0.6.0-0009-core.jar
文件夹下实际上没有c:\hdp\hadoop-2.2.0.2.0.6.0-0009
。我想知道如何使用HDP2.0 for windows编译mapreduce程序。我不确定我需要将哪些jar文件设置为类路径。能帮帮我吗,非常感谢!!!
PS :错误信息都是无法找到符号Mapper,Reducer和MapReduce API的对象。
答案 0 :(得分:1)
我目前在eclipse中成功使用(参见下面的classpath): Hadoop的共* Hadoop的hdfs- * Hadoop的MapReduce的客户端* Hadoop的MapReduce的客户jobclient * 蜂巢-JDBC * 蜂房metastore- * 蜂巢服务 libfb303 * libthrift * log4j的 SLF4J的API * SLF4J-log4j12 *
其中一些位于不同的地方,一些位于hadoop目录,hadoop-hdfs,hadoop-mapreduce,hadoop-yarn,hbase,hcatalog,hive。
我包含了所有那些有jar文件的位置,然后从那里修剪它。在Linux中,我这样导出:
export CLASSPATH =。:$ CLASSPATH。:: / usr / lib / hadoop / lib / native / :/ usr / lib / hadoop /
但要回答你的问题,只需找到上面的库,那应该有用。此外,如果您想使用已构建的系统,请尝试Cloudera Quickstart VM:
它已经安装了hadoop和一些用于MapReduce作业的示例eclipse代码。
Windows和Linux没有区别,只是设置类路径的方式。这些库是一样的。
编辑:
顺便说一句,我编译我的代码(首先创建mapstuff_classes目录):
javac -cp $CLASSPATH -d mapstuff_classes MapStuff.java
然后创建一个jar文件:
jar -cvf mapstuff.jar -C mapstuff_classes/ .
然后最终像这样运行:
hadoop fs -mkdir input // creates a directory in hadoop
hadoop fs -copyFromLocal data.csv input // copies your data into hadoop
hadoop jar mapstuff.jar MapStuff input output // hadoop creates the output directory, took me a while to realize that.