我不是在寻找这些依赖println的所谓“调试”解决方案。我的意思是将一个真正的调试器附加到一个正在运行的hadoop示例上,并从另一台机器上调试它。这可能吗?怎样?jdb?
jobtbby31#
一个很好的链接要调试任务跟踪器,请执行以下步骤。编辑conf/hadoop-env.sh以获得以下内容导出hadoop\u tasktracker\u opts=“-xdebug”-xrunjdwp:transport=dt_socket,地址=5000,服务器=y,挂起=n“启动hadoop(bin/start-dfs.sh和bin/start-mapred.sh)它将阻止等待调试连接在调试配置中使用eclipse“远程java应用程序”连接到服务器并添加断点运行map reduce作业
knpiaxh12#
我从来没有这样做过,因为我更希望我的“真实”作业不受调试开销的影响(在某些情况下,调试开销可能会改变环境条件):我对伪示例进行“本地”调试(在eclipse中进行正常调试绝对没有问题),一旦我隔离出问题所在(例如使用计数器),就从实时环境复制特定文件。
2条答案
按热度按时间jobtbby31#
一个很好的链接
要调试任务跟踪器,请执行以下步骤。
编辑conf/hadoop-env.sh以获得以下内容
导出hadoop\u tasktracker\u opts=“-xdebug”-xrunjdwp:transport=dt_socket,地址=5000,服务器=y,挂起=n“
启动hadoop(bin/start-dfs.sh和bin/start-mapred.sh)
它将阻止等待调试连接
在调试配置中使用eclipse“远程java应用程序”连接到服务器并添加断点
运行map reduce作业
knpiaxh12#
我从来没有这样做过,因为我更希望我的“真实”作业不受调试开销的影响(在某些情况下,调试开销可能会改变环境条件):我对伪示例进行“本地”调试(在eclipse中进行正常调试绝对没有问题),一旦我隔离出问题所在(例如使用计数器),就从实时环境复制特定文件。