3

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

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

我应该包含的 jar 文件在哪里?

命令是什么?是不是像——

javac -classpath libraries wordcount.java

谢谢你。

4

6 回答 6

11

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

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

或者:

export CLASSPATH=`yarn classpath`
javac -classpath $CLASSPATH -d . WordCount.java
于 2014-05-02T10:29:14.053 回答
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)。

于 2013-10-31T10:42:33.403 回答
3

Hadoop 有一个命令“hadoop classpath”,它为您提供必要的类路径。IE

hadoop 类路径 /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-yarn/lib/ :/usr/lib/hadoop-yarn/.// :/usr/lib/hadoop-mapreduce /lib/ :/usr/lib/hadoop-mapreduce/.//

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

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

于 2015-04-14T00:09:50.667 回答
0

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

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

于 2014-02-19T06:57:27.050 回答
0

我也遇到了 Hadoop Example jars 的颠簸。许多视频/教程/博客中的信息基于旧版本。

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

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

例如,我使用名称作为 $HADOOP_CLASSPATH 和此处显示的值(我在 Mac OS X 上)

/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/etc/hadoop:/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:/usr/local/hadoop/share/hadoop/yarn/:/usr/local/hadoop/share/hadoop _ _ _ _ /yarn/lib/*

有了这个变量,我可以成功编译类。“javac -classpath $HADOOP_CLASSPATH WordCount.java”

于 2014-11-15T18:52:32.523 回答
0

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

于 2013-10-21T08:18:06.973 回答