上篇介绍了使用命令行编译打包运行自己的MapReduce程序,使用 Eclipse 更加方便。要在 Eclipse 上编译和运行 MapReduce 程序,需要安装 hadoop-eclipse-plugin,可使用 Github 上的 hadoop2x-eclipse-plugin,测试环境:

  • Ubuntu 14.04
  • Hadoop 2.6.0
  • Eclipse 3.8

本教程在 Hadoop 2.6.0 下验证通过,理论上适合于任何原生 Hadoop 2 版本,如 Hadoop 2.4.1 也可以。

准备工作

安装好 Eclipse,可在 Ubuntu 软件中心直接搜索安装。

在左侧任务栏,点击“Ubuntu软件中心”。

Ubuntu软件中心

在右上角搜索栏中搜索 eclipse,在搜索结果中单击 eclipse,并点击安装。

安装Eclipse

如此,就完成了 eclipse 的安装。Eclipse 的默认安装目录为:/usr/lib/eclipse。

安装 Hadoop-Eclipse-Plugin

下载 hadoop2x-eclipse-plugin ,将 release 中的 hadoop-eclipse-kepler-plugin-2.2.0.jar (虽然标注的是 2.2.0,但在 2.6.0 下是没问题的,应该在 2.x 版本下都可以)复制到 Eclipse 安装目录的 plugin 文件夹中,运行 eclipse -clean重启 Eclipse 即可。

  1. cd ~/下载/
  2. unzip ./hadoop2x-eclipse-plugin-master.zip
  3. cd /usr/lib/eclipse
  4. sudo cp ~/下载/hadoop2x-eclipse-plugin-master/release/hadoop-eclipse-kepler-plugin-2.2.0.jar ./plugins/
  5. ./eclipse -clean

配置 Hadoop-Eclipse-Plugin

启动 Eclipse 后就可以在左侧的Project Explorer中看到 DFS Locations(若看到的是 welcome 界面,点击左上角的 x 关闭就可以看到了)。

安装好Hadoop-Eclipse-Plugin插件后的效果

插件需要进一步的配置。

第一步:选择 Window 菜单下的 Preference。

打开Preference

此时会弹出一个窗体,窗体的左侧会多出 Hadoop Map/Reduce 选项,点击此选项,选择 Hadoop 的安装目录(如/usr/local/hadoop,Ubuntu不好选择目录,直接输入就行)。

选择 Hadoop 的安装目录

第二步:切换 Map/Reduce 工作目录,选择 Window 菜单下选择 Open Perspective -> Other,弹出一个窗体,从中选择 Map/Reduce 选项即可进行切换。

切换 Map/Reduce 工作目录

第三步:建立与 Hadoop 集群的连接,点击 Eclipse软件右下角的 Map/Reduce Locations 面板,在面板中单击右键,选择 New Hadoop Location。

建立与 Hadoop 集群的连接

在弹出来的 General 选项面板中进行 Master 的设置,设置要要 Hadoop 的配置一致,如我使用的Hadoop伪分布式配置,设置了 fs.defaultFS 为 hdfs://localhost:9000,则 DFS Master 那的 Post 也应改为 9000。

Location Name 随意填写,Map/Reduce Master 的 Host 就填写你本机的IP(localhost 也行),Port 默认就是 50020。最后的设置如下:

Hadoop Location 的设置

接着再切换到 Advanced parameters 选项面板,这边有详细的配置,切记需要与 Hadoop 的配置(/usr/local/hadoop/etc/hadoop中的配置文件)一致,如我配置了 hadoop.tmp.dir ,就要进行修改。

Hadoop Location 的设置

最后点击 finish,Map/Reduce Location 就创建好了。

这样配置就完成了。

在 Eclipse 中查看HDFS中的文件内容

配置成功后,点击左侧 Project Explorer中的 MapReduce Location 就能直接查看 HDFS 中的文件内容了(如下图是 WordCount 的输出结果),而无需再通过繁琐的 hdfs dfs -ls 命令。如果无法查看,可尝试重启Eclipse!

使用Eclipse查看HDFS中的文件内容

Tips

HDFS 中的内容变动后,Eclipse 不会同步刷新,需要右键点击 Project Explorer中的 MapReduce Location,选择 Refresh,才能看到变动后的文件。

在Eclipse中创建MapReduce项目

点击 File 菜单,选择 New -> Project…:

创建Project

选择 Map/Reduce Project,点击 Next。

创建MapReduce项目

填写 Project name 为 WordCount 即可,点击 Finish 就创建好了项目。

填写项目名

此时在左侧的 Project Explorer 就能看到刚才建立的项目了。

项目创建完成

接着右键点击刚创建的 WordCount 项目,选择 New -> Class

新建Class

需要填写两个地方:在 Package 处填写 org.apache.hadoop.examples;在 Name 处填写 WordCount。

填写Class信息

创建 Class 完成后,在 Project 的 src 中就能看到 WordCount.java 这个文件。将 WordCount 的代码复制到该文件中,可以使用使用命令行编译打包运行自己的MapReduce程序文中最后给出的代码。

通过Eclipse运行MapReduce

在运行 MapReduce 程序前,还需要执行一项操作:将 /usr/local/hadoop/etc/hadoop 中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties 复制到 WordCount 项目下的 src 文件夹(~/workspace/WordCount/src)中。否则程序将无法正确运行,文章最后解释了为什么需要复制这些文件。

