当前位置: 首页 > 工具软件 > Nutch > 使用案例 >

Nutch2.4 存储方式配置

屈宏爽
2023-12-01

Nutch2.x 存储方式配置

Nutch2.x存储映射技术Gora

在Nutch2.x只后,Nutch存储映射使用apache的Gora(Gora是一个开源的ORM框架),为了了解Gora是个什么东西,我就从网上随便搜了一些Gora框架的介绍。

Gora就是一个大数据的表示与持久化框架,它有如下特点

  1. 数据持久化:它可以对列数据进行持久化,如HBase,Cassandra,Hypertable; key-value数据进行持久化,如Voldermort,Redis等,SQL数据库进行持久化,如MySQL,HSQLDB,也可以对文件进行HDFS存储 。

  2. 数据访问:可以使用Java API对数据进行轻松的访问

  3. 索引:可以持久化对象到Lucene或者Solr中去,可以使用Gora API来进行查询

  4. 分析:可以使用Apache Pig,Hive,cascading来对数据进行分析

  5. MR的支持:原生支持Hadoop的MR框架,这个已经被用在Nutch 2.0上了

  6. 支持使用Pig,lucene,hive等针对数据进行持久化,索引和分析工作

    目前除Nutch2外,在其他开源产品中使用Gora的好像没有看到

    ​ Nutch2系列通过gora对存储层进行了扩展,可以选择使用HBase、Accumulo、Cassandra 、MySQL 、DataFileAvroStore、AvroStore中任何一种来存储数据,但其中一些并不成熟。

    ​ 目前gora还亟待改进。对于追求性能极致的朋友来说,nutch2.x还不稳定,建议使用nutch1.x,利用HDFS和MapReduce的数据本地化及天然的并行性,可以优化到非常快的速度。

Apache Gora介绍-阿里云开发者社区 (aliyun.com)

引用原文发布时间:2016-05-13

现在:2021-12-03(相隔了5年了,到现在了Gora还在跟新,看来Apache想对NoSQL数据库们提供一套通用的框架)

到Gora的0.9版本已经可以适配一下大数据框架了,我们这里可以看到Solr这些搜索引擎的适配

Gora 0.9 provides support for the following projects

Nutch2.x默认的存储方式

  • 打开apache-nutch-2.4\conf文件夹下面的nutch-default.xml文件
  • 或者在apache-nutch-2.4\runtime\local\conf文件夹下面的nutch-default.xml文件(源码经过ant编译后才有)

找到storage properties,可以看到如果我们不在nutch-site.xml中不配置storage.data.store.class这个property时,默认是会使用org.apache.gora.memory.store.MemStore作为存储方式

org.apache.gora.memory.store.MemStore
Gora class for storing data in a Memory based implementation for tests.

从这个可以知道这个默认存储方式的内存的,用于测试使用

<!-- storage properties -->

<property>
  <name>storage.data.store.class</name>
  <value>org.apache.gora.memory.store.MemStore</value>
  <description>The Gora DataStore class for storing and retrieving data.
   Currently the following stores are available:
  
  org.apache.gora.sql.store.SqlStore 
    Default store. A DataStore implementation for RDBMS with a SQL interface.
    SqlStore uses JDBC drivers to communicate with the DB. As explained in 
    ivy.xml, currently >= gora-core 0.3 is not backwards compatable with 
    SqlStore.
  
  org.apache.gora.cassandra.store.CassandraStore
    Gora class for storing data in Apache Cassandra.
  
  org.apache.gora.hbase.store.HBaseStore
    Gora class for storing data in Apache HBase.
  
  org.apache.gora.accumulo.store.AccumuloStore
    Gora class for storing data in Apache Accumulo.
  
  org.apache.gora.memory.store.MemStore
    Gora class for storing data in a Memory based implementation for tests.

  org.apache.gora.mongodb.store.MongoStore
    Gora class for storing data in MongoDB.

  org.apache.gora.solr.store.SolrStore
    Gora class for storing data in Apache Solr.
  </description>
</property>

更改Nutch2.x的存储方式

更改为HBaseStore
  • apache-nutch-2.4\runtime\local\conf文件夹下面的nutch-site.xml文件(源码经过ant编译后才有runtime目录)中添加以下配置
<property>
     <name>storage.data.store.class</name>
     <value>org.apache.gora.hbase.store.HBaseStore</value>
</property>
  • 查看apache-nutch-2.4\runtime\local\conf文件夹下面的gora.properties文件(源码经过ant编译后才有runtime目录),根据HBaseStore properties注释,对hbase.site.xml配置有效的hbase.zookeeper.quorum属性,如果没配置就默认zookeeper的地址是localhost:2181。
#########################
# HBaseStore properties #
#########################
# HBase requires that the Configuration has a valid "hbase.zookeeper.quorum"
# property. It should be included within hbase-site.xml on the classpath. When
# this property is omitted, it expects Zookeeper to run on localhost:2181.

# To greatly improve scan performance, increase the hbase-site Configuration
# property "hbase.

