如何使用eclipse调试mapreduce主节点中的工作节点?

xj3cbfub  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(478)

我想完成以下任务:
我在主节点的eclipse中运行了mapreduce应用程序,比如wordcount,我想看看工作节点是如何使用eclipse工作的,因为我知道本地mapreduce作业和完全分布式mapreduce作业之间有一些不同的工作流程。
有没有办法做到这一点?

a0x5cqrl

a0x5cqrl1#

您可以在本地运行任务,请参阅如何调试Map/缩减程序:
首先在本地runner中运行所有内容(可能是一个小的输入)。您可以通过在配置中将作业跟踪器设置为“local”来实现这一点。本地运行程序可以在调试器下运行,并在开发机器上运行。
设置此配置变量的一种非常简单快捷的方法是在运行作业之前包含以下行: conf.set("mapred.job.tracker", "local"); 您还可以这样做,使输入和输出文件位于本地文件系统中,而不是位于hadoop分布式文件系统(hdfs)中: conf.set("fs.default.name", "local"); 您还可以在hadoop-site.xml中设置这些配置参数。当程序运行时,配置文件hadoop-default.xml、mapred-default.xml和hadoop-site.xml应该出现在程序的类路径中。
如果您想在一个真正的集群中调试任务,您必须将调试选项添加到java开始行(例如。 -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000 )然后将eclipse远程连接到等待的java进程。例如,您可以设置 mapred.map.child.java.opts . 有几个例子可以说明如何做到这一点,尽管具体方法各不相同:
如何从eclipse调试hadoop mapreduce作业?
用eclipse远程调试hadoop作业
一旦你明白了目标是通过考试 -agentlib:... java命令行的参数,以便启用远程调试器,以便eclipse可以附加一些东西,具体如何实现变得无关紧要。不过,我会避开hadoop-env.sh的修改。
afaikcloudera有一个vm映像,它附带了一个用于本地m/r任务开发的预配置eclipse,请参阅cloudera的quickstart vm中的how-to:use eclipse with mapreduce

相关问题