【问题标题】:How can I debug worker nodes in master node of MapReduce using Eclipse?如何使用 Eclipse 调试 MapReduce 主节点中的工作节点?
【发布时间】:2013-10-02 20:07:25
【问题描述】:

我想做以下任务:

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

有什么方法可以实现吗?

【问题讨论】:

    标签: debugging hadoop 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。有几个示例如何做到这一点,尽管具体如何做到这一点各不相同:

    一旦您了解目标是将 -agentlib:... 参数传递给 Java 命令行以启用远程调试器以便 Eclipse 可以附加某些东西,具体如何实现变得无关紧要。不过,我会避开 hadoop-env.sh 修改。

    AFAIK Cloudera 有一个带有预配置 Eclipse 的 VM 映像,用于本地 M/R 任务开发,请参阅 How-to: Use Eclipse with MapReduce in Cloudera’s QuickStart VM

    【讨论】:

    • 谢谢鲁萨努!但是,我想知道工作节点如何在这样的场景中工作:我运行 MR 应用程序,例如 WordCount,输入数据量很大。然后,我想看看工作节点如何处理给定的数据块或从主节点提交的地图任务。
    猜你喜欢
    • 2023-04-06
    • 2019-09-05
    • 2019-06-12
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多