Nutch 在 EMR 中对原始数据进行持久存储的最佳选择

Nutch best option for persistent storage in EMR for raw data

我必须在 EMR AWS 服务上使用 Nutch 1.x 抓取大约 3 万到 5 万个域。这将是渐进的,即首先抓取所有页面,然后仅抓取这些网站的新页面或更新页面。 对于索引,我使用的是 Apache Solr。我对 EMR

的最佳实践几乎没有疑问
  1. 如果我必须重新索引或分析旧的爬网数据,我认为原始数据应该存储在 S3 上。这是正确的选择吗?
  2. 对于我的第一个问题,是将 S3 配置为 HDFS 的后端存储更好,还是我应该在 EMR 作业结束时手动复制文件夹。
  3. 无论哪种情况,为了优化原始数据在 S3 中的存储,导入或导出时如何压缩数据 from/to EMR 集群 to/from S3。
  4. 我如何指示 Nutch 仅抓取来自给定种子的新找到的页面
  1. Nutch 能够 read/write 直接从 S3,参见
  2. 将段和 CrawlDb 直接写入 S3 是有意义的。但是把它保存在 HDFS 上然后复制 (distcp) 到 S3 也是可以的。
  3. 参见 mapreduce.output.fileoutputformat.compress.codec - org.apache.hadoop.io.compress.ZStandardCodec 是一个不错的选择。
  4. (最好分开再问)爬取的域名都提供sitemaps吗?否则,挑战是将许多具有 re-fetching 的新 URL 作为不太可能已知的页面。如果您想要所有新页面或确保所有已删除的页面都被识别,则重新抓取所有内容会更容易。