一、nutch简介

nutch是大名鼎鼎的Doug Cutting发起的爬虫项目,nutch孵化了现在大数据处理框架Hadoop。在nutch V 0.8.0 版本之前,Hadoop是nutch的一部分,从nutch V0.8.0开始,HDFS和MapReduce从nutch中剥离出成为Hadoop。v0.8.0之后,nutch就完全构建在Hadoop的基础之上了。

Nutch是一个开源的网络爬虫,在搜索引擎中负责爬取网页,同时自动维护网页的URL信息,例如相同网页去重、网页定时更新、网页重定向。nutch采用了MapReduce分布式爬取和解析,具有良好的水平扩展性。
现在版本的Nutch本身并不具有搜索功能(V1.2之后,nutch专注于爬取数据),但是可以自动向搜索服务器提交爬取的网页。例如,solr,可以通过Nutch自带的命令,来控制Nutch是否将网页提交给索引服务器。
Nutch虽然是优秀的分布式爬虫框架,但是它的所有设计,都是为了搜索引擎服务的。在hadoop上用map-reduce框架开发,并不是很适合做数据抽取的业务。如果你的业务是做数据抽取(精抽取),而不是搜索引擎。不一定要选用Nutch。
nutch现在分为两个分支。一个是1.x系列,一个是2.x系列。它们的主要区别是2.x引入了Gora作为存储抽象层,从而支持各种NoSQL数据库,如HBase,Cassandra等

二、nutch安装

1.nutch的运行环境
    JDK1.7及以上
    需要使用linux操作系统

2.解压:

设置环境变量

验证: nutch

3.目录结构

bin:两个文件,一个是nutch,一个是crawl,
        crawl是对nutch中的命令进行了封装,实现了一站式调用。
       
conf:里面保存了nutch的基本配置信息,nutch-default.xml nutch-site.xml parse-plugins.xml regex-urlfilter.txt
   
  docs:api文档
  lib:存储了nutch的依赖jar包
  plugins:存储了nutch使用的插件jar包

三、nutch 爬虫

nutch 爬取准备工作

1:在nutch-site.xml中添加http.agent.name的配置。如果不配置,启动会报错。

2:创建一个种子地址目录,urls(在nutch 目录中就可以),在目录下面创建一些种子文件,种子文件中保存种子地址。每一个种子地址占一行。http:www.zhaozhiyong.cn

注意:种子地址必须以类似于http的字符开头

3:(可选):控制爬取的url范围,只爬取站内,在regex-urlfilter.txt 最后添加 :+^http://([a-z0-9]*\.)*bbs.superwu.cn/[\s\S]*

4:nutch爬取数据   bin/crwal urls crawl 1
    crawl urls crawl 1
    urls:表示是种子目录
    crawl:表示是爬取文件的存储位置
    1:表示是爬取的层次

5.nucth爬取生成的目录
    在爬取的时候指定的crawl中会有下面几个目录
    crawldb:存储的是待爬取的url
        查看目录数据:nutch readdb crawl/crawldb -stats -sort
    linkdb:存储的是反链信息
        查看目录数据:nutch readlinkdb crawl/linkdb -dump links
    segments:存储的是网站所有数据信息
        查看目录数据:nutch readseg -dump crawl/segments/20150906090648 sgedb
       
    一个segment包括以下子目录:
        crawl_generate:包含需要抓取的网址列表
        crawl_fetch:包含每个抓取页面的状态
        content:包含每个抓取页面的原始内容
        parse_text:包含每个抓取页面的解析文本
        parse_data:包含每个页面的外部链接(外链)和元数据
        crawl_parse:包含网址的外部链接地址,用于更新crawldb数据库

6.查看nutch生成的数据
    nutch中的数据都是sequencefile格式的,除了使用上面的nutch命令查看之外
        还可以使用java代码读取这些文件
        参考资料<查看nutch生成的中间文件>
        注意:在使用提供的代码读取文件时,需要先使用more命令查看对应文件中存储的数据类型
            对应需要修改代码中27行中的value的类型。

四、在solr中对爬取的数据建立索引

在使用solr的之前做以下步骤:

1):需要把nutch下的schema-solr4.xml拷贝到solr中

命令:cp /usr/local/nutch/conf/schema-solr4.xml /usr/local/solr-4.10.4/example/solr/collection1/conf