复制完成后,右键点击 WordCount 进行刷新,可以看到文件结构如下所示:

WordCount项目文件结构

点击工具栏中的 Run 图标,或者右键点击 Project Explorer 中的 WordCount.java,选择 Run As -> Run on Hadoop,就可以运行 MapReduce 程序了。不过由于没有指定参数,运行时会提示 “Usage: wordcount “,需要通过Eclipse设定一下运行参数。

右键点击刚创建的 WordCount.java,选择 Run As -> Run Configurations,在此处可以设置运行时的相关参数。切换到 “Arguments” 栏,在 Program arguments 处填写 “input output” 就可以了。

设置程序运行参数

或者也可以直接在代码中设置好输入参数。可将代码 main() 函数的 String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); 改为:

  1. // String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
  2. String[] otherArgs=new String[]{"input","output"}; /* 直接设置输入参数 */

设定参数后,再次运行程序,可以看到运行成功的提示,刷新 DFS Location 后也能看到输出的 output 文件夹。

![WordCount 运行结果][19]

至此,你就可以使用 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.

虽然不影响程序的正确运行的,但程序运行时无法看到任何提示消息(只能看到出错信息)

使用Eclipse编译运行MapReduce程序 Hadoop2.6.0/Ubuntu相关推荐

  1. Hadoop+eclipse运行MapReduce程序

    前面,我们已经通过eclipse下安装Hadoop的插件配置好了基于Hadoop+eclipse的MapReduce开发环境.现在,我们在这个Hadoop+eclipse环境下运行MapReduce程 ...

  2. 关于导入geoserver 源码到Eclipse编译运行

    参考http://blog.csdn.net/gisshixisheng/article/details/43016443 和  http://blog.sina.com.cn/s/blog_6e37 ...

  3. vmware虚拟机上的centos安装Hadoop,以及在本地eclipse上运行mapReduce项目,并将文件输出到HDFS中...

    注意centos主机名不支持下划线,所以文章中若出现centos_02.com,请替换为 centos02.com vmware虚拟机上的centos安装Hadoop 安装vmware虚拟机 虚拟机上 ...

  4. 使用sublime编译运行C程序

    原 使用sublime编译运行C程序 2017年04月13日 17:09:16 DragonFreedom 阅读数 13177 1.打开sublime,找到顶部工具(Tool)菜单->编译系统( ...

  5. Eclipse编译运行Native代码步骤详解

    Eclipse编译运行Native代码步骤详解 标签: android jni层   android jni步骤   android jni接口   转自: http://blog.csdn.net/ ...

  6. 在Ubuntu虚拟机中编译运行C程序

    一.准备工具 1.gcc GCC是GNU公社的一个项目.是一个用于编程开发的自由编译器.最初,GCC只是一个C语言编译器,它是GNU C Compiler 的英文缩写.随着众多自由开发者的加入和GCC ...

  7. mac怎么装java eclipse_如何在Mac系统安装eclipse并运行java程序

    展开全部 Mac系统安装eclipse并运行java程序具体操作步骤如下:安装Eclipse前先确认你的Mac上是否已安装java运行环e69da5e6ba9062616964757a68696461 ...

  8. linux系统运行MapReduce程序报错:exitCode 127

    linux系统运行MapReduce程序报错:exitCode 127 hadoop mapreduce 出现 /bin/bash: /bin/java: No such file or direct ...

  9. linux平台编译运行c++程序

    linux平台编译运行c++程序 引言 嵌入式开发的火热引发了不少程序员对Linux的兴趣.那么如何在Linux平台编译并运行c++程序呢? 正文 Linux平台开发运行C++程序大体流程与Windo ...

最新文章

  1. SpringBoot第二十五篇:2小时学会springboot
  2. python学习之第二课时--运行程序和字符编码
  3. robotframwork的WEB功能测试(一)—切换window窗口
  4. java common http_httpClient和common-httpclient的区别
  5. SAP标准OK Code Values 列表
  6. MySQL MyISAM和InnoDB存储引擎的比较
  7. 深入Synchronized和java.util.concurrent.locks.Lock的区别详解
  8. Java 用POST方式 传对象给 Servlet
  9. 【LeetCode】刷题工具
  10. 概率论基础 - 5 - 马尔可夫不等式
  11. oracle biee资料库,Hello oracle BIEE 资料
  12. Java获取IP归属地
  13. matlab画五线谱,‎App Store 上的“五线谱”
  14. 安利这几款软件给需要的你
  15. B站UP主恰饭新思路:产品糅合进有意思的内容里
  16. 关于Idea合并不同分支代码你怎么看
  17. 【Linux命令篇】正则表达式浅析
  18. 2019西电复试计科,软件机试真题
  19. 代码写成这样,老夫无可奈何!
  20. 【C语言】练习函数调用

热门文章

  1. 【错误记录】Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read | 使用命令行提交代码 )
  2. 【算法】快速排序与归并排序对比
  3. 【计算理论】计算复杂性 ( 多项式时间规约 | NP 完全 ★ | 布尔可满足性问题 ) ★
  4. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )
  5. Python练习_三级菜单
  6. [Solution] The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path
  7. 最常用的15大Eclipse开发快捷键技巧
  8. windows 域用户账号验证登陆
  9. 网页中如何启用QQ交谈
  10. asp之GetArray提取链接地址,以$Array$分隔的代码