命令行编译mapreduce作业

时间:2014-02-14 18:46:24

标签: hadoop

大家。我最近成功安装了我的计算机上的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的对象。

1 个答案:

答案 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:

https://www.cloudera.com/content/support/en/downloads/download-components/download-products.html?productID=F6mO278Rvo

它已经安装了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.