2):删除solr中的默认配置文件schema.xml,在把刚才拷贝过去的文件该名称
        cd /usr/local/solr-4.10.4/example/solr/collection1/conf
        rm schema.xml
        mv schema-solr4.xml schema.xml

3):在schema.xml中添加一个字段配置
        <field name="location" type="string" stored="true" indexed="true"/>

或者也可以动态指定,
        例子:crawl -i -D "solr.server.url=http://192.168.1.170:8983/solr" urls crawl 1

1.启动solr

cd /usr/local/solr-4.10.4/example
    java -jar start.jar

2.

命令:crawl -i urls crawl 1

-i:表示会对爬取的数据建立索引,默认会在本机solr中建立索引,
        如果使用其他服务器上的solr,需要修改nutch-default中solr.server.url的值,
        建议在nutch-site.xml中进行覆盖。

3.检验

http://127.0.0.1:8983/solr/  可以通过query 查看到content的内容

注意:如果把爬取层次改为2层,发先抓取的数据还是很少,那是因为在regex-urlfilter.txt中对url进行了过滤
        把url中包含?=之类的都忽略掉了。
        所以可以把这个配置直接注释掉,或者修改为其他规则。
        详细修改,参考:<regex-urlfilter解释.txt>

五、nutch源码导入到eclipse

先安装ant
    cd /usr/local
    tar -zxvf apache-ant-1.9.6-bin.tar.gz
    mv apache-ant-1.9.6 ant
    export ANT_HOME=/usr/local/nutch
    export PATH=$ANT_HOME/bin:$PATH

nutch的源码是ant管理的,所以不能直接导入到eclipse,需要转换可以使用ant eclipse -verbose但是,nutch的依赖是使用ivy管理的,
在执行转换的过程中会下载依赖的jar包,jar包很多,所以建议使用提供的.ivy.zip文件。
这样在转换的时候就需要指定一下ivy jar包的存放位置,使用下面命令
ant eclipse -Divy.default.ivy.user.dir=/usr/local/.ivy -verbose
       
转换完成之后就可以导入到eclipse中了,但是导入之后发现源码报错,

需要修改java buildpath->order and export ->把apache-nutch-1.10/src/bin 移动到最上面,   使用top按钮。

六、nutch源码编译

需要先把.ivy.zip包解压到/usr/local目录下面

解压unzip .ivy.zip(在Linux 下)
    如果提示没有unzip命令,则使用yum install -y unzip

下载nutch源码,解压,重命名

cd /usr/local
    tar -zxvf apache-nutch-1.10-src.tar.gz
    mv apache-nutch-1.10 nutch_src
    cd nutch_src
    ant -Divy.default.ivy.user.dir=/usr/local/.ivy –verbose

注意:在编译源码之前,需要修改nutch_src/conf/nutch-site.xml,
        在里面添加http.agent.name属性
        <property>
          <name>http.agent.name</name>
          <value>my nutch spider</value>
        </property>

七:nutch运行的两种方式

在nutch官网下载的nutch的bin压缩包,只支持在使用本地模式运行nutch
    想要使用集群模式的话需要使用编译后的源码中的脚本

cd /usr/local/nutch_src/runtime/deploy
    bin/crawl /urls /crawl 1

注意:在使用这种方式的时候要保证nutch所在的节点上面配置的有HADOOP_HOME
        环境变量,因为nutch在向集群中提交任务的时候会根据这个环境变量对应
        的目录下面的配置文件找集群的地址。
        /urls 表示是hdfs上面的文件,里面必须要有一个种子文件

1:nutch的采集流程
    inject:表示注入url
    generagete:生成爬取列表
    fetch:爬取url
    parse:解析url
    updatedb:更新crawldb数据库
   
    一般情况下,inject只会执行一次,generate、fetch、parse、updatedb这四步是一个循环。
   
    详细的过程参考:<nutch Crawler流程.txt>

