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

时间:2013-10-02 11:13:46

标签: debugging hadoop mapreduce

我想在下面执行任务:

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

有没有办法实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以在本地运行任务,请参阅How to Debug Map/Reduce Programs

  

首先让本地跑步者运行一切(可能是小输入)。   您可以通过在配置中将作业跟踪器设置为“本地”来完成此操作。本地运行程序可以在调试器下运行并在您的开发计算机上运行。

     

设置此配置变量的一种非常快速简便的方法是在运行作业之前包含以下行:   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映像,附带预配置的Eclipse,用于本地M / R任务开发,请参阅How-to: Use Eclipse with MapReduce in Cloudera’s QuickStart VM