Nutch + Hbase

本文主要讲解内容包括:ant及ivy的搭建、Nutch + Hbase搭建

1、ant及ivy的搭建

1-1)ant下载地址http://ant.apache.org/bindownload.cgi

1-2)环境变量配置,修改linux /etc/profile文件内容,添加如下:

export ANT_HOME=/usr/ant
export PATH=$ANT_HOME/bin:$PATH

1-3)下载ivy build.xml http://ant.apache.org/ivy/history/latest-milestone/samples/build.xml

1-4)在下载的路径下执行 ant 命令,成功后在ant的安装路径下新增ivy文件夹,并将ivy下的ivy.jar拷贝到ANT_HOME/lib目录下

2、Nutch + Hbase搭建

2-1)Nutch下载路径http://nutch.apache.org/downloads.html,选择对应的版本,本文选用apache-nutch-2.3.1-src.tar.gz

2-2)修改conf/nutch-site.xml,内容如下:

<configuration>
    <property>
        <name>http.agent.name</name>
        <value>hbase_nutch</value>
    </property>
    <property>
        <name>storage.data.store.class</name>
        <value>org.apache.gora.hbase.store.HBaseStore</value>
        <description>Default class for storing data</description>
    </property>
    <property>
        <name>plugin.includes</name>
        <value>protocol-httpclient|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|indexer-solr|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
    </property>
</configuration>

2-3)conf/regex-urlfilter.txt,用来过滤抓取网站的URL规则,读者可以根据个人需求进行定制。

2-4)修改 ivy/ivy.xml,主要用来设置所依赖的版本,改动有如下:

添加Hbase支持,这里需要注意,由于版本兼容问题,这里使用0.98.13版本,笔者测试Hbase1.2版本,出现错误。

    <dependency org="org.apache.hbase" name="hbase-client" rev="0.98.13-hadoop2" conf="*->default"/>
    <dependency org="org.apache.hbase" name="hbase-common" rev="0.98.13-hadoop2" conf="*->default"/>
    <dependency org="org.apache.hbase" name="hbase-protocol" rev="0.98.13-hadoop2" conf="*->default"/>
    <dependency org="org.apache.gora" name="gora-hbase" rev="0.6.1" conf="*->default" />

其他的jar文件读者可以根据需要进行删除或者更改。

2-5)拷贝hbase集群配置文件,cp $HBASE_HOME/conf/hbase-site.xml $NUTCH_HOME/conf/

2-6)修改conf/gora.properties,添加如下配置

     gora.datastore.default=org.apache.gora.hbase.store.HBaseStore

2-7)配置抓取链接,在conf目录下创建urls目录,用来保存抓取链接,然后初始化种子文件seed.txt,内容添加如下:

     http://www.csdn.net/

2-8)进行编译,创建抓取程序 ,nutch根目录下执行ant runtime,结果如下:

第一次时间比较长,需要下载jar包等等。

2-9)抓取内容,在runtime/local/bin下执行如下命令:

    ./crawl /usr/apache-nutch-2.3.1/conf/urls/ numberOfRounds 10

crawl 命令的参数解释如下:

    Usage: crawl <seedDir> <crawlID> [<solrUrl>] <numberOfRounds>
    <seedDir>:放置种子文件的目录
    <crawlID> :抓取任务的ID
    <solrURL>:用于索引及搜索的solr地址
    <numberOfRounds>:迭代次数,即抓取深度

2-10)查看hbase监控页面网址为:http://lenovo1:16010/master-status,获取到 表名称为numberOfRounds_webpage,通过Spark代码读取如下:

    // please ensure HBASE_CONF_DIR is on classpath of spark driver
    // e.g: set it through spark.driver.extraClassPath property
    // in spark-defaults.conf or through --driver-class-path
    // command line option of spark-submit
    val conf = HBaseConfiguration.create()

    val args = Array[String]("numberOfRounds_webpage")
    // Other options for configuring scan behavior are available. More information available at
    // http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html
    conf.set(TableInputFormat.INPUT_TABLE, args(0))

    // Initialize hBase table if necessary
    val admin = new HBaseAdmin(conf)
    if (!admin.isTableAvailable(args(0))) {
      println("不存在该表")
      return
      //sc.stop()
    }
    val pool = new HTablePool(conf, 1000)
    val table = pool.getTable(args(0))

    try {
      val rs: ResultScanner = table.getScanner(new Scan())
      var r = rs.next()
      while (r != null) {
        System.out.println("获得到rowkey:" + new String(r.getRow))
        for (keyValue <- r.raw()) {
          System.out.println("(" + new String(keyValue.getFamily()) + "," + new String(keyValue.getQualifier()) + "):" + new String(keyValue.getValue()));
        }
        r = rs.next()
      }
    } catch {
      case e => e.printStackTrace()
    }
    //sc.stop()
    admin.close()

