Windows中如何远程调试MapReduce任务

1 概述

我们一般都会将Hadoop部署到服务器中,那么就会出现在Windows中无法直接运行MapReduce任务,需要先将MapReduce任务导出为jar包,然后上传到服务器中运行,运行命令:

$hadoop jar [jar文件] [main启动类] [输入文件] [输出文件]

注:main启动类需要是类的全限定名

但是通过这种方式执行MapReduce任务,我们无法断点调试源代码的执行过程,其实我们可以通过远程调试的方式来解决。

2 解决思路

2.1 服务端启动监听服务

要想通过远程断点调试,那么首先得在远程服务器端启动MapReduce任务的时候需要先暂停并开启一个监听服务,等待客户端的连接调试,可以通过设置运行时JVM的参数来搞定

-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000

注:该命令参数是JDK自带的,可以通过 java -agentlib:jdwp=help 来查看agentlib各参数的具体说明,其中address=8000表示监听端口为8000

2.2 参数应该配置到哪里呢?

MapReduce任务是通过hadoop jar命令启动执行的,那么分析hadoop安装目录中的bin目录下的hadoop运行脚本,可以找到在脚本中执行程序前有hadoop的JVM运行参数设置,这里我们可以设置到HADOOP_CLIENT_OPTS参数中,我们可以在当前shell中直接通过export命令来临时添加一个环境变量

162501_O5eC_2842105.png

3【总结】远程调试配置步骤

经过上面分析那么不难看出,服务端只需要配置一个运行时参数即可,然后就可以通过IDEA开发工具来远程调试了,具体配置步骤如下:

3.1 远程服务端配置

(1)服务器端添加一个临时环境变量

$export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"

(2)服务器端执行MapReduce任务,如

$hadoop jar mapreduce-task.jar com.os.china.mapreduce.weather.JobRun /file/weather.txt /out

此时可以发现启动程序暂定了并且开启了服务监听端口8000

162741_ayQk_2842105.png

3.2 Windows本地IDEA中远程调试配置

(1)在IDEA中新建一个远程Debug调试配置

162850_d3su_2842105.png

(2)配置完点击ok

163016_6rTQ_2842105.png

注:Host:参数配置远程服务器的ip地址,Port:远程服务器监听端口

(3)Debug运行即可开始远程的调试MapReduce任务执行过程了

163111_NpwV_2842105.png

 

转载于:https://my.oschina.net/feinik/blog/1634690

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值