Java 编译 Hadoop 2.2.0 作业?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19488894/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Compile Hadoop 2.2.0 job?
提问by user2902207
It seems that all of the examples are constructed with older versions in mind.
似乎所有示例都是在考虑旧版本的情况下构建的。
How do I compile my java program on Ubuntu such that it will refer to hadoop-2.2.0 libraries?
我如何在 Ubuntu 上编译我的 java 程序,以便它引用 hadoop-2.2.0 库?
Where are the jar files that I am supposed to include?
我应该包含的 jar 文件在哪里?
What is the command? Is it like -
命令是什么?是不是像——
javac -classpath libraries wordcount.java
Thank you.
谢谢你。
回答by Engineer
you have to instal Cygin and there you can run your hadoop example and also you can configure your hadoop with eclipse
你必须安装 Cygin,然后你可以运行你的 hadoop 示例,你也可以使用 eclipse 配置你的 hadoop
回答by Andy Cobley
I found the following:
我发现了以下内容:
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
This allowed me to compile the Wordcount example (or in this case a copy of mine called myWordCount).
这使我能够编译 Wordcount 示例(或者在这种情况下,我的副本称为 myWordCount)。
回答by djmdata
Run the command: "yarn classpath" to see a list of directories. When I use this list as my -classpath option for javac, my Java program compiles.
运行命令:“yarn classpath”以查看目录列表。当我将此列表用作 javac 的 -classpath 选项时,我的 Java 程序将编译。
I am running HortonWorks v2.0, Apache Hadoop 2.2.0.
我正在运行 HortonWorks v2.0、Apache Hadoop 2.2.0。
回答by ramon
The simplest solution for Linux machines would be:
Linux 机器最简单的解决方案是:
javac -classpath `yarn classpath` -d . WordCount.java
Or:
或者:
export CLASSPATH=`yarn classpath`
javac -classpath $CLASSPATH -d . WordCount.java
回答by S N
I'm having bumpy ride with Hadoop Example jars too. Information in many videos/tutorials/blogs is based on older version.
我也遇到了 Hadoop 示例 jars 的颠簸。许多视频/教程/博客中的信息基于旧版本。
When we compile these examples or write any of our own MapReduce program, that is going to use hadoop packages (i.e. import jar in IDE/add reference to external jars - akin to Add reference to .dll in MS Visual Studio), and IDE will take care of correctly calling javac for each class.
当我们编译这些示例或编写我们自己的任何 MapReduce 程序时,将使用 hadoop 包(即在 IDE 中导入 jar/添加对外部 jar 的引用 - 类似于在 MS Visual Studio 中添加对 .dll 的引用),IDE 将注意为每个类正确调用 javac。
Now for manually compiling any class e.g. WordCount.java, we need to tell javac which all jars our class is dependent on. I followed outdated videos but that shared one information i.e. to set a variable in .bashrc, having reference to all Hadoop related jar files and then use that in javac -classpath $VARIABLE filename.java.
现在要手动编译任何类,例如 WordCount.java,我们需要告诉 javac 我们的类所依赖的所有 jars。我关注过时的视频,但共享了一个信息,即在 .bashrc 中设置一个变量,引用所有与 Hadoop 相关的 jar 文件,然后在 javac -classpath $VARIABLE filename.java 中使用它。
e.g. I'm using name as $HADOOP_CLASSPATH and values as shown here (I'm on Mac OS X)
例如,我使用的名称为 $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/*
/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 /纱线/lib/*
with this variable, I could compile class successfully. "javac -classpath $HADOOP_CLASSPATH WordCount.java "
使用这个变量,我可以成功编译类。“javac -classpath $HADOOP_CLASSPATH WordCount.java”
回答by Marek
Hadoop has a command "hadoop classpath" that supplies you with the necessary classpath. ie
Hadoop 有一个命令“hadoop classpath”,它为您提供必要的类路径。IE
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-yarn/lib/:/usr/lib/hadoop-yarn/.//:/usr/lib/hadoop-mapreduce/lib/:/usr/lib/hadoop-mapreduce/.//
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/.//
So if you wanna compile you can use it this way..
所以如果你想编译你可以这样使用它..
javac -classpath $(hadoop classpath) -d . WordCount.java
javac -classpath $(hadoop classpath) -d 。字数统计程序