Debugging 如何使用Eclipse调试MapReduce主节点中的工作节点?

Debugging 如何使用Eclipse调试MapReduce主节点中的工作节点?,debugging,hadoop,mapreduce,Debugging,Hadoop,Mapreduce,我想完成以下任务: 我在主节点的eclipse中运行了MapReduce应用程序,比如WordCount,我想看看worker节点是如何使用eclipse工作的,因为我知道本地MapReduce作业和完全分布式的MapReduce作业之间有一些不同的工作流程 有没有办法做到这一点 您可以在本地运行任务,请参阅: 首先在本地runner中运行所有内容(可能只需少量输入)。 您可以通过在配置中将工作跟踪器设置为“本地”来实现这一点。本地运行程序可以在调试器下运行,并在开发计算机上运行 设置此配置变量

我想完成以下任务:

我在主节点的eclipse中运行了MapReduce应用程序,比如WordCount,我想看看worker节点是如何使用eclipse工作的,因为我知道本地MapReduce作业和完全分布式的MapReduce作业之间有一些不同的工作流程


有没有办法做到这一点

您可以在本地运行任务,请参阅:

首先在本地runner中运行所有内容(可能只需少量输入)。 您可以通过在配置中将工作跟踪器设置为“本地”来实现这一点。本地运行程序可以在调试器下运行,并在开发计算机上运行

设置此配置变量的一种非常简单快捷的方法是在运行作业之前包含以下行:
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
。有几个例子可以说明如何做到这一点,尽管关于如何做到这一点的细节各不相同:

一旦您理解了目标是将
-agentlib:…
参数传递给Java命令行,以便启用远程调试器,以便Eclipse能够附加一些东西,那么实现的细节就变得无关紧要了。不过,我会避开hadoop-env.sh的修改


AFAIK Cloudera有一个VM映像,它附带了一个用于本地M/R任务开发的预配置Eclipse,请参见

谢谢Rusanu!然而,我想知道worker节点如何处理这样的场景:我使用大量输入数据运行了诸如WordCount之类的MR应用程序。然后,我想看看worker节点如何处理来自主节点的给定数据块或提交的映射任务。