当我在本地模式下在Ubuntu上运行Nutch爬行作为后台进程时,Fetcher将使用挂起的线程中止。消息类似于:
WARN fetcher.Fetcher - 用“X”挂起的线程中止。
我使用nohup和&开始编写脚本因为我想从会话中注销并让爬虫仍在服务器上运行。否则,当爬网在某个深度完成并且正在更新crawldb时,SSH会话超时。我试过配置“保持活跃”的消息没有太多帮助。该命令类似于:
nohup ./bin/nutch crawl ....... &
以前有人经历过这个吗?它似乎只有在我使用nohup或&时才会发生。
答案 0 :(得分:1)
当一些请求似乎挂起时,Fetcher类会记录挂起的线程消息,尽管有各种意图。 在F etcher.java,第926-930行::
if ((System.currentTimeMillis() - lastRequestStart.get()) > timeout) {
if (LOG.isWarnEnabled()) {
LOG.warn("Aborting with "+activeThreads+" hung threads.");
}
return;
}
请求的超时由mapred.task.timeout定义,默认值为10分钟。你可能会增加它..不确定它是否是100%干净的修复。
当我观察到这种现象时,我在代码中添加了记录器以查找请求挂起超过10分钟的URL,并得出结论,对于大文件,当服务器花费更多时间进行数据传输时也会发现此问题