整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

5.5.7 远程调试

hadoop 小红牛 7℃ 0评论

当一个任务失败并且没有足够多的记录信息来诊断错误时,可以选择用调试器运行该任务。在集群上运行作业时,很难使用调试器,因为你不知道哪个节点处理哪部分输入,所以不能在错误发生之前安装调试器。然而,有一些其他可用的方法。

•在本地重新产生错误对于特定的输入,失败的任务通常总会失败。你可以尝试通过下载致使任务失败的文件到本地运行重现问题,这可以使用到调试器(如JavaVisualVM)。

•使用JVM调试选项失败产生的一个通常原因是任务JVMJava内存溢出错误。可以将Mapred.child.java.opt设置包含-XX: HeapDiimpOnOutOfMemoryError-XX:HeapDumpPath=/path/to/dumps

该设置将产生一个堆转储(heapdump),这可以通过或Eclipse MemoryAnalyzer这样的工具来检査。注意,该JVM选项应当添加到由mapred.child,java.opts指定的已有内存设置中。9.4.2

节在讨论内存时有进一步的讨论。

•使用任务分析Javaprofiler提供了很多JVM的内部细节,Hadoop提供了分析作业中部分任务的机制。参阅5.6.1节。

 

• 使用丨solationRunner老版本的Hadoop提供了一个称为

IsolationRunner的任务运行器,它可以在集群的原来位置重新运行失败的任务。不幸的是,在目前的版本中不再支持了,但可以在https://issues.apache•or'g/jira/browse/MAPREDUCE-ZSS?找一下它的代替者。

在一些情况下保存失败的任务尝试的中间结果文件对于以后的检査是有用的,特别是在任务工作路径中建立转储或配置文件。可以将keep..failed.task.files设置为true来保存失败的任务文件。

你也可以保存成功任务的中间结果文件,以便解释任务没有失败。这时,将属性keep.task.files.pattern设置为一个正则表达式(与保留的任务ID匹配)。

为了检査中间结果文件,登录到任务失败的节点并找到该任务尝试的目录。它在一个本地MapReduce目录下,由mapred.local.dir的设置决定(细节 请参阅9_4.3)。如果这个属性是以逗号分隔的目录列表(在一台机器的物 理磁盘上分布负载),在找到那个特定的task attempt之前,需要搜索整个目录。taskattemp的目录在以下位置:

mapred.local.dir/taskTracker/jobcache/job'ID/task-attempt-ID

转载请注明:全栈大数据 » 5.5.7 远程调试

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址