2013-10-02 27 views
0

我想要做如下任务:如何使用Eclipse在MapReduce的主节点中调试工作节点?

我跑的MapReduce应用程序,如字计数在主节点的日食,我希望看到的工作节点是如何使用Eclipse的工作,因为我知道,有一些不同的工作流程在本地mapreduce作业和完全分布式mapreduce作业之间。

有什么办法可以达到这个目的吗?

回答

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。有几个例子,说明如何做到这一点,altough关于如何做到这一点的具体情况有所不同:

一旦你了解我们的目标是要通过-agentlib:...参数传递给Java命令行为了启用远程调试器以便Eclipse有附加内容,具体的如何实现变得无关紧要。不过,我会避免hadoop-env.sh修改。

AFAIK Cloudera的有自带的预配置Eclipse进行局部M/R任务开发一个虚拟机镜像,见How-to: Use Eclipse with MapReduce in Cloudera’s QuickStart VM

+0

感谢Rusanu!但是,我想知道工作节点如何与这种情况一起工作: 我运行MR应用程序,例如具有大尺寸输入数据的WordCount。然后,我想看看工作节点如何与来自主节点的给定数据块或提交的地图任务一起工作。 –

相关问题