最近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
- 大小: 45.6 KB
- 大小: 2.7 KB
分享到:
相关推荐
“Nutch使用.pdf”和“Nutch入门教程.pdf”这两份文档将详细介绍如何从零开始使用Nutch,包括环境搭建、配置、启动爬虫、监控爬虫状态、查看抓取结果和索引数据等。通过这些教程,你可以快速掌握Nutch的基本操作,并...
### Nutch入门教程知识点解析 #### 1. Nutch简介 **1.1 什么是Nutch** Nutch是一个开源的搜索引擎框架,完全基于Java开发,旨在帮助用户构建和运行自己的搜索引擎。它提供了一系列的工具和服务,使用户能够从...
### Nutch 入门实例教程知识点总结 #### 1. Nutch 简介 - **定义**: Nutch 是一个开源的 Java 实现的搜索引擎框架,它提供了构建和运行自己搜索引擎所需的所有工具。 - **研究动机**: - **透明度**: 作为开源...
2. **《nutch入门学习.pdf》**:这可能是更深入的学习资料,可能包含实战案例和高级特性的讲解,帮助进阶者理解Nutch的内在工作机制。 **五、实践操作** 学习Nutch通常包括以下步骤: 1. **环境准备**:安装Java...
- **本地模式**:在单个节点上运行,主要用于测试和调试。 - **伪分布式模式**:在同一台机器上模拟分布式环境,用于小型集群测试。 - **完全分布式模式**:在多台机器组成的集群上运行,用于实际生产环境。 ##### ...
- **入门**:从零开始配置和使用 Nutch 的指南。 - **自定义搜索**:指导用户如何根据自己的需求定制搜索功能。 - **附录 A**:由 DCAngel 收集的度量指标列表。 - **附录 B**:DCAngel 数据库的表结构说明。 - **...
然后,可以在本地模式下运行MapReduce示例,检查HDFS(Hadoop分布式文件系统)中的生成数据。如果需要扩展到更大规模,可以选择Amazon Elastic Map Reduce服务或者在自己的集群上设置DataNodes和Task/JobTracker。 ...
- **先决条件**:需要安装Java运行环境,并确保系统满足Hadoop的硬件和软件需求。 - **步骤**:包括下载Hadoop源码或二进制包,配置环境变量,修改Hadoop配置文件(如hdfs-site.xml和mapred-site.xml),最后启动...
3. **发布运行**:将搜索引擎部署到服务器上,使之能够被外部访问。 ##### 2.2 搜索引擎基本技术 - **网络蜘蛛**:网络蜘蛛是一种自动化的程序,负责在网络上爬取网页并将其存储下来。 - **全文索引结构**:为了...
6. **快速实现搜索引擎**:30分钟实现的简单搜索引擎教程,主要涉及准备环境、编写代码、发布运行的步骤,这是理解搜索引擎工作流程的入门实践。 7. **网络爬虫**:网络蜘蛛用于抓取互联网上的数据,如Nutch是一个...