`
chenk818
  • 浏览: 4854 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nutch1.2搭建分布式检索

 
阅读更多
    最近工作当中需要用到分布式检索的东西,一开始就想到了nutch,lucene和hadoop的口碑都挺不错,国内使用的也比较多,而Nutch就是基于二者的一个分布式搜索服务。原以为搭起来跑跑应该很快,没想到过程相当曲折。使用过程当中的一些笔记,由于工作性质的缘故无法拷出来,这里简单凭记忆记录一下。

    下载最新版的Nutch1.3,按照wiki上的说明在单机上跑了一下,这个过程很简单,接下来就是分布式的了,结果一看wiki,还是基于v1.1的,上面的目录结构跟1,3完全不一样,一下就蒙了,document跟release版本完全对不上,我不知道其它人是怎么解决这个问题,我是没招了,于是下了v1.2的,看了看目录结构,发现跟wiki还是能对上,于是就决定用v1.2的了。另外,在找资料和文档的过程中,给我的感觉是Nutch的应用很少,有的只是一些试验性的,感觉生产环境中应用的很少,不像lucene和hadoop,其实我这次最终应该也是不用nutch,而是基于lucene和hadoop搭建分布式检索。

    ok,进入正文。先说环境,master:kylin,slave1,slave2:centos,kylin大家可能不熟悉,由于后期的项目要在国产化的的平台上跑,所以一开始试验就弄了个国产的linux系统。先说网络配置:
1、/etc/hosts  这个文件很重要,相信使用过程中大家都会碰到一些主机名解析的问题,很多都是由这个文件引起。有些linux系统的hosts里面默认有  127.0.0.1   hostname  localhost
然后为了将当前hostname映射到当前ip,后续得加上  192.168.1.111  hostname,这个配置可能就有问题,需要把127映射的hostname给去掉。另外就是把集群中的所有节点的ip和主机名都加上
2、防火墙    这个问题很隐晦,环境配置完毕后,bin/start-all.sh没问题,整个节点都起来了,但在后续操作中可能会出现主节点卡死的现象,或是爬虫失败。由于hadoop在启动后会开启一些随机端口,所以使用过程中大家最好把防火墙关闭。先通过iptables -L查看有没有防火墙设置,如果有的话就消除。
3、Stopping at depth=0 - no more URLs to fetch
这个问题看版本,0.9确实有个bug,Generator在分布式环境下只检查了一个分块,当urllist里面只放了一个网址时很容易出现这个问题(引自网上查的资料)。但在1.2版本中,该处的代码已经修正,所以跟这就没关系了。后来查了日志,发现datanode中有类似这样的日志,fetchTime=11111111,curTime=1111101111。时间是乱写的,反正就是fetchTime>curTime,后来查看源码,发现在shouldFetch的逻辑是这么写的:
if(fecthTime-curTime)>1000*db.fetch.interval.max {
   fetchTime = curTime;
}
if(fetchTime>curTime) return false;
return true;
以上代码只是写了个意思,不是拷贝的源码。拿着我的fetTime和curTime试了一下,发现if判断不成立,先为了解决问题,在nutch-site配置文件中将db.fetch.interval.max改成了符合要求的时间,ok了。但我在网上查了多次,发现就一个人提出了这个问题,而且wiki中关于配置的没有任何地方与这个fetch相关联(我是说step-by-step中主动提到的),所以我觉得这个问题很诡异,按理说不应该出现。因为后期应该不会用Nutch,所以也没兴趣去探究,有兴趣的同学可以跟跟源码,看看这个fetchTime到底是怎么算出来的,这样才算真正地解决这个问题。
4、Input path doesnt exist ....../parse_data
类似这种错误,一般是之前的crawl过程在parse之前失败,所以没有产生parse_data目录,但在link阶段,会将hdfs上的crawl目录里的东西全部拿来,所以如果之前的crawl失败,最好是将hdfs上的crawl目录给清掉。另外,我搭建过程中,曾经修改过待爬的网站列表,将3个变成了1个,但爬的过程中发现还是抓了三个,很有可能也是因为这个crawl造成的,因为之前的url已经到db当中去了
5、最后一步,将索引拷到本地搜索不到东西
按照wiki上的说法,最终配置出来的东西是搜索不到的,但查看索引文件都没问题。实际上wiki上少提了一个配置,就是fs.default.name,这个配置是很重要的。wiki上说的是,将index从hdfs上拷到本地,然后只是修改了search.dir,但如果不修改conf/nutch-site.xml里面的fs.default.name的话,还是不行的。
6、关于日志   将conf/log4j.properties里面关注的类的日志级别设为debug,然后把每个节点的hadoop.log文件tail出来,跑的过程中就轮流盯着日志文件看,这个对发现问题很有帮助 ,否则你在主控制台上看到的错误不一定是真正的错误,上网查或提问的话,找的也不是真正的问题。
7、master和slave节点的conf/*保持一致,除了hadoop-env这个文件外,其它的应该都是一致的,这个也很容易忽略 而引起问题


    实际部署过程中碰到的问题太多了,整整折腾了我近一周才把所有问题搞定。但收获也不小,以前觉得linux难使,现在用的过程中感觉挺好的;了解了hadoop的强大,下一步工作就是深入去了解;lucene一直停留在简单使用上,后续对其性能调优也得有了解。

    碰到的问题比较多,但凭脑子记忆就想起这些了,如果有其它问题可以讨论交流

   
0
3
分享到:
评论

相关推荐

    nutch1.2 java的project

    1. **导入项目**:在Eclipse中选择“File” > “Import” > “Existing Projects into Workspace”,然后浏览到下载的`nutch1.2+Project`目录,导入项目。 2. **添加库**:确保你的Eclipse环境中已经安装了Apache ...

    nutch1.2 java project

    同时,你也需要配置 Hadoop 环境,因为 Nutch 可以与 Hadoop 集成,利用其分布式处理能力。 2. **项目结构**:Nutch 1.2 的项目结构包括源代码、配置文件、工作目录等。主要的代码集中在 `src` 目录下,包括 `java`...

    Nutch 1.2源码阅读

    ### Nutch 1.2 源码阅读深入解析 #### Crawl类核心作用与流程概览 在深入了解Nutch 1.2源码之前,我们先明确Nutch的架构和工作流程。Nutch作为一款开源搜索引擎框架,其功能涵盖网页抓取、索引构建以及查询处理。...

    nutch1.2源码

    Apache Nutch是开源的网络爬虫项目,专为大规模数据抓取设计,它与Hadoop分布式计算框架紧密集成,能够处理海量网页数据。Nutch 1.2是该项目的一个稳定版本,提供了许多改进和优化,使得它在搜索引擎构建、数据分析...

    myeclipse8.5导入nutch1.2源码

    - 在 Default output folder 设置中,将输出目录更改为 `nutch1.2/bin/tmp_nutch`。 - 转到 Libraries 标签页,点击 Add Class Folder,选择 `nutch1.2/conf` 目录。 3. **调整库顺序**: - 在 Order and Export...

    nutch1.2测试文档

    nutch1.2测试文档

    nutch-1.2.war

    nutch官方简单案例,请版本是nutch-1.2.war

    Windows下cygwin+MyEclipse 8.5+Nutch1.2+Tomcat 6.0

    ### Windows下cygwin+MyEclipse 8.5+Nutch1.2+Tomcat 6.0 本文旨在详细介绍如何在Windows环境下搭建基于cygwin、MyEclipse 8.5、Nutch 1.2及Tomcat 6.0的开发环境,并对每个步骤进行深入解析。 #### 一、Cygwin的...

    Nutch-1.0分布式安装手册.rar

    这份手册涵盖了从环境准备到系统配置的全过程,旨在帮助用户成功搭建一个分布式的Nutch系统。 首先,安装Nutch-1.0分布式版需要的基础环境包括Java开发套件(JDK)和Hadoop。JDK是运行Nutch所必需的,因为它是一个...

    nutch-1.2.part02

    nutch Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。 尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降。 并且这很有可能进一步演变成为一个公司垄断了几乎...

    linux下如何配置分布式检索

    - 实践是检验真理的唯一标准,尝试在自己的环境中搭建分布式检索系统,亲自动手解决问题,将有助于更好地掌握这项技能。 通过以上步骤,你可以成功地在Linux环境下配置出一个基本的分布式检索系统。这不仅对于个人...

    实验报告(利用Nutch和IKanalyzer构造中文分词搜索引擎)

    实验中,主要涉及的技术包括搜索引擎基础、Nutch的使用、Lucene的布尔检索以及IKAnalyzer的集成。 首先,实验环境的配置至关重要。这里选择了Ubuntu 11.10作为操作系统,搭配JDK 1.7.0_03。Nutch 0.9被用于网页抓取...

    Nutch搜索引擎培训讲义

    - 选择“Source”选项卡,将默认输出目录从`nutch1.2/bin`修改为`nutch1.2/_bin`。 - 对于bin文件夹,可以通过右键点击“Team” > “Restore”来恢复其内容。 3. **添加JAR包** - 通过“Add JARs”功能,将`...

    Nutch2.3.1 环境搭建

    在本文中,我们将深入探讨如何搭建Nutch2.3.1的运行环境,以便进行网页抓取和分析。 **一、系统需求** 首先,确保你的系统满足以下基本要求: 1. 操作系统:Nutch可以在Linux、Unix或Mac OS X等类Unix系统上运行,...

    Linux下Nutch分布式配置和使用

    Linux下Nutch分布式配置 使用:分布式爬虫、索引、Nutch搜索本地数据、Nutch搜索HDFS数据。

    nutch-1.2.part06

    nutch Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。 尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降。 并且这很有可能进一步演变成为一个公司垄断了几乎...

    搭建nutch web开发环境

    本教程将详细介绍如何搭建Nutch 1.2的Web开发环境,因为从Nutch 1.3版本开始,Web界面部分已被移除。 首先,我们需要理解Nutch的工作流程,它主要包括五个主要步骤:抓取、解析、索引、查询和排名。Nutch提供了强大...

    nutch分布式搜索索引热替换程序

    在大型系统中,为了处理海量数据,Nutch通常会与Hadoop等分布式计算框架结合,实现分布式搜索。在分布式环境中,索引热替换是一项重要的技术,它允许在不影响搜索服务的情况下更新索引。 分布式搜索索引热替换程序...

    nutch部分网页乱码BUG修正

    Nutch是Apache开发的一款开源网络爬虫项目,用于抓取互联网上的网页并建立索引,以便于搜索引擎进行数据处理。然而,在实际使用过程中,由于编码问题,Nutch可能会出现部分网页乱码的情况。本篇文章将深入探讨这个...

Global site tag (gtag.js) - Google Analytics