nu tch 分布式详解 1( Injector) 初始抓取时,没有任何文件,只有几个待抓取的 url 站点信息
假设所有 url 站点存在 rootUrlDir 文件目录下(可以是一个或多个文件,每个文件一行一个 url)
需要将这些 url 导入到 crawldb 中去,以方便在下次 generate 时能够抓取这些网页
这里详细介绍导入函数 injector 的分布式过程
导入函数调用方式为:injector
inject(crawlDb, rootUrlDir)
整体过程包含两个 MapReduce 过程: (1)sortJob:把输入的 url 转换为 crawlDatum 格式; Input: urlDir Mapper:InjectMapper: ---> Output:tempDir OutputFormat:SequenceFileOutputFormat 分析:Map 过程中,一行读取一个 url,并将 url 站点封装成 crawlDatum 对象
每个 url 都经过 urlNormalizers, filters,scfilters 三个过程标记状态: urlNormailizes 在这里为 URLNormalizers
SCOPE_INJECT 状态,将 url 正规化处理,如规范大小写等; filters 由 nutch-site
xml 的“urlfilter
order”属性控制,默认值为空时加载所有的 urlfilter,把一些不符合的 url过滤掉(这里也可以自定义urlfilter,比如过滤某 些不需要抓取的站点); Scfilters 由“scoring
filter
order”属性控制,默认值是空也是加载所有的 score filter 的 injectedScore 函数; 新构造的 crawlDatum 的 status