调试eclipse下hadoop的map reduce程序

  categories:hadoop  tags:  author:

原创文档,转载请将原文url地址

前面介绍了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的本地系统,如下图

wps_clip_image-6225

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>

截图如下:

wps_clip_image-6228

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

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

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

wps_clip_image-12850

命令如下:

[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项目就省略, 读者应该都会了, 项目创建完成如下结构。

wps_clip_image-25463

2. Hadoop源代码的引入

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

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

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

wps_clip_image-19199

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

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

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

wps_clip_image-31375

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

wps_clip_image-28890

然后点击ok按钮

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

wps_clip_image-6328

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

wps_clip_image-29646

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

wps_clip_image-20907

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

编译错误都没有了。

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

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

wps_clip_image-29988

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

wps_clip_image-29753

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

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

六.Debug 创建hadoop项目

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

wps_clip_image-6253

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

wps_clip_image-28070

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

wps_clip_image-30189

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

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

wps_clip_image-7410

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

wps_clip_image-8518

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

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

wps_clip_image-15695

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

wps_clip_image-28310

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

wps_clip_image-2384

 

参考文章
Hadoop源代码分析 之Datanode工作原理(5)—–拷贝文件过程总结

Hadoop源代码分析 之Datanode工作原理(4)—–拷贝本地文件到hadoop的过程

Hadoop源代码分析 之Datanode工作原理(3)—–datanode工作过程总结

hadoop源代码介绍

Hadoop源代码分析 之Datanode工作原理(2)—–datanode基本工作过程

Hadoop源代码分析 之Datanode工作原理(1)—–datanode启动过程代码分析

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

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

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

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

Hadoop源代码分析 之hadoop源代码项目(1)—–创建eclipse下java项目

Hadoop源代码分析 之环境配置(2)—–虚拟机ip配置

Hadoop源代码分析 之环境配置(1)—–hadoop虚拟机配置

Hadoop源代码分析 之概念介绍(2)—–初学者眼中的hadoop

Hadoop源代码分析 之概念介绍(1)—–服装加工,火车货物检查与hadoop

调试eclipse下hadoop的map reduce程序



快乐成长 每天进步一点点      京ICP备18032580号-1