nutch入门之本地安装运行

标签: nutch | 发表时间:2014-02-18 22:54 | 作者:hektor
出处:http://www.iteye.com
最近hadoop着实很火,平时玩hadoop没有数据也很头疼,还好有nutch这个开源框架,可以从网上爬取数据。本身nutch也依赖hadoop来抓取数据,正好一举两得,
在学习nutch的过程中也提高对hadoop的认识,下面我会在业余时间整体对nutch的安装部署使用做一个比较全的描述,希望大家也一起共同进步吧~~


1、安装nutch通过它的二进制分发包
    a、下载apache-nutch-1.X-bin.zip到http://www.apache.org/dyn/closer.cgi/nutch/
    b、解压刚才的zip文件通过命令(使用zip apache-nutch-1.X-bin.zip 即可)
    c、进入到解压后的nutch目录里
   或者放弃使用编译好的二进制分发包,使用nutch源码编译后再安装
   a、下载源码包(apache-nutch-1.X-src.zip)然后解压出来
   b、进入到apache-nutch-1.x目录里 执行ant命令
   c、这里会出现个runtime/local目录准备为nutch安装用,local本地运行nutch,runtime为分布式运行nutch
2、确认nutch是否已经正确安装
   进入nutch目录后,运行“bin/nutch”出现类似下面的截图说明nutch已经安装成功
 
执行过程中需要一些注意的地方如果出现 “Permission denied”需要执行 chmod +x bin/nutch
如果没有设置JAVA_HOME 需要在系统中设置JAVA_HOME的环境变量

3、开始爬去你的第一个网站数据
   a、打开conf/nutch-site.xml 添加agent名称
    
     b、在nutch目录里创建urls目录(mkdir -p urls),进入urls目录里,创建seed.txt文件,该文件里面是nutch要爬取得url(注意:一行一个url)
   c、打开conf/regex-urlfilter.txt,里面是正则表达式用于匹配需要过滤掉那些网站,或者需要包含那些域名的网站
   d、执行命令
bin/nutch crawl urls -dir crawl -depth 3 -topN 5

命令crawl 的参数  
-dir 为需要读取的种子目录
-threads为启动多少个线程
-depth为从根网页开始那应该被抓取的链接深度。
-topN为 每一深度将会被取回的网页的最大数目
执行上面命令后就会发现下面的文件夹被创建
crawl/crawldb
crawl/linkdb
crawl/segments

如果你有一个设置好的solr并且想要建立索引到那里去,你必须添加 -solr <solrUrl>参数到你的crawl命令里去例如: bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 5
   
4、循序渐进之–概念Nutch数据是由这些组成的:

* 抓取数据库,或者说是crawldb。它包含了关于每一个Nutch已知的URL的信息,包括它是否已经被获取,甚至是何时被获取的。
* 链接数据库,或者说是linkdb。它包含了每一个已知URL的链接,包括源的URL以及链接的锚文本。
* 一系列的分段,或者说是segments。每一个segments都是一组被作为一个单元来获取的URL。segments是它本身这个目录以及它下面的子目录:
*
* 一个crawl_generate确定了将要被获取的一组URL;
* 一个crawl_fetch包含了获取的每个URL的状态;
* 一个content包含了从每个URL获取回来的原始的内容;
* 一个parse_text包含了每个URL解析以后的文本;
* 一个parse_data包含来自每个URL被解析后内容中的外链和元数据;
* 一个crawl_parse包含了外链的URL,用来更新crawldb。




5、循序渐进之–用一组URL列表确定crawldb选择
1:从DMOZ数据库自举。由injector添加URL到crawldb里。让我们从DMOZ开放式分类目录添加URL吧。首先我们必须下载并且解压缩这个DMOZ所有网页的列表(这是一个200多MB的文件,所以这会消耗几分钟)。
wget http://rdf.dmoz.org/rdf/content.rdf.u8.gz
gunzip content.rdf.u8.gz
接下来我们选择这些网页当中随机的一些子集(我们使用随机的子集所以所有在跟着这一个教程做的人就不会伤害到同样的网站)。DMOZ包含了大约三百万个URL。我们从每5000个URL中选择出一个,因此我们就有大约1000个URL:
mkdir dmoz
bin/nutch org.apache.nutch.tools.DmozParser content.rdf.u8 -subset 5000 > dmoz/urls
这一分析器也需要几分钟来完成,因为它必须要分析整个文件。最后,我们用这些选出的URL来初始化crawldb。
bin/nutch inject crawl/crawldb dmoz
现在我们有了一个大约有1000个未被获取的URL的网络数据库。
选择2:从初始列表里自举。这一选项不为人们所了解的地方在于创建初始列表并覆盖在urls/目录里。
bin/nutch inject crawl/crawldb urls



