Linxu环境下使用Eclipse直接调试mapreduce程序(不用插件)

Linxu环境下使用Eclipse直接调试mapreduce程序(不用插件)      

        前面介绍了hadoop的本地安装, vnc控制hadoop服务器的开发调试, hadoop的eclipse插件安装及运行等。 本文我们重点介绍如何在eclipse集成环境下如何debug调试hadoop程序, 充分利用debug工具的调试, 断点, 变量查看等等。

一.调试hadoop要解决的问题:

在上一篇文章中, 我们已经可以采用插件的方法, 来运行hadoop项目, 但是我们没办法用debug方式来运行您的hadoop项目。

那么我们可以运行这个项目吗?

我们当然可以采用运行普通java项目的办法来运行这个java项目, 但是map reduce程序没办法正常的工作。

我们如何解决这个问题?要解决这个问题如何进行?首先要解决这个问题,需要了解hadoop的基本工作过程,特别是hadoop的工作过程中的classpath相关设置问题了。

关于hadoop的classpath问题, 请参考前面的一些体会,如下地址供您研究:

Hadoop源代码分析 之hadoop配置及启动(4)—–启动过程汇总

Hadoop源代码分析 之hadoop配置及启动(3)—–classpath与hadoop主要组件启动过程

Hadoop源代码分析 之hadoop配置及启动(2)—–classpath与启动shell脚本

Hadoop源代码分析 之hadoop配置及启动(1)—–classpath与配置文件

        通过上面这些研究我们可以了解hadoop启动的关键时,如何配制hadoop运行的classpath的,通过这个classpath的脚本能找到配置文件, 然后根据配置文件能联系到各个服务组件, 然后在根据组件连接各个服务器然后决定如何进行下一步的工作。

         有了以上,我们就可以断定, 我们的普通的java项目可以通过适当调整classpath设置然后能够运行hadoop的map reduce程序。 在普通java项目中可以应用 方便的各种调试工具来进行应用程序的调试、开发等。

下面我们将根据这个线索来逐步构建一个java的项目, 然后添加hadoop的配置文件等到项目中, 然后调试程序。

二.配置并测试一个hadoop的本地系统

如下图, 在hadoop安装目录的上级目录,拷贝一个hadoop的本地系统,如下图

调试eclipse下hadoop的map reduce程序

cp -r hadoop-1.2.1 hadoop-local

进入新拷贝的hadoop目录中, 执行下面的命令,

[sch@db conf]$ pwd             // 显示当前目录, 输入命令时,不要包括注释部分

/work/apps/hadoop-local/conf      // 当前目录是本地hadoop的配置文件目录

[sch@db conf]$ ls               // 查看当前目录下的文件情况

capacity-scheduler.xml      mapred-queue-acls.xml

configuration.xsl           mapred-site.xml

core-site.xml               masters

fair-scheduler.xml          slaves

hadoop-env.sh               ssl-client.xml.example

hadoop-metrics2.properties  ssl-server.xml.example

hadoop-policy.xml           taskcontroller.cfg

hdfs-site.xml               task-log4j.properties

log4j.properties

[sch@db conf]$ cat core-site.xml       // 查看 core-site.xml的配置情况, 可以用vi编辑到这个状况

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>                      // 请特别注意, 配置中是完全空的,    

</configuration>                     // 全空表示 本地默认配置, 包括采用本地文件系统

[sch@db conf]$ cat hdfs-site.xml        // 下面请看同上

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

</configuration>

[sch@db conf]$ cat mapred-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

</configuration>

截图如下:

调试eclipse下hadoop的map reduce程序

完成上述配置后,我们就完成了本地的hadoop的配置工作

三.准备测试hadoop项目的测试数据

如下图, 我们在刚刚安装好的 hadoop目录中,创建input目录, 并且把conf目录下的相关文件拷贝过去

调试eclipse下hadoop的map reduce程序

命令如下:

[sch@db hadoop-local]$ mkdir input

[sch@db hadoop-local]$ cp conf/* input/

[sch@db hadoop-local]$ ls input/

四.在eclipse中创建一个普通的java项目

1. Java项目的创建

Eclispe中如何创建一个普通的java项目就省略, 读者应该都会了, 项目创建完成如下结构。

调试eclipse下hadoop的map reduce程序

2. Hadoop源代码的引入

Hadoop源代码的引入可以采用拷贝源代码到src中

也可以采用import命令,导入eclipse中,

采用哪个方法都行,总之最后结果如下

调试eclipse下hadoop的map reduce程序

如上, 我们引进引入了全部hadoop的例子源代码, 但发现有大量的编译错误,下面解决编译错误的情况。

3. 导入hadoop的包,解决java项目的编译错误问题

在java的编译属性上, 选择lib相关标签, 然后选择添加外部jar文件的按钮

调试eclipse下hadoop的map reduce程序

然后在弹出的对话框中, 选择下面系统目录, 然后选择里面的两个jar文件

然后点击ok按钮

添加hadoop的lib目录中的文件到项目中, 如下图

添加完成, 可能还有些错误, 也可能没有。情况如下:

这里面设置的java版本是1.4的版本, 我们需要将这个版本提高, 否则会有很多错误

如上, 设置java版本到达1.6, 然后选择确定按钮。

编译错误都没有了。

五.添加hadoop的配置到eclipse的java项目中

前面已经叙述了, 这个hadoop的配置文件目录作为classpath添加到java项目的重要性, 下面我们来操作,然后可以进行项目调试了。

如上图, 我们选择了 添加外部的目录作为classpath进行了,然后还需要调整一下相关顺序,如下图:

请特别注意上图中, 不同颜色的区域, 是配置好这个情况的关键

配置完成后, 选择ok按钮, 完成相关配置

六.Debug 创建hadoop项目

如下图, 从源代码文件中选择下图中的类, 然后在主函数中设置断点

然后选择右键,设置断点, 如下图, 选择debug as 菜单, 选择debug配置

有可能程序还没有创建调试项目, 我们选择创建java的项目

在弹出的对话框中, 选择arg参数tab页面, 输入如下的调试参数, 注意这里面的文件路径是绝对路径

/work/apps/hadoop-local/input /work/apps/hadoop-local/output ‘dfs[a-z.]+’

然后点击应用, 然后点击调试按钮。

如上图,已经进入了相关项目的运行了, 进入了debug模式, 现在可以利用debug的各种功能了。

为了更进一步证明这个调试模式的作用, 在下面图中, 断点处选择 蓝色区域, 选择f3键, 寻找相关源代码

按照如下图中,号码顺序,先选择添加 源代码按钮, 在弹出对话框中,选择2中按钮, 然后在对话框中选择相应文件目录中相关代码

然后在编辑器中设置如下图中的断点, 然后运行程序, 最后停止到相关断点上, 然后查看图中不同区域的查看相关调试信息:

本文转载自:http://www.iigrowing.cn/diao-shi-eclipse-xia-hadoop-de-map-reduce-cheng-xu.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值