Windows上搭建Eclipse的Hadoop调试环境

本文详细介绍在Windows环境下通过Eclipse配置并调试虚拟机中Hadoop伪分布式Map/Reduce任务的步骤,包括环境搭建、Hadoop配置及调试技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文旨在在Windows上调试虚拟机的Hadoop伪分布式Map/Reduce任务。

本人是配置完之后写的总结,希望能给有需要的朋友一些帮助。


环境:
CentOS 5.5
VMWare WorkStation 9
Windows7
Hadoop 1.2.1
Eclipse-java-indigo-SR2

前提:
1、已经安装好虚拟机,并且虚拟机和宿主主机之间是可以ping通的,虚拟机的安装和配置不在本文的讨论范围。

一:搭建Hadoop环境
1、安装hadoop
     以root权限解压hadoop-1.2.1.tar.gz


2、配置hadoop
    ①、找到hadoop目录下的config/hadoop-env.sh
          配置上JAVA_HOME
    ②、配置core-site.xml,在<configuration>标签中添加
<property>

            <name>fs.default.name</name>

            <value>hdfs://192.168.142.128:9000</value>

     </property>



     <property>

             <name>dfs.replication</name>

             <value>1</value>

     </property>



     <property>

              <name>hadoop.tmp.dir</name>

              <value>/opt/hadoop/temp</value>

     </property>
     ③、配置mapred.xml,添加如下:
<name>mapred.job.tracker</name>

     <value>192.168.142.128:9001</value>

</property>

3、配置ssh无密码登录
虚拟机中输入ssh,如果没有安装,可以使用命令: yum install ssh

如果ssh安装正常,使用命令: ssh-keygen -t rsa 

需要确认信息的时候一直按回车就好了

然后找到目录:~/.ssh,如果没有这个目录,执行一次ssh localhost就可以了

修改.ssh目录的权限为700,将.ssh目录中的 authorized_keys的权限设置为600

将生成的公钥加入授权:cat id_rsa.pub >> authorized_keys

再次执行ssh localhost,会询问是否需要连接,输入yes即可


二:测试Hadoop环境
      因为需要往hadoop_home的logs目录下写日志,所以,需要为 logs 添加写的权限
      找到hadoop的bin目录,输入:hadoop namenode -format
      运行start-all.sh
      jps看看如下的Java进程是不是都起来了:
         4309 SecondaryNameNode
4183 DataNode
4663 Jps
4525 TaskTracker
4397 JobTracker
4078 NameNode
      在虚拟机的浏览器中测试这两个地址是否能正常访问:
       NameNode -  http://localhost:50070/
     JobTracker -  http://localhost:50030/      
     在物理机上访问这两个地址的时候,需要将虚拟机的fire wall关闭
    service iptables stop

至此,Hadoop的环境已经搭建完毕,此处略过如下内容:
如何使用命令行往HDFS中创建文件,查看目录,上传下载文件,提交MR任务等等

三:搭建开发环境
1、打包(http://www.dataguru.cn/thread-287295-1-1.html)或者下载对应版本的hadoop plugin
     在本地解压一份hadoop

2、安装好MapReduce的Eclipse插件

3、Eclipse中显示Project Explorer视图,显示Map/Reduce Location视图

4、取消hadoop的权限认证:
     在Linux的hadoop中配置如下:
<property>
    <name>dfs.permissions</name>
    <value>false</value>
    <description>
       If "true", enable permission checking in HDFS.
       If "false", permission checking is turned off,
       but all other behavior is unchanged.
       Switching from one parameter value to the other does not change the mode,
       owner or group of files or directories.
    </description>
</property>

5、Map/Reduce Location视图中右击新建Location

其中,User name指的是Linux用户名

接下来还需要选择Advanced parameters,将里面一些关于路径的配置改成和虚拟机上的正确路径
例如:dfs.name.dir等等

6、点击Finish之后,左侧的Project Expolorer视图的DFS Locations中将出现新的Location
     如果之前在Linux中使用命令行添加过目录,这边就会有user目录,如果没有,执行一下添加目录的命令就可以了
类似如下的结构


7、 新建项目,将WordCount.java放入其中,其中jar包支持来自于解压在本地的hadoop目录下的lib

8、main方法添加如下的修改:
conf.set(  "mapred.job.tracker" "192.168.142.128:9001"  );
job.setJarByClass(Count.  class );
args=  new  String[]{ "hdfs://192.168.142.128:9000/user/Irving/input"  ,  "hdfs://192.168.142.128:9000/user/Irving/newOutput"  };

注意:假设读者已经在命令行执行过map reduce任务,所以此处略过了WordCount项目的编写,以及input和out文件目录的新建和管理部分。

9、点击运行Run on Hadoop,选择刚刚新建的location


至此,已经能在eclipse中提交任务到远程的Hadoop上执行,并且返回结果了。

10、如何debug?
此处只讨论如何调试Map Reduce任务
①、修改mapred-site.xml文件,添加远程调试的监听端口:
<  property >
<  name >  mapred.child.java.opts  </ name  >
<  value >  -agentlib:jdwp=transport=dt_socket,address=8883,server=y,suspend=y  </  value >
</  property >
 
     < property  >
        < name  > mapred.tasktracker.map.tasks.maximum  </  name >
        < value  > 1  </  value >
     </ property  >
     < property  >
        < name  > mapred.tasktracker.reduce.tasks.maximum  </  name >
        < value  > 1  </  value >
     </ property  >
 
     < property  >
        < name  > mapred.job.reuse.jvm.num.tasks  </  name >
        < value  > -1  </  value >
     </ property  >
重启Hadoop服务

②、将该文件复制到项目的src目录下。

③、在Map任务中添加断点,在Eclipse中按照9中所描述的,运行word count程序,会发现程序在执行map任务的时候就暂停了:

此时,新建一个Debug - > remote Java appliction,

运行,将会进入debug模式:



Map任务完成之后,程序将停在Reduce任务为0%的时候,


此时,再运行一次刚刚的remote Java appliction,将进入reduce任务的断点。


完毕。
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值