6、循序渐进之–获取要获取,我们首先要从数据库里产生一个获取的列表。
bin/nutch generate crawl/crawldb crawl/segments
这会为所有预定要被获取的网页产生一个获取列表。获取列表放在一个新创建的分段目录里。分段目录的名称取决于它被创建时的时间。
我们将这个分段的名字放在shell的变量s1里面:
s1=`ls -d crawl/segments/2* | tail -1`
echo $s1
现在我们能以下面的命令在这个分段里进行获取:
bin/nutch fetch $s1
然后我们就能解析条目:
bin/nutch parse $s1
当这一切完成以后,我们就以获取回来的结果更新数据库:
bin/nutch updatedb crawl/crawldb $s1
现在,数据库包含了刚刚更新的条目的所有初始页,除此之外,新的网页条目对于链接到初始的集合来进行新条目的发现是相符合的。
所以我们对包含得分最高的1000页提取出来产生一个新的分段:
bin/nutch generate crawl/crawldb crawl/segments -topN 1000
s2=`ls -d crawl/segments/2* | tail -1`
echo $s2
bin/nutch fetch $s2
bin/nutch parse $s2
bin/nutch updatedb crawl/crawldb $s2
让我们再来获取一次吧:
bin/nutch generate crawl/crawldb crawl/segments -topN 1000
s3=`ls -d crawl/segments/2* | tail -1`
echo $s3
bin/nutch fetch $s3
bin/nutch parse $s3
bin/nutch updatedb crawl/crawldb $s3
通过这一点我们已经获取了几千页的网页。让我们索引它们吧!



7、循序渐进之–反向链接在我们进行索引之前,我们首先要反转所有的链接,以便我们能够以这些网页来索引进入的锚文本。
bin/nutch invertlinks crawl/linkdb -dir crawl/segments
我们现在准备好要用Apache Solr进行搜索了。

8、solr和nutch的整合安装
    a、到http://www.apache.org/dyn/closer.cgi/lucene/solr/上下载solr并解压出来
    b、进入nutch的主目录里cd 到conf文件夹下,copy出schema-solr4.xml到solr主目录下的\example\solr\collection1\conf目录里,然后打开该文件,在该文件的
     第351行加入 <field name="_version_" type="long" indexed="true" stored="true"/> (如果不加入该行启动solr的时候会报错),然后修改该文件名称为schema.xml
     并将原来该目录的schema.xml备份下
    c、之后启动solr,并执行命令 bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 5 就可以将爬去的网站的数据索引到solr里
    d、命令执行完之后即可打开solr的web页面看看爬去的数据  http://localhost:8983/solr/#/collection1/query


ps:nutch使用的是1.7 solr版本4.6 ,部分内容摘自 http://www.oschina.net/translate/nutch-tutorial

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [nutch] 推荐:

JAVA爬虫Nutch、WebCollector的正则约束

- - CSDN博客互联网推荐文章
爬虫爬取时,需要约束爬取的范围. 基本所有的爬虫都是通过正则表达式来完成这个约束. 代表"http://www.xinhuanet.com/"后加任意个任意字符(可以是0个). 通过这个正则可以约束爬虫的爬取范围,但是这个正则并不是表示爬取新华网所有的网页. 新华网并不是只有www.xinhuanet.com这一个域名,还有很多子域名,类似:news.xinhuanet.com.

nutch入门之本地安装运行

- - 开源软件 - ITeye博客
最近hadoop着实很火,平时玩hadoop没有数据也很头疼,还好有nutch这个开源框架,可以从网上爬取数据. 本身nutch也依赖hadoop来抓取数据,正好一举两得,. 在学习nutch的过程中也提高对hadoop的认识,下面我会在业余时间整体对nutch的安装部署使用做一个比较全的描述,希望大家也一起共同进步吧~~.

Nutch相关框架安装使用最佳指南

- - ITeye博客
五、安装Hadoop Cluster(伪分布式运行模式)并运行Nutch. 六、安装Hadoop Cluster(分布式运行模式)并运行Nutch. 七、配置Ganglia监控Hadoop集群和HBase集群. 八、Hadoop配置Snappy压缩. 九、Hadoop配置Lzo压缩. 十、配置zookeeper集群以运行hbase.

Nutch Crawler抓取数据并存储到MySQL

- - 简单文本
Apache Nutch是在Java平台上开发的开源网络爬虫工具. 按照 Nutch官方网站给出的向导,通过使用Nutch命令,可以比较容易地抓取指定种子网站的数据. 不过,若是要通过它提供的Java API,以编程方式抓取数据,并存储到指定的数据存储,如MySQL,则有一些技巧或者说秘诀需要注意.

开源爬虫Labin,Nutch,Neritrix介绍和对比

- - 开源软件 - ITeye博客
larbin是个基于C++的web爬虫工具,拥有易于操作的界面,不过只能跑在LINUX下,在一台普通PC下larbin每天可以爬5百万个页面(当然啦,需要拥有良好的网络). Larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发. larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源.

基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

- - zzm
网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项. 由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎,用来对网络爬虫抓取到的网络资源进行实时的索引和搜索. 搜 索引擎架构在ElasticSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩、高可用.