编译Hadoop 2.2.0工作?

时间:2013-10-21 07:52:07

标签: java hadoop compilation

似乎所有示例都是在考虑旧版本的情况下构建的。

如何在Ubuntu上编译我的java程序,以便它引用hadoop-2.2.0库?

我应该包含哪些jar文件?

命令是什么? 是不是 -

javac -classpath libraries wordcount.java

谢谢。

6 个答案:

答案 0 :(得分:11)

Linux机器最简单的解决方案是:

javac -classpath `yarn classpath` -d . WordCount.java

或者:

export CLASSPATH=`yarn classpath`
javac -classpath $CLASSPATH -d . WordCount.java

答案 1 :(得分:10)

我发现了以下内容:

javac -classpath $HADOOP_HOME/share/hadoop/common/hadoop-common-2.2.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.2.0.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar -d wordcount_classes myWordCount.java

这允许我编译Wordcount示例(或者在本例中是我的一个名为myWordCount的副本)。

答案 2 :(得分:3)

Hadoop有一个命令" hadoop classpath"它为您提供必要的类路径。 即

  

hadoop classpath   /etc/hadoop/conf:/usr/lib/hadoop/lib/:/usr/lib/hadoop/.//:/usr/lib/hadoop-hdfs/./:/usr/ LIB / Hadoop的HDFS / LIB / :/ usr / lib中/ Hadoop的HDFS /.//:/ usr / lib中/ Hadoop的纱线/ LIB / :/ usr / lib中/ hadoop的-yarn /.//:/ usr / lib中/ Hadoop的映射精简/ LIB / :/ usr / lib中/ Hadoop的映射精简/.//

所以,如果你想编译,你可以这样使用它..

  

javac -classpath $(hadoop classpath)-d。 WordCount.java

答案 3 :(得分:0)

你必须安装Cygin,你可以运行你的hadoop示例,你也可以用eclipse配置你的hadoop

答案 4 :(得分:0)

运行命令:“yarn classpath”以查看目录列表。当我使用这个列表作为javac的-classpath选项时,我的Java程序就会编译。

我正在运行HortonWorks v2.0,Apache Hadoop 2.2.0。

答案 5 :(得分:0)

我也在使用Hadoop示例罐子。许多视频/教程/博客中的信息都基于旧版本。

当我们编译这些示例或编写任何我们自己的MapReduce程序时,那将使用hadoop包(即在IDE中导入jar /添加对外部jar的引用 - 类似于在MS Visual Studio中添加对.dll的引用), IDE将负责为每个类正确调用javac。

现在手动编译任何类,例如WordCount.java,我们需要告诉javac我们的类所依赖的所有jar。我跟踪过时的视频,但是共享了一个信息,即在.bashrc中设置变量,引用所有Hadoop相关的jar文件,然后在javac -classpath $ VARIABLE filename.java中使用它。

e.g。我使用的名称为$ HADOOP_CLASSPATH,其值如此处所示(我在Mac OS X上)

的/ usr /本地/ hadoop的的/ etc / hadoop的:在/ usr /本地/ hadoop的的/ etc / hadoop的:在/ usr /本地/ hadoop的的/ etc / hadoop的:在/ usr /本地/ hadoop的/共享/ hadoop的/普通/ lib中/ :/ USR /本地/ hadoop的/共享/ hadoop的/普通/ :在/ usr /本地/ hadoop的/共享/ hadoop的/ HDFS:在/ usr /本地/ hadoop的/共享/ hadoop的/ HDFS / lib中/ :/ USR /本地/ hadoop的/共享/ hadoop的/ HDFS / :在/ usr /本地/ hadoop的/共享/ hadoop的/纱线/ LIB / :在/ usr /本地/ hadoop的/股/ hadoop的/纱线/ :在/ usr /本地/ hadoop的/共享/ hadoop的/映射精简/ LIB / :在/ usr /本地/ hadoop的/共享/ hadoop的/映射精简/ :/的contrib /能力调度器/ 的.jar:在/ usr /本地/ hadoop的/共享/ hadoop的/纱线/ :在/ usr /本地/ hadoop的/共享/ hadoop的/纱线/ lib中/ *

使用此变量,我可以成功编译类。  “javac -classpath $ HADOOP_CLASSPATH WordCount.java”