Windows中如何远程调试MapReduce任务


声明:本文转载自https://my.oschina.net/feinik/blog/1634690,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

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命令来临时添加一个环境变量

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

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

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

(2)配置完点击ok

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

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

 

本文发表于2018年03月14日 22:38
(c)注:本文转载自https://my.oschina.net/feinik/blog/1634690,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1801 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1