似乎所有示例都是在考虑旧版本的情况下构建的。
如何在Ubuntu上编译我的java程序,以便它引用hadoop-2.2.0库?
我应该包含哪些jar文件?
命令是什么? 是不是 -
javac -classpath libraries wordcount.java
谢谢。
答案 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”