博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例
阅读量:5234 次
发布时间:2019-06-14

本文共 5016 字,大约阅读时间需要 16 分钟。

一、在Eclipse下编译安装Hadoop插件

       Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译。不过要注意,一定要下载Hadoop的src包,不然是不带源代码的。环境如下:

Linux的发行版是Ubuntu13.04,Hadoop版本是1.1.2。

hadoop安装在/opt/hadoop,所以源代码的目录是hadoop根路径下的src/contrib/eclipse-plugin。
Eclipse安装路径是/opt/eclipse。
编译步骤:

一共需要修改三个文件:

(1)hadoop根路径下的src/contrib/eclipse-plugin/build.properties

(2)hadoop根路径下的src/contrib/build-contrib.xml

(3)hadoop根路径下的src/contrib/eclipse-plugin/build.xml

 

具体做如下修改:

1. 首先编辑 src/contrib/eclipse-plugin/build.properties 文件

添加两行,补充Eclipse路径和Hadoop版本:蓝色部分是添加的两行

output.. = bin/bin.includes = META-INF/,\               plugin.xml,\               resources/,\               classes/,\               classes/,\               lib/eclipse.home=/opt/eclipseversion=1.1.2

注意:网上都说编辑src/contrib/build-contrib.xml,添加两行,补充Eclipse路径和Hadoop版本:

但是我这样做在ant的时候却报错:找不到eclipse.home

2. 我们需要引用hadoop的一些包,但是默认的classpath没有这些包(我们没有从头编译)。所以需要修改classpath
打开src/contrib/eclipse-plugin/build.xml文件,定位<path id="classpath">,加入:

 

3. 代码中使用了一些遗留功能,所以我们要修改deprecation的设定。这一步非必需

打开hadoop根路径下面的src/contrib/build-contrib.xml,定位

然后修改成

 

4. 修改includeantruntime设置。 这一步非必需 

定位build.xml中的<target name="compile" ...>,修改javac的设置,加入一个选项

 includeantruntime="on"

也就是将javac修改成

 

5. jar打包的时候需要hadoop的一些jar文件,但是我们没有编译生成它,所以我们需要修改一下jar这个target。

另外,有几个jar是我们需要用到,而build.xml里面没有自动包含的,如果不包含它们,Eclipse连接Hadoop会出现failure to login错误,其实就是找不到类

在build.xml中找到

我们修改成

 

 

6. 但是这样,我们的jar文件还是不会自动部署到eclipse中,你可以手动复制,即将编译好的/opt/hadoop/build/contrib/eclipse-plugin/hadoop-eclipse-plugin-1.1.2.jar插件复制到eclipse安装目录下的plugins下即可

但是我们希望ant帮我们自动部署进去。我们在build.xml中新建一个target,用来部署:

然后修改project的默认target,也就是将project修改成:

 

7. 接下来一步我们要修改Hadoop根目录下的src/contrib/META-INFO/MANIFEST.MF,修改这个jar的classpath。

找到这个文件的Bundle-ClassPath这一行,然后,修改成(不能换行,我这里方便显示换行了)

 

Bundle-ClassPath: classes/,lib/commons-cli.jar,lib/commons-httpclient.jar,lib/hadoop-core.jar,lib/jackson-mapper-asl.jar, lib/commons-configuration.jar,lib/commons-lang.jar,lib/jackson-core-asl.jar

 

8. 执行ant,代码就会被编译,插件会被自动安装到eclipse的plugins目录中,打开eclipse就可以使用了(如果没有安装ant,请去apache下载ant的二进制编译版,具体见后面附录)。另外编译时会自动联网下载需要的包,所以请保证网络通畅

启动Eclipse 后 Window->Open Perspective->Other ,弹出对话框列表中,会出现图标为蓝色大象,文字为Map/Reduce 

集成成功!

 

附:Ubuntu下ant的安装和配置

一. 自动安装

    sudo apt-get install ant

      但是这种装法不好。首先安装的ant不是最新的版本,其次还要装一堆其他的附带的东西。比如一个ant只有几兆,当用apt-get install方式安装时需要下载60多兆的东西进行安装,十分缓慢且占空间,所以我才用自己手动ant安装。

 

二. 手动安装

    1. 到Apache官网下载最新版本的ant:

    2. 解压下载下来的.tar.gz文件到/opt目录下:

     tar -xzvf apache-ant-1.9.2-bin.tar.gz -C /opt

    3. 配置环境变量:sudo vi /etc/profile,在原来基础上添加以下蓝体字:

export ANT_HOME=/opt/apache-ant-1.9.2export JAVA_HOME=/opt/java/jdk1.7.0_25/export JRE_HOME=/opt/java/jdk1.7.0_25/jreexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ANT_HOME/bin

    4. 验证是否安装成功:

    ant -version

    Apache Ant(TM) version 1.9.2 compiled on July 8 2013

    如此字样,则表示安装成功!

 

二、Eclipse中配置Hadoop插件

在编写MapReduce程序之前需要配置Eclipse环境,步骤如下:

1. 首先配置hadoop installation directory。

如果安装插件成功,打开Window-->Preferences,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。 

2. 打开Map/Reduce视图,配置Map/Reduce Locations。 

单击eclipse右上角的Open Perspective图标,选择Map/Reduce视图打开。

 

在Map/Reduce Locations(Eclipse界面的正下方)中新建一个Hadoop Location。在这个View中,点击鼠标右键-->New Hadoop Location。在弹出的对话框中你需要配置Location name,可任意填,如Hadoop,以及Map/Reduce Master和DFS Master。这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。我的这两个文件中配置中部分内容如下: 

mapred-site.xml

mapred.job.tracker
http://192.168.1.151:9001

 

core-site.xml:

fs.default.name
hdfs://192.168.1.151:9000
 

最后的配置截图如下:


 

设置完成后,点击Finish就应用了该设置。然后,在最左边的Project Explorer中就能看到DFS的目录,如下图所示:

、在Eclipse中建立项目测试Hadoop插件是否成功配置

当然最经典的以WordCount为例,就跟Hello World一样,步骤如下:

1. 新建项目。 
File-->New-->Other-->Map/Reduce Project 
项目名可以随便取,如HadoopTest。 
复制 hadoop安装目录/src/examples/org/apache/hadoop/examples/WordCount.java到刚才新建的项目下面,修改里面的package。

2. 上传模拟数据文件夹

为了运行程序,需要一个输入文件夹和输出的件夹。输出文件夹,在程序运行完成后会自动生成。我们需要给程序一个输入文件夹。

(1)在当前目录(如hadoop安装目录)下新建文件夹input,并在文件夹下新建两个文件file01、file02,这两个文件内容分别如下: 

// file01Hello Alexia Welcome Hadoop
// file02Welcome Alexia Bye Hadoop

 

(2)将文件夹input上传到HDFS中

在已经启动Hadoop守护进程终端中cd 到hadoop安装目录,运行下面命令: 

bin/hadoop fs -put input input

这个命令将input文件夹上传到了hadoop文件系统了,在该系统下就多了一个input文件夹,你可以使用下面命令查看: 

bin/hadoop fs -ls  

 

3. 运行项目
(1) 在新建的项目HadoopTest,点击WordCount.java,右键-->Run As-->Run Configurations

(2) 在弹出的Run Configurations对话框中,点Java Application,右键-->New,这时会新建一个application名为WordCount 

(3) 配置运行参数,点Arguments,在Program arguments中输入“你要传给程序的输入文件夹和你要求程序将计算结果保存的文件夹”,如: 

hdfs://192.168.1.151:9000/user/hadoop/input hdfs://192.168.1.151:9000/user/hadoop/output

这里面的input就是你刚传上去的文件夹。文件夹地址你可以根据自己具体情况填写。如下图:

(4) 点击Run,运行程序。

等运行结束后,可以在终端中用命令如下,

查看是否生成了输出文件夹outputbin/hadoop fs -ls  用下面命令查看生成的文件内容bin/hadoop fs -cat output01/*

如果显示如下,说明已经成功在eclipse下运行第一个MapReduce程序了

Alexia 2Bye 1     Hadoop  2    Hello   1Welcome   2

转载于:https://www.cnblogs.com/lanxuezaipiao/p/3325932.html

你可能感兴趣的文章
eas之单据删除代码
查看>>
eas之关于编码规则
查看>>
eas之界面之间传递参数
查看>>
EAS BOS开发引入外部JAR
查看>>
S-HR之入职当天离职或录用分配当天离职导入功能之导入模板实现源码
查看>>
mysql之关于连接mysql 8.0连接url
查看>>
redis异常之ERR Client sent AUTH, but no password is set
查看>>
httml标签之article,section,div标签的区别
查看>>
mysql case when 与if函数
查看>>
html页面引入
查看>>
html之novalidate
查看>>
mysql数学函数
查看>>
S-HR之变动操作,变动原因,变动类型/离职操作,离职原因,离职类型
查看>>
拆分字符串
查看>>
jq的each和map遍历
查看>>
js--script和link中的 integrity 属性
查看>>
xss攻击
查看>>
HTML DOM querySelector() 方法
查看>>
??条件判断
查看>>
千万不要误以为1个server只允许连接65535个Client。记住,TCP连出受端口限制,连入仅受内存限制...
查看>>