编译Hadoop2.2.0作业?

r1zhe5dt  于 2021-06-03  发布在  Hadoop
关注(0)|答案(6)|浏览(327)

似乎所有的例子都是在考虑旧版本的基础上构建的。
如何在ubuntu上编译java程序,使其引用hadoop-2.2.0库?
我应该包含的jar文件在哪里?
命令是什么?是这样吗-

javac -classpath libraries wordcount.java

谢谢您。

apeeds0o

apeeds0o1#

运行命令:“yarn classpath”查看目录列表。当我使用这个列表作为javac的-classpath选项时,我的java程序就会编译。
我正在运行hortonworksv2.0,apachehadoop2.2.0。

gdrx4gfi

gdrx4gfi2#

我发现如下:

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的副本)。

ehxuflar

ehxuflar3#

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

gopyfrb3

gopyfrb34#

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

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

或:

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

llycmphe5#

我在hadoop示例jars上也遇到了麻烦。许多视频/教程/博客中的信息都是基于旧版本的。
当我们编译这些示例或编写我们自己的mapreduce程序时,它将使用hadoop包(即在ide中导入jar/添加对外部jar的引用-类似于在msvisualstudio中添加对.dll的引用),ide将负责为每个类正确调用javac。
现在要手动编译任何类,例如wordcount.java,我们需要告诉javac我们的类所依赖的所有jar。我关注了一些过时的视频,但它们共享了一个信息,即在.bashrc中设置一个变量,引用所有与hadoop相关的jar文件,然后在javac-classpath$variable filename.java中使用这个变量。
e、 g.我使用name作为$hadoop\u类路径,值如下所示(我在macosx上)
/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/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\u classpath wordcount.java“

nhhxz33t

nhhxz33t6#

hadoop有一个命令“hadoop classpath”,它为您提供了必要的类路径。ie公司
hadoop类路径/etc/hadoop/conf:/usr/lib/hadoop/lib/:/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 classpath)-d。字数.java

相关问题