电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

人力资源-Nutch Crawler工作流程及文件格式详细分析VIP免费

人力资源-Nutch Crawler工作流程及文件格式详细分析_第1页
1/7
人力资源-Nutch Crawler工作流程及文件格式详细分析_第2页
2/7
人力资源-Nutch Crawler工作流程及文件格式详细分析_第3页
3/7
NutchCrawler工作流程及文件格式详细分析Crawler和Searcher两部分被尽是分开,其主要目的是为了使两个部分可以布地配置在硬件平台上,例如Crawler和Searcher分别被放置在两个主机上,这样可以极大的提高灵活性和性能。一、总体介绍:1、先注入种子urls到crawldb2、循环:generate从crawldb中生成一个url的子集用于抓取fetch抓取上一小的url生成一个个segmentparse分析已抓取segment的内容update把已抓取的数据更新到原先的crawldb3、从已抓取的segments中分析出link地图4、索引segment文本及inlink锚文本二、相关的数据结构:CrawlDB●CrawlDb是一个包含如下结构数据的文件:●CrawlDatum:●Status:{db_unfetched,db_fetched,db_gone,linked,fetch_success,fetch_fail,fetch_gone}爬虫Crawler:Crawler的工作流程包括了整个nutch的所有步骤--injector,generator,fetcher,parseSegment,updateCrawleDB,Invertlinks,Index,DeleteDuplicates,IndexMergerCrawler涉及的数据文件和格式和含义,和以上的各个步骤相关的文件分别被存放在物理设备上的以下几个文件夹里,crawldb,segments,indexes,linkdb,index五个文件夹里。那么各个步骤和流程是怎么,各个文件夹里又是放着什么呢?观察Crawler类可以知道它的流程./nutchcrawlurls-dir~/crawl-depth4-threads10-topN20001、Injectorinjector=newInjector(conf);Usage:Injector首先是建立起始url集,每个url都经过URLNormalizers、filter和scoreFilter三个过程并标记状态。首先经过normalizerplugin,把url进行标准化,比如basicnomalizer的作用有把大写的url标准化为小写,把空格去除等等。然后再经过的plugin是filter,可以根据你写的正则表达式把想要的url留下来。经过两个步骤后,然后就是把这个url进行状态标记,每个url都对应着一个CrawlDatum,这个类对应着每个url在所有生命周期内的一切状态。细节上还有这个url处理的时间和初始时的分值。同时,在这个步骤里,会在文件系统里生成如下文件crawlDB\current\part-00000这个文件夹里还有.data.crc,.index.crc,data,index四个文件●MapReduce1:把输入的文件转换成DB格式In:包含urls的文本文件Map(line)→;status=db_unfetchedReduce()isidentity;Output:临时的输出文件夹●MapReduce2:合并到现有的DBInput:第一步的输出和已存在的DB文件Map()isidentity.Reduce:合并CrawlDatum成一个实体(entry)Out:一个新的DB2、Generatorgenerator=newGenerator(conf);//GeneratesasubsetofacrawldbtofetchUsage:Generator[-force][-topNN][-numFetchersnumFetchers][-adddaysnumDays][-noFilter]在这个步骤里,Generator一共做了四件事情,1、给前面injector完成的输出结果里按分值选出前topN个url,作为一个fetch的子集。2、根据第一步的结果检查是否已经选取出一些url,CrawlDatum的实体集。3、再次转化,此次要以url的host来分组,并以url的hash来排序。4、根据以上的步骤的结果来更新crawldb(injector产生)。●MapReduce1:根据要求选取一些要抓取的urlIn:CrawlDB文件Map()→ifdate≥now,inverttoPartition以随机的hash值来分组Reduce:compare()以CrawlDatum.linkCount的降序排列outputonlytop-Nmost-linkedentries●MapReduce2:为下一步抓取准备Map()isinvert;Partition()byhost,Reduce()isidentity.Out:包含要并行抓取的文件3、Fetcherfetcher=newFetcher(conf);//Thefetcher.MostoftheworkisdonebypluginsUsage:Fetcher[-threadsn][-noParsing]这个步骤里,Fetcher所做的事情主要就是抓取了,同时也完成一些其它的工作。首先,这是一个多线程的步骤,默认以10个线程去抓取。根据抓取回来后的结果状态来进行不同的标记,存储,再处理等等行为。输入是上一步骤Generator产生的segment文件夹,这个步骤里,考虑到先前已经按照ip或host来patition了,所以在此就不再把input文件进行分割了。程序继承了SequenceFileInputFo...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

人力资源-Nutch Crawler工作流程及文件格式详细分析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部