我已经用单节点集群(hadoop2.7.x和hbase 1.2.6)配置了apachenutch2.3.1。我必须检查它的检查点功能。据我所知,在fetch和parse中可以使用resuming。我假设在获取(或解析)过程中的任何阶段,我的整个集群都会因为一些问题(例如电源故障)而崩溃。我假设当我用-resume标志重新启动集群和爬虫程序时,它应该只开始获取那些没有获取的URL。
但我观察到的是(在启用调试的情况下),它开始重新提取所有URL(使用相同的batchid),直到结束,甚至使用resume标志。仅当作业(如获取)完全完成时,恢复标志才起作用。我已经从日志中核对过了 "Skipping express.pk; already fetched"
.
我对简历选项的解释是否有误?
或者集群/配置有问题?
1条答案
按热度按时间amrnrhlw1#
你的解释是对的。此外,在这种情况下,nutch(logs)的输出也是正确的。
如果你查一下密码https://github.com/apache/nutch/blob/release-2.3.1/src/java/org/apache/nutch/fetcher/fetcherjob.java#l119-l124,nutch只是跳过该url的日志记录,因为它已经被获取。由于nutch是成批工作的,in需要检查同一个服务器上的所有url
batchId
,但如果您指定resume标志,则(仅在调试时)将记录它跳过某些URL。这主要是为了解决一些问题。发生这种情况时,nutch没有保存上一次处理的url的记录,它需要从同一批的开始开始,并从那里开始工作。即使知道最后一个url也是不够的,因为您还需要该url在批处理中的位置。