apache-nutch-2.4\runtime\local\conf中的hbase.site.xml添加属性hbase.zookeeper.quorum

<property>  
    <name>hbase.zookeeper.quorum</name>
    <!--更改为自己zookeeper的地址-->
    <value>localhost</value>  
</property>  
更改为MySQL

apache-nutch-2.4\runtime\local\conf文件夹下面的nutch-site.xml文件(源码经过ant编译后才有runtime目录)中添加以下配置

<property>
     <name>storage.data.store.class</name>
     <value>org.apache.gora.sql.store.SqlStore</value>
</property>
  • apache-nutch-2.4\runtime\local\conf文件夹下面的gora.properties文件(源码经过ant编译后才有runtime目录),添加以下配置。
###############################  
# MySQL properties #  
###############################  
gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver  
gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?useUnicode=true&character=utf8&useSSL=false&serverTimezone=UTC  
gora.sqlstore.jdbc.user=xxxxx  
gora.sqlstore.jdbc.password=xxxxx  

添加对应的jar包

Nutch是使用ivy实现jar包管理的,ivy是类似于maven的jar包管理工具,在使用ant编译源码前,对ivy的依赖配置进行修改。

打开apache-nutch-2.4\ivy文件夹,找到ivy.xml文件。

找到Hadoop Dependencies的依赖配置,可以根据自己的需要修改成自己hadoop版本的jar包。

    <!-- Hadoop Dependencies -->
    <dependency org="org.apache.hadoop" name="hadoop-common" rev="2.5.2" conf="*->default">
      <exclude org="hsqldb" name="hsqldb" />
      <exclude org="net.sf.kosmosfs" name="kfs" />
      <exclude org="net.java.dev.jets3t" name="jets3t" />
      <exclude org="org.eclipse.jdt" name="core" />
      <exclude org="org.mortbay.jetty" name="jsp-*" />
      <exclude org="ant" name="ant" />
    </dependency>
    <dependency org="org.apache.hadoop" name="hadoop-hdfs" rev="2.5.2" conf="*->default"/>
    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-core" rev="2.5.2" conf="*->default"/>
    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-jobclient" rev="2.5.2" conf="*->default"/>
    <!-- End of Hadoop Dependencies -->

找到Gora的依赖配置

<!--================-->
<!-- Gora artifacts -->
<!--================-->
<!-- N.B. To use Gora SNAPSHOT's, replace the 'ref' value with the SNAPSHOT version 
and add changing="true" alongside the dependency declaration.-->
<dependency org="org.apache.gora" name="gora-core" rev="0.8" conf="*->default"/>
使用Hbase的时候

把hbase的依赖的注释去掉

<dependency org="org.apache.gora" name="gora-hbase" rev="0.8" conf="*->default" />
<dependency org="org.apache.hbase" name="hbase-common" rev="1.4.8" conf="*->default" />
使用mysql的时候

org.apache.gora.sql.store.SqlStore
Default store. A DataStore implementation for RDBMS with a SQL interface.
SqlStore uses JDBC drivers to communicate with the DB. As explained in
ivy.xml, currently >= gora-core 0.3 is not backwards compatable with
SqlStore.

根据nutch-site.xml中关于SqlStore 的解析,需要gora-core的版本要在0.3以下。

<dependency org="org.apache.gora" name="gora-core" rev="0.2.1" conf="*->default"/>

并添加gora-sql的依赖和MySQL的驱动

<!--gora-sql依赖-->
<dependency org="org.apache.gora" name="gora-sql" rev="0.1.1-incubating" conf="*->default" /> 

<!--添加mysql驱动-->
<dependency org="mysql" name="mysql-connector-java" rev="5.1.18" conf="*->default"/> 

库表的创建

Hbase的列名映射

使用Hbase时需要对数据列进行映射,

MySQL库表 的创建

使用MySQL整合nutch2.4要给MySQL创建一个表,以存储爬取的数据。

CREATE DATABASE nutch DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 
 
CREATE TABLE `webpage` (`id` varchar(767) CHARACTER SET latin1 NOT NULL,
`headers` blob,
`text` mediumtext DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`markers` blob,
`parseStatus` blob,
`modifiedTime` bigint(20) DEFAULT NULL,
`score` float DEFAULT NULL,
`typ` varchar(32) CHARACTER SET latin1 DEFAULT NULL,
`baseUrl` varchar(512) CHARACTER SET latin1 DEFAULT NULL,
`content` mediumblob,
`title` varchar(2048) DEFAULT NULL,
`reprUrl` varchar(512) CHARACTER SET latin1 DEFAULT NULL,
`fetchInterval` int(11) DEFAULT NULL,
`prevFetchTime` bigint(20) DEFAULT NULL,
`inlinks` mediumblob,
`prevSignature` blob,
`outlinks` mediumblob,
`fetchTime` bigint(20) DEFAULT NULL,
`retriesSinceFetch` int(11) DEFAULT NULL,
`protocolStatus` blob,
`signature` blob,
`metadata` blob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 类似资料: