Nutch 2里面发生了什么?

Sor*_*ush 5 algorithm infrastructure analysis nutch

我渴望知道(并且必须知道)关于nutch及其算法(因为它与我的项目有关),它用于获取,分类,...(通常是爬行).
我读过这篇文章,但有点难以理解.
是否有人能够以完整且易于理解的方式向我解释这一点?
提前致谢.

Xan*_*tix 18

简答

简而言之,他们开发了一个webcrawler,旨在从许多计算机环境中非常有效地爬网(但也可以在一台计算机上运行).

您可以开始抓取网络,而无需了解他们是如何实现的.

您引用的页面描述了它的实现方式.

它背后的技术

他们使用Hadoop,这是一个开源的java项目,它是按照MapReduce的相同方式设计的.MapReduce是Google用于抓取和整理网络的技术.

我参加了一些关于MapReduce/Hadoop的讲座,不幸的是,我不知道现在是否有人能够以一种完整且易于理解的方式解释它(它们有点对立).

看一下MapReduce的维基百科页面.

基本思想是将作业发送到主节点,主服务器将工作分成几部分并将其发送(映射)到执行其分配的子任务的各种工作节点(其他计算机或线程),然后发送将结果归还给师父.

一旦主节点获得所有子结果(或一些子结果),它就开始将它们(减少它们)组合成最终答案.

所有这些任务都是在同一时间完成的,每台计算机都有适当的工作量来保持它的整个时间.

如何抓取

由4个工作组成:

  1. 生成
  2. 解析
  3. 更新数据库

*生成

从包含您要开始抓取的网页的网页列表开始:"Webtable".

主节点将该列表中的所有页面发送到其从站(但如果两个页面具有相同的域,则将它们发送到同一个从站).

奴隶获取其指定的网页和:

  1. 这已经生成了吗?如果是这样,请跳过它.
  2. 规范化网址,因为"http://www.google.com/"和"http://www.google.com/../"实际上是同一个网页.
  3. 将初始分数与网页一起返回给主人.

(主页在将网页发送到其从属设备时对其进行分区,以便它们同时完成)

Master现在选择topN(也许用户只想从10个初始页面开始),并将它们标记为在webtable中选择.

*取

Master查看webtable中的每个URL,将标记的URL映射到slave上以处理它们.

Slaves从Internet上获取每个URL的速度与Internet连接允许的一样快,它们为每个域都有一个队列.

他们将URL与网页的HTML文本一起返回给Master.

*解析

Master查看webtable中的每个网页,如果它被标记为fetched,它会将其发送给它的slave来解析它.

从属设备首先检查它是否已被另一个从设备解析,如果是这样,则跳过它.

否则,它会解析网页并将结果保存到webtable.

*更新数据库

Master查看webtable中的每个网页,将解析的行发送到其slave.

奴隶接收这些解析的URL,根据远离这些页面的链接数量(以及这些链接附近的文本)计算得分,并将Urls和分数发送回Master(按得分时按分数排序)由于分区而回到主人那里).

主人根据来自其他网页的链接数量计算和更新网页分数.

主服务器将此全部存储到数据库中.

重复

解析页面后,这些网页中的链接被添加到网页表中.您现在可以仅在尚未查看的页面上重复此过程,以继续扩展您访问过的页面.最后,在上述四个步骤的足够迭代之后,您将到达大部分互联网.

结论

MapReduce是一个很酷的系统.

为了使其尽可能高效,已经付出了很多努力.

他们可以处理计算机在工作中间发生故障并将工作重新分配给其他奴隶.他们可以处理一些奴隶比其他奴隶更快.

Master可以决定在自己的机器上执行奴隶的任务,而不是将其发送给奴隶,如果它更有效率的话.通信网络非常先进.

MapReduce允许您编写简单的代码:

定义Mapper,可选的Partitioner和Reducer.

然后让MapReduce弄清楚如何最好地利用它可以访问的所有计算机资源,即使它是一台连接速度较慢的计算机或kila-cluster.(甚至可能是超级集群).