展示结果如下:

至此一个简单的示例完成了,读者可以在此基础上添加复杂业务逻辑。

时间: 2024-12-09 10:00:59

Nutch + Hbase的相关文章

集成Nutch/Hbase/Solr构建搜索引擎之二:内容分析

请先参见"集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行",搭建测试环境 http://blog.csdn.net/jediael_lu/article/details/37329731 一.被索引的域 Schema.xml 在使用solr对Nutch抓取到的网页进行索引时,schema.xml被改变成以下内容. 文件中指定了哪些域被索引.存储等内容. <?xml version="1.0" encoding="UTF-8"

集成Nutch/Hbase/Solr构建搜索引擎之三:内容修改

1.从content域中搜索 从solr的example中得到的solrConfig.xml中,qf的定义如下: [html] view plaincopy <str name="qf"> text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 </str>

集成Nutch/Hbase/Solr构建搜索引擎

1.下载相关软件,并解压 版本号如下: (1)apache-nutch-2.2.1 (2) hbase-0.90.4 (3)solr-4.9.0 并解压至/usr/search 2.Nutch的配置 (1)vi /usr/search/apache-nutch-2.2.1/conf/nutch-site.xml <property> <name>storage.data.store.class</name> <value>org.apache.gora.hb

nutch - hbase 的存储结构

webpage字段解释 webpage各阶段的字段值变化 ROW com.2345.www:http/ COL f : fi //fetchInterval COL f : ts //fetchTime id 主键,根据网页url生成(格式:reversed domain name:protocol:port and path),因此,Nutch2只能保存当前网页的状态,而不能保存历史信息(这里说的不对,会保留历史版本的,每个row都有时间戳,会保留一定量的历史版本,过低的可能会删除). row

搜索引擎系列 ---lucene简介 创建索引和搜索初步

一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎 :Lucene得名于Doug妻子的中名,同时这也她外祖母的姓;目前是Apache基金会的一个顶级项目,同时也是学习搜索引擎入门必知必会. Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作. 优点:成熟的解决方案,有很多的成功案例.apache 顶级项目,正在持续快速的进步.庞大而活跃的开

搜索引擎系列 -lucene简介 创建索引和搜索初步步骤

一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎 :Lucene得名于Doug妻子的中名,同时这也她外祖母的姓;目前是Apache基金会的一个顶级项目,同时也是学习搜索引擎入门必知必会. Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作. 优点:成熟的解决方案,有很多的成功案例.apache 顶级项目,正在持续快速的进步.庞大而活跃的开

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

网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎,用来对网络爬虫抓取到的网络资源进行实时的索引和搜索. 搜 索引擎架构在ElasticSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩.高可用.对大量信息的索引与搜索都可以在近 乎实时的情况下完成,能够快速实时搜索数十亿的文件以及PB级的数据,同时提供了全方面的选项,可以对

Nutch 2.x + Hadoop 2.5.2 + Hbase 0.94.26

一开始运行Nutch 2.x 总是报下面这个错误: java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.Counter, but class was expected 这个问题足足折腾了2天,查了无数资料,始终不能解决问题,虽然问题定位在Nutch 编译的时候使用了Hadoop 1.x,然后运行的时候是在Hadoop 2.x上,但是始终找不到到底什么时候依赖了hadoop-core

Ubuntu环境下nutch集成HBase

nutch集成HBase (详见:http://duguyiren3476.iteye.com/blog/2085973 ) 1. 修改nutch的hbase配置 //将自己的hbase配置copy到nutch配置中 cp /home/hbase/conf/hbase-site.xml /home/nutch/conf/ 2. 使用hbase0.92.2-jar代替原来的hbase文件(在/home/nutch/runtime/local/lib中) 原因:(我使用的hbase时0.94.25)