我已经将apache Nutch 2.3.1配置为单节点集群(Hadoop 2.7.x和hbase 1.2.6)。我必须检查其检查点功能。根据我的信息,恢复在Fetch和parse中可用。我假设在获取(或解析)期间的任何阶段,由于某些问题,我的整个集群都会出现故障。电源(检测)失败。我假设当我使用-resume标志重新启动集群和爬虫时,它应该开始只获取那些未获取的URL。
但我观察到的是(启用调试)它开始重新获取所有URL(具有相同的batchID),直到结束,即使是恢复标志。恢复标志仅在作业(例如提取)完成时才有效。我已经在日志中用"Skipping express.pk; already fetched"
等消息对其进行了交叉检查。
我对Nutch的恢复选项的解释是否正确?
或者群集/配置有问题吗?
答案 0 :(得分:2)
你的解释是正确的。此外,在这种情况下,Nutch(日志)的输出也是正确的。
如果您检查https://github.com/apache/nutch/blob/release-2.3.1/src/java/org/apache/nutch/fetcher/FetcherJob.java#L119-L124上的代码,Nutch只记录跳过该URL的日志,因为它已被提取。由于Nutch分批工作,需要检查同一batchId
上的所有URL,但是如果指定resume标志,那么(仅在DEBUG上)将记录它正在跳过某些URL。如果您遇到问题,这主要是为了排除故障。
这种情况发生在Nutch没有记录最后处理过的URL的情况下,它需要从同一批次的开头开始并从那里开始工作。即使知道最后一个URL是不够的,因为您还需要批次中该URL的位置。