大数据之nutch的更多相关文章

  1. Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户

        你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...

  2. 大数据技术hadoop入门理论系列之二—HDFS架构简介

    HDFS简单介绍 HDFS全称是Hadoop Distribute File System,是一个能运行在普通商用硬件上的分布式文件系统. 与其他分布式文件系统显著不同的特点是: HDFS是一个高容错 ...

  3. 大数据和Hadoop生态圈

    大数据和Hadoop生态圈 一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第1章 大数据和Hadoop ...

  4. 大数据测试之初识Hadoop

    大数据测试之初识Hadoop POPTEST老李认为测试开发工程师是面向测试的开发,也就是说,写代码就是为完成测试任务服务的,写自动化测试(性能自动化,功能自动化,安全自动化,接口自动化等等)的cas ...

  5. 谦先生的程序员日志之我的hadoop大数据生涯一

    从一个初级程序员到高级程序员的经历 你好!我是谦先生,我是茫茫程序猿中的一猿,平凡又执着. 刚入行的时候说实话,啥都不懂,就懂点皮毛的java,各种被虐狗的感觉.又写js又写css又写后台...慢慢被 ...

  6. Hadoop系列002-从Hadoop框架讨论大数据生态

    本人微信公众号,欢迎扫码关注! 从Hadoop框架讨论大数据生态 1.Hadoop是什么 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构 2)主要解决,海量数据的存储和海量数据的 ...

  7. Hadoop生态圈-大数据生态体系快速入门篇

    Hadoop生态圈-大数据生态体系快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.大数据概念 1>.什么是大数据 大数据(big data):是指无法在一定时间 ...

  8. 学习大数据基础框架hadoop需要什么基础

    什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB(1 ...

  9. Hadoop专业解决方案-第1章 大数据和Hadoop生态圈

    一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第1章 大数据和Hadoop生态圈小组已经翻译完成,在此 ...

随机推荐

  1. C# List根据某一字段排序 将字段相同的排序到一起

    List<JZJLXQ_Prescription_Item> ciList = new List<JZJLXQ_Prescription_Item>(); List<JZ ...

  2. jqGrid使用方法

    1.下载文件 下载jqGrid的软件包,下载地址为:http://www.trirand.com/blog/?page_id=6 下载jQuery文件,下载地址为:http://code.jquery ...

  3. phpstorm取消自动保存,修改快捷键并标识修改的文件为星星标记

    编辑时间: 2016-8-3 15:15:37 个人通过使用,发现PhpStorm的确是 编辑PHP 的神器,提供用户效率,提供智能代码补全,快速导航以及即时错误检查. 不过,让我用起来不爽的是,它会 ...

  4. Android 使用 DownloadManager 管理系统下载任务的方法,android管理系统

    从Android 2.3(API level 9)开始Android用系统服务(Service)的方式提供了Download Manager来优化处理长时间的下载操作.Download Manager ...

  5. BZOJ1202 [HNOI2005]狡猾的商人&&BZOJ3436小K的农场

    差分约束第三题 传送门: 很明显的差分约束,d[y]-d[x-1]>=v d[y]-d[x-1]<=v 根据这个建图然后跑bellman-ford就可以了. //BZOJ 1202 //b ...

  6. 【原】gulp快速入门

    今天刚入职了一家新公司,结果明天就要开始项目了.上级说要用gulp来打包代码,所以今晚花了一晚来看这个gulp, 可以说已经入门了.所以做一个小小的总结 : 首先全局安装gulp npm instal ...

  7. web前端工程师校园招聘要求

    小燕子对紫薇说:“这辈子也别想着进皇宫了”.可后来她们不但进了宫,还都当上了格格.你在想什么?走呗! 1.去哪了网 前端开发工程师 工作地点:北京 工作职责: 负责去哪儿网各产品线Web前端研发: 负 ...

  8. Django笔记-字符编码相关问题整理

    1.添加中文注释后编译出错,提示:Non-ASCII   解决方法: 在Python脚本文件的第一行或第二行添加一句:      #coding:gbk或#coding:utf-8或##-*- cod ...

  9. shutdown命令用法

    首先我们先创建一个txt文件,添加shutdown -r -f -t 0 ,文件点击另存为,选择所有类型,保存格式为“重启.bat”文件. 说明:shutdown命令用法: /r         关闭 ...

  10. Sql2008R2设置远程链接

    下边的文章是从百度经验里粘过来的.. 经过测试确实有效..留个备份.. 有个小情况在前边说一下.. 在操作前一定要确定自己的sa用户密码是不是一样..不要以为自己知道的是对的就直接略过某些步骤.. 俗 ...