我是第一次 EMR/Hadoop 用户和第一次 Apache Nutch 用户。我正在尝试使用 Apache Nutch 2.1 进行一些屏幕抓取。我想在 hadoop 上运行它,但不想设置我自己的集群(一次一个学习曲线)。所以我正在使用EMR。而且我希望将 S3 用于输出(以及我需要的任何输入)。
我一直在阅读 Nutch 的设置 wiki:
http://wiki.apache.org/nutch/NutchTutorial
http://wiki.apache.org/nutch/NutchHadoopTutorial
他们在让我快速了解 nutch 的基础知识方面非常有帮助。我意识到我可以从源代码构建 nutch,预配置一些正则表达式,然后留下一个 hadoop 友好的 jar:
$NUTCH_HOME/runtime/deploy/apache-nutch-2.1.job
大多数教程都以运行爬网命令而告终。在 Hadoop 示例中,它是:
hadoop jar nutch-${version}.jar org.apache.nutch.crawl.Crawl urls -dir crawl -depth 3 -topN 5
在本地部署示例中,它类似于:
bin/nutch crawl urls -dir crawl -depth 3 -topN 5
我的问题如下。我需要做什么才能让我的 apache-nutch-2.1.job 在 EMR 上运行?我通过什么论据?对于上面的 hadoop 抓取示例,“urls”文件已经在带有种子 URL 的 hdfs 上。如何在 EMR 上执行此操作?另外,我在命令行上指定什么让我的最终输出转到 S3 而不是 HDFS?