5

我不是在寻找这些依赖println的所谓“调试”解决方案。我的意思是将一个真正的调试器附加到一个正在运行的 Hadoop 实例上,并从另一台机器上调试它。

这可能吗?如何?数据库?

4

2 回答 2

4

一个很好的链接

要调试任务跟踪器,请执行以下步骤。

  1. 编辑 conf/hadoop-env.sh 以获得以下信息

    导出 HADOOP_TASKTRACKER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n"

  2. 启动 Hadoop(bin/start-dfs.sh 和 bin/start-mapred.sh)

  3. 它将阻塞等待调试连接
  4. 在调试配置中使用 Eclipse“远程 Java 应用程序”连接到服务器并添加断点
  5. 运行地图减少作业
于 2013-05-31T13:06:30.413 回答
1

我从来没有这样做过,因为我宁愿我的“真实”工作不受调试开销的阻碍(在某些情况下,无论如何都可以改变环境条件):我针对伪实例“本地”调试(正常在eclipse中调试绝对没有问题),一旦我隔离了问题所在(通过使用例如计数器),就从实时环境中复制特定文件。

于 2013-05-31T08:03:56.723 回答