- 博客(21)
- 资源 (5)
- 收藏
- 关注
原创 nutch中如果想想对一个文件实现独享,可以使用文件锁
下面介绍一下文件锁的使用方法: (1)创建文件锁: FileSystem fs = FileSystem.get(getConf()); Path lock = new Path(crawlDb, LOCK_NAME); LockUtil.createLockFile(fs, lock, force); getConf()获得当前job的配置文件Configura
2012-07-31 09:43:09 1050
原创 nutch爬取结果中为什么最后的链接状态CrawlDatum错了?
因为我最后一遍爬取的时候没有将链接数据库CrawlDb进行更新,所以连接数据库中的url链接信息是上一次的状态,所以和预期的效果不一样。 解决方案:在最后一遍爬取时,既要更新已存在的url的CrawlDatum,同时不能添加本次解析网页获得的链接(因为我们只爬取三层,第四层的链接就不需要),所以需要在改动CrawlDb中的update函数,添加一个boolean型的参数,表示是否需要将链接更新到
2012-07-30 15:36:45 1081
原创 Nutch中CrawlDatum的FetchTime的设置了解
昨天看错了,实际上对于爬取成功的url,在update()阶段,程序会将url的FetchTime+FetchInterval作为最终的下次FetchTime,这个FetchTime已经不再代表网页成功Fetch的时间,而是作为下次Fetch的时间,如果在小于新的FetchTime的时间内对该url进行爬去,程序将会过滤掉该url。 在CrawlDbReducer中的reduce函数:
2012-07-29 18:33:40 2258
原创 为什么injector了47个站点,而generate的时候却把上次爬去的父链接给过滤掉了?
因为返回时间的问题,被第二个多了条件给过滤掉了 if (!schedule.shouldFetch(url, crawlDatum, curTime)) { LOG.debug("-shouldFetch rejected '" + url + "', fetchTime=" + crawlDatum.getFetchTime() + ", c
2012-07-29 15:58:40 978
原创 nutch中调用CrawlDatum的set()函数的地方
(1)Injector中的InjectReducer内部类的reduce函数中第一次调用 (2)CrawlDbReducer中的reduce函数多次调用set函数 /** * 输入是,CrawlDb,Segment\crawl_fetch和Segment\carwl_parse中的键值对。 */ public void reduce(Text key, Iterator v
2012-07-28 18:31:38 2232
原创 为什么会出现子站点的CrawlDatum中的ifStart和finished字段与父站点相同?
和CrawlDatum中的set()没有关系。 原因是:因为我在Injector第二个job的ReducerClass(即InjectReducer)最后添加了代码 res.setIfStart(true); res.setFinished(false); 而InjectorReducer类将上一个job产生的键值对和链接数据库CrawlDb中的键值对进行合并,就是将两个数据源中的键值对全
2012-07-28 18:08:34 2062
原创 nutch爬去是出现NullPointException问题
问题出现在:package org.apache.nutch.protocol.http.api中的RobotRulesParser类的isAllowed方法中,可能请求时间过短的原因,让该方法睡眠500毫秒问题就解决了,但影响效率。有更好的解决方案待深入研究。 public boolean isAllowed(URL url) { // System.err.println(
2012-07-28 16:36:49 870
原创 nutch持久化问题
nutch中要持久化的数据都有两个方法,将需要持久化得数据通过write写出,恢复时通过read读入,我想CrawlDatum类中,添加了两个boolean型的属性,生成数据库后再用CrawlDbReader类读取,发现值都为false,后来发现没有将这两个属性进行写入的原因,问题解决。 public static CrawlDatum read(DataInput in) throws I
2012-07-26 16:22:31 879
原创 nutch1.2的generator如何获得输入的
今天分析了nutch中Generator如何读取上一步Injector生成的链接数据库CrawlDb,将nutch输入的原理进行总结。 (1)MapTask中通过获取job的InputFormat类,然后通过该类获得RecodReader,代码如下: RecordReader rawIn =job.getInputFormat().getRecordReader(inputS
2012-07-25 15:42:18 988
原创 Nutch如何读取CrawlDb中的<Text,CrawlDatum>键值对
想要查看CrawlDb中的键值对,于是今天修改了nutch中的CrawlDbReader类,对源码进行了稍微的修改,提交了一个job,然后在添加的MapperClass类中,将CrawlDb中的键值对打印出来进行查看分析,代码如下: (1)添加的MapperClass类,代码如下: public static class CrawlDbShowMapper implements Mappe
2012-07-25 09:26:33 1420
原创 Nutch中OutputCollector如何输出结果
OutputCollector调用OutputFormat获得RecordWriter类,然后通过该类的write函数具体实现输出 所以要控制输出结果,就要写自己的OutputFormat类,重写RecorWriter类。
2012-07-24 09:43:50 1393
原创 Nutch1.2中的数据流介绍(其他版本可能不同)
Injector:插入操作 (1)Injector获得纯文本的url种子文件的路径,即rootUrlDir (2)inject第一个job,将纯文本url文件读取解析,然后经过一系列过滤加工处理,返回键值对(备注:Text是url封装类,CrawlDatum是url状态类)存储到临时目录tempDir中。 (3)inject第二个job,输入为临时目录tempDir和url种子库CrawlD
2012-07-21 16:25:34 1184
原创 nutch系统是如何加载和管理URLFilter插件的
根据Injector中的URLFilter插件加载为例进行分析。 (1)首先在Crawl中创建了一个Configration实例,并将它传递给了Injector (2)Injector的构造函数中,根据该配置信息类JobConf调用URLFilter获得所有的url过滤插件:filters = new URLFilters(jobConf); (3)在URLFilte
2012-07-18 16:37:54 1704
原创 nutch如何根据regex-urlfilter.txt文件过滤url链接的?
今天看了一下nutch的url链接过滤插件加载和工作原理,以及他和配置文件regex-urlfilter.txt之间的关系,下面对得到的一些收获进行介绍。 关系:扩展RegexURLFilter根据配置文件regex-urlfilter.txt生成一些列的规则Rule(就是一些列正则表达式Pattern类),扩展过滤方法filter()被调用时,会根据生成的规则过滤url。 具体扩展加载和生成
2012-07-18 15:56:09 5030
原创 nutch如何对种子链接输入产生键值对的?
nutch程序对输入文件有两次处理: (1)提交Job前在JobClient中,为了使输入不至于过大,程序调用切分函数(如下代码),对输入进行切分 if (job.getUseNewMapper()) { maps = writeNewSplits(context, submitSplitFile); } else { maps = writeOl
2012-07-18 10:32:49 1343
原创 Nutch中的Injector为什么按照url链接的个数执行多次Map()函数?
今天详细分析了一下nutch源代码,发现程序调用多次map原因: 首先开始以为是LocalJobRunner的原因,因为LocalJobRunner将输入切分成了若干份rawSplits看,然后对每个分块调用MapTask线程执行处理(备注:MapTask不是Map类,他是负责管理Map类的程序,他调用MapRunner函数调用Map函数)。 但后来发现不是LocalJobRunner类的原因
2012-07-17 18:48:22 800
原创 lucene索引查看工具LukeAll下载地址和Appache开软件下载地址
lukeAll下载地址:http://code.google.com/p/luke/downloads/list apache下载地址:http://archive.apache.org/dist/nutch/
2012-07-17 09:41:10 4513
原创 配置nutch1.2时url被过滤掉的问题
按照步骤修改了regex-urlfilter.txt。但是还是将所有的url都过滤掉了,查看提示说让我查看url seed list或者url filter配置文件。 我将crawl-urlfilter.txt类中的最后一行修改为“-.”意思是全部接受。然后再运行程序就可以了。
2012-07-17 09:37:43 841
原创 下载软件注意事项
今天配置tomcat出现了莫名其妙的错误 请求高人指点后发现时下载的软件的错误 我下载的是src类型的压缩文件,这种文件时未编译的,所以不能直接在linux下配置实用 知道这点之后,我有重新去apache网站上下载了bin类型的压缩文件 然后解压,拷贝到目标目录下,启动startup.sh服务,然后再浏览器里输入http:\\localhost:8080就可以看到apache的首页了。
2012-07-13 19:08:11 731
原创 Linux下hadoop完全分布式配置总结
这段时间一直在配置hadoop系统,搞了半个多月,昨天听凯子说他配成功过,然后给我推荐了他的写的博客,今天按照他配置的过程,终于配置成功了,首先感谢凯子帅哥,以后要注意多和朋友们交流,这样就可以少走很多弯路。 凯子帅哥的博客地址(http://www.zhenv5.com/?s=hadoop&x=0&y=0),可以到他的zhenv5网站查看原文。 下面将我的配置过程,和配置不成
2012-07-08 15:50:48 1046
原创 hadoop完全分布式过程中遇到的一些问题和总结
最近接触在配置nutch,接触到一些hadoop方面的知识,自己想配置一个完全分布式的hadoop系统,配置过程中遇到了很多的问题,这里将自己遇到的问题进行总结一下。 (1)首先是Exception in thread "main" java.io.IOException: Call to /XXX.XXX.XX.XXX:9000 failed on local exception: java.
2012-07-05 10:51:55 2746
数据结构试验 山东大学
2011-05-19
数据库课程设计-图书馆信息管理系统
2011-05-18
图形学第二个试验-多边形世界
2011-05-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人