我不是在寻找这些依赖println的所谓“调试”解决方案。我的意思是将一个真正的调试器附加到一个正在运行的 Hadoop 实例上,并从另一台机器上调试它。
这可能吗?如何?数据库?
一个很好的链接
要调试任务跟踪器,请执行以下步骤。
编辑 conf/hadoop-env.sh 以获得以下信息
导出 HADOOP_TASKTRACKER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n"
启动 Hadoop(bin/start-dfs.sh 和 bin/start-mapred.sh)
我从来没有这样做过,因为我宁愿我的“真实”工作不受调试开销的阻碍(在某些情况下,无论如何都可以改变环境条件):我针对伪实例“本地”调试(正常在eclipse中调试绝对没有问题),一旦我隔离了问题所在(通过使用例如计数器),就从实时环境中复制特定文件。