使用Eclipse编译运行MapReduce程序 Hadoop2.4.1
2015-12-22 19:33
796 查看
转载:http://www.linuxidc.com/Linux/2015-02/113490.htm
上篇介绍了使用命令行编译打包运行自己的MapReduce程序,使用 Eclipse 更加方便。要在 Eclipse 上编译和运行 MapReduce 程序,需要安装 Hadoop-eclipse-plugin,可使用
Github 上的 hadoop2x-eclipse-plugin,测试环境:
Ubuntu 14.04
Hadoop 2.4.1
Eclipse 3.8
安装好 Eclipse,可在 Ubuntu 软件中心直接搜索安装。同时开启 Hadoop。
下载 hadoop2x-eclipse-plugin ,将 release 中的 hadoop-eclipse-kepler-plugin-2.2.0.jar (虽然标注的是 2.2.0,但在 2.4.1 下是没问题的,应该在 2.x 版本下都可以)复制到 Eclipse
安装目录的 plugin 文件夹中,运行
(部分图片直接使用他人的,所以风格不太统一,但不影响)
启动 Eclipse 后就可以在左侧的Project Explorer中看到 DFS Locations(若看到的是 welcome 界面,点击左上角的 x 关闭就可以看到了)。
![](http://www.linuxidc.com/upload/2015_02/150215114832001.png)
安装好Hadoop-Eclipse-Plugin插件后的效果
--------------------------------------分割线 --------------------------------------
CentOS安装和配置Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
Ubuntu 13.04上搭建Hadoop环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu下Hadoop环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建Hadoop环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系统进行搭建) http://www.linuxidc.com/Linux/2011-12/48894.htm
--------------------------------------分割线 --------------------------------------
插件需要进一步的配置。
第一步:选择 Window 菜单下的 Preference ,然后弹出一个窗体,窗体的左侧会多出 Hadoop Map/Reduce 选项,点击此选项,选择 Hadoop 的安装目录(如/usr/local/hadoop,Ubuntu不好选择目录,直接输入就行)。
![](http://www.linuxidc.com/upload/2015_02/150215114832002.png)
选择 Hadoop 的安装目录
第二步:切换 Map/Reduce 工作目录,选择 Window 菜单下选择 Open Perspective –
Other,弹出一个窗体,从中选择 Map/Reduce 选项即可进行切换。
![](http://www.linuxidc.com/upload/2015_02/150215114832003.png)
切换 Map/Reduce 工作目录
第三步:建立与 Hadoop 集群的连接,点击 Eclipse软件右下角的 Map/Reduce Locations 面板,在面板中单击右键,选择 New Hadoop Location。
![](http://www.linuxidc.com/upload/2015_02/150215114832004.png)
建立与 Hadoop 集群的连接
在弹出来的 General 选项面板中进行 Master 的设置,设置要要 Hadoop 的配置一致,如我使用的Hadoop伪分布式配置,设置了 fs.defaultFS 为 hdfs://localhost:9000,则 DFS Master 那的 Post 也应改为 9000。
Location Name 随意填写,Map/Reduce Master 的 Host 就填写你本机的IP(localhost 也行),Port 默认就是 50020。最后的设置如下:
![](http://www.linuxidc.com/upload/2015_02/150215114832005.png)
Hadoop Location 的设置
接着再切换到 Advanced parameters 选项面板,这边有详细的配置,切记需要与 Hadoop 的配置(/usr/local/hadoop/etc/hadoop中的配置文件)一致,如我配置了 hadoop.tmp.dir ,就要进行修改。
![](http://www.linuxidc.com/upload/2015_02/150215114832006.png)
Hadoop Location 的设置
最后点击 finish,Map/Reduce Location 就创建好了。
这样配置就完成了。
配置成功后,点击左侧 Project Explorer中的 MapReduce Location 就能直接查看 HDFS 中的文件内容了(如下图是 WordCount 的输出结果),而无需再通过繁琐的
![](http://www.linuxidc.com/upload/2015_02/150215114986421.png)
使用Eclipse查看HDFS中的文件内容
Tips
HDFS 中的内容变动后,Eclipse 不会同步刷新,需要右键点击 Project Explorer中的 MapReduce Location,选择 Refresh,才能看到变动后的文件。
点击 File 菜单,选择 Map/Reduce Project。
![](http://www.linuxidc.com/upload/2015_02/150215114986422.png)
创建 MapReduce 项目
填写 MapReduce 工程的名字为 WordCountProject。
![](http://www.linuxidc.com/upload/2015_02/150215114986423.png)
创建 MapReduce 项目
这样就已成功创建了MapReduce项目,左侧能看到刚才建立的项目。
![](http://www.linuxidc.com/upload/2015_02/150215114986424.png)
创建 WordCount 所使用的 Java 类
接着右键点击刚创建的 WordCountProject,选择 New -> Class,并填写如下信息:
![](http://www.linuxidc.com/upload/2015_02/150215114986425.png)
创建 WordCount 所使用的 Java 类
接着将 WordCount 的代码复制进去,可以使用使用命令行编译打包运行自己的MapReduce程序文中最后给出的代码(见 http://www.linuxidc.com/Linux/2015-02/113489.htm)。
并将代码 main() 函数的
接着将 /usr/local/Hadoop/etc/hadoop 中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties
复制到 WordCountProject下的 src 文件夹(workspace/WordCountProject/src)中。否则程序将无法运行,后面再解释为什么需要复制这些文件。复制完成后,右键点击 WordCountProject 进行刷新,可以看到文件结构如下所示:
![](http://www.linuxidc.com/upload/2015_02/150215114986426.png)
创建 WordCount 所使用的 Java 类
最后右键点击 Project Explorer 中的 WordCount.java,选择 Run As -> Run on Hadoop。可以看到运行成功的提示,刷新 DFS Location 后也能看到输出的 output 文件夹。
![](http://www.linuxidc.com/upload/2015_02/150215114986427.png)
WordCount 运行结果
至此,你就可以使用 Eclipse 方便的进行 MapReduce程序的开发了。
虽然配置了 Hadoop-Eclipse-Plugin,但一些设置项还是确实,如没有复制 core-site.xml 和 hdfs-site.xml ,程序将无法运行,提示 Input 路径不存在(读取的是当前目录而非 HDFS 目录)。
log4j用于记录程序的输出日记,需要 log4j.properties 这个配置文件,如果没有复制该文件到项目中,运行程序后在 Console 面板中会出现警告提示:
虽然不影响程序的正确运行的,但程序运行时无法看到任何提示消息(只能看到出错信息)。
上篇介绍了使用命令行编译打包运行自己的MapReduce程序,使用 Eclipse 更加方便。要在 Eclipse 上编译和运行 MapReduce 程序,需要安装 Hadoop-eclipse-plugin,可使用
Github 上的 hadoop2x-eclipse-plugin,测试环境:
Ubuntu 14.04
Hadoop 2.4.1
Eclipse 3.8
准备工作
安装好 Eclipse,可在 Ubuntu 软件中心直接搜索安装。同时开启 Hadoop。
安装 Hadoop-Eclipse-Plugin
下载 hadoop2x-eclipse-plugin ,将 release 中的 hadoop-eclipse-kepler-plugin-2.2.0.jar (虽然标注的是 2.2.0,但在 2.4.1 下是没问题的,应该在 2.x 版本下都可以)复制到 Eclipse安装目录的 plugin 文件夹中,运行
eclipse -clean重启 Eclipse 即可。Eclipse 的默认安装目录为:/usr/lib/eclipse :
cd ~/下载/ unzip ./hadoop2x-eclipse-plugin-master.zip cd /usr/lib/eclipse sudo cp ~/下载/hadoop2x-eclipse-plugin-master/release/hadoop-eclipse-kepler-plugin-2.2.0.jar ./plugins/ ./eclipse -clean
配置 Hadoop-Eclipse-Plugin
(部分图片直接使用他人的,所以风格不太统一,但不影响)启动 Eclipse 后就可以在左侧的Project Explorer中看到 DFS Locations(若看到的是 welcome 界面,点击左上角的 x 关闭就可以看到了)。
![](http://www.linuxidc.com/upload/2015_02/150215114832001.png)
安装好Hadoop-Eclipse-Plugin插件后的效果
--------------------------------------分割线 --------------------------------------
CentOS安装和配置Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
Ubuntu 13.04上搭建Hadoop环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu下Hadoop环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建Hadoop环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系统进行搭建) http://www.linuxidc.com/Linux/2011-12/48894.htm
--------------------------------------分割线 --------------------------------------
插件需要进一步的配置。
第一步:选择 Window 菜单下的 Preference ,然后弹出一个窗体,窗体的左侧会多出 Hadoop Map/Reduce 选项,点击此选项,选择 Hadoop 的安装目录(如/usr/local/hadoop,Ubuntu不好选择目录,直接输入就行)。
![](http://www.linuxidc.com/upload/2015_02/150215114832002.png)
选择 Hadoop 的安装目录
第二步:切换 Map/Reduce 工作目录,选择 Window 菜单下选择 Open Perspective –
Other,弹出一个窗体,从中选择 Map/Reduce 选项即可进行切换。
![](http://www.linuxidc.com/upload/2015_02/150215114832003.png)
切换 Map/Reduce 工作目录
第三步:建立与 Hadoop 集群的连接,点击 Eclipse软件右下角的 Map/Reduce Locations 面板,在面板中单击右键,选择 New Hadoop Location。
![](http://www.linuxidc.com/upload/2015_02/150215114832004.png)
建立与 Hadoop 集群的连接
在弹出来的 General 选项面板中进行 Master 的设置,设置要要 Hadoop 的配置一致,如我使用的Hadoop伪分布式配置,设置了 fs.defaultFS 为 hdfs://localhost:9000,则 DFS Master 那的 Post 也应改为 9000。
Location Name 随意填写,Map/Reduce Master 的 Host 就填写你本机的IP(localhost 也行),Port 默认就是 50020。最后的设置如下:
![](http://www.linuxidc.com/upload/2015_02/150215114832005.png)
Hadoop Location 的设置
接着再切换到 Advanced parameters 选项面板,这边有详细的配置,切记需要与 Hadoop 的配置(/usr/local/hadoop/etc/hadoop中的配置文件)一致,如我配置了 hadoop.tmp.dir ,就要进行修改。
![](http://www.linuxidc.com/upload/2015_02/150215114832006.png)
Hadoop Location 的设置
最后点击 finish,Map/Reduce Location 就创建好了。
这样配置就完成了。
在 Eclipse 中查看HDFS中的文件内容
配置成功后,点击左侧 Project Explorer中的 MapReduce Location 就能直接查看 HDFS 中的文件内容了(如下图是 WordCount 的输出结果),而无需再通过繁琐的 hdfs dfs -ls命令。如果无法查看,可尝试重启Eclipse!
![](http://www.linuxidc.com/upload/2015_02/150215114986421.png)
使用Eclipse查看HDFS中的文件内容
Tips
HDFS 中的内容变动后,Eclipse 不会同步刷新,需要右键点击 Project Explorer中的 MapReduce Location,选择 Refresh,才能看到变动后的文件。
在Eclipse中创建MapReduce项目
点击 File 菜单,选择 Map/Reduce Project。![](http://www.linuxidc.com/upload/2015_02/150215114986422.png)
创建 MapReduce 项目
填写 MapReduce 工程的名字为 WordCountProject。
![](http://www.linuxidc.com/upload/2015_02/150215114986423.png)
创建 MapReduce 项目
这样就已成功创建了MapReduce项目,左侧能看到刚才建立的项目。
![](http://www.linuxidc.com/upload/2015_02/150215114986424.png)
创建 WordCount 所使用的 Java 类
接着右键点击刚创建的 WordCountProject,选择 New -> Class,并填写如下信息:
![](http://www.linuxidc.com/upload/2015_02/150215114986425.png)
创建 WordCount 所使用的 Java 类
接着将 WordCount 的代码复制进去,可以使用使用命令行编译打包运行自己的MapReduce程序文中最后给出的代码(见 http://www.linuxidc.com/Linux/2015-02/113489.htm)。
并将代码 main() 函数的
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();改为:
// String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
String[] otherArgs=newString[]{"input","output"};/* 直接设置输入参数 */
接着将 /usr/local/Hadoop/etc/hadoop 中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties
复制到 WordCountProject下的 src 文件夹(workspace/WordCountProject/src)中。否则程序将无法运行,后面再解释为什么需要复制这些文件。复制完成后,右键点击 WordCountProject 进行刷新,可以看到文件结构如下所示:
![](http://www.linuxidc.com/upload/2015_02/150215114986426.png)
创建 WordCount 所使用的 Java 类
最后右键点击 Project Explorer 中的 WordCount.java,选择 Run As -> Run on Hadoop。可以看到运行成功的提示,刷新 DFS Location 后也能看到输出的 output 文件夹。
![](http://www.linuxidc.com/upload/2015_02/150215114986427.png)
WordCount 运行结果
至此,你就可以使用 Eclipse 方便的进行 MapReduce程序的开发了。
在 Eclipse 中运行 MapReduce 项目会遇到的问题
虽然配置了 Hadoop-Eclipse-Plugin,但一些设置项还是确实,如没有复制 core-site.xml 和 hdfs-site.xml ,程序将无法运行,提示 Input 路径不存在(读取的是当前目录而非 HDFS 目录)。Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/home/hadoop/workspace/WordCountProject/input
log4j用于记录程序的输出日记,需要 log4j.properties 这个配置文件,如果没有复制该文件到项目中,运行程序后在 Console 面板中会出现警告提示:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
虽然不影响程序的正确运行的,但程序运行时无法看到任何提示消息(只能看到出错信息)。
相关文章推荐
- 深入Java虚拟机:JVM中的Stack和Heap
- Java工程师成神之路
- 我的java基础学习2
- Java多线程总结(8)concurrent.locks包下的锁机制的使用
- leetcode 140:Word Break II 采用很巧妙的动态规划和DFS联合使用 JAVA源代码实现
- ubuntu下的jdk,eclipse安装
- Java拾遗之Spring Web MVc
- spark createDirectStream保存kafka offset(JAVA实现)
- Java实例变量初始化
- Android Studio导入外部Eclipse项目中用到的so库
- java.lang.ExceptionInInitializerError
- java正则表达式——判断字符串为哪种类型的数字?
- Java的基本程序设计结构(二)
- Java:断点续传
- java keytool证书工具使用小结(转)
- Android:Eclipse-unable to get system library for the project
- Spring 配置多数据源实现数据库读写分离
- [Java开发之路](5)异常
- java:排序算法代码
- Java解析Json字符串--复杂对象