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

  • Apache Avro 1.8.2
  • Apache HBase 2.1.1
  • Apache Cassandra 3.11.0 (Datastax Java Driver 3.3.0)
  • Apache Solr 8.0.0
  • Apache Lucene 8.0.0
  • MongoDB (Mongo Java Driver) 3.5.0
  • Apache Accumlo 1.7.1
  • Apache CouchDB 1.4.2
  • Amazon DynamoDB (Amazon Java SDK) 1.10.55
  • Infinispan 7.2.5.Final
  • JCache 1.0.0 with JCache provider Hazelcast 3.6.4
  • OrientDB 2.2.22
  • Aerospike 4.2.2
  • Apache Ignite 2.6.0
  • Apache Pig 0.16.0
  • Apache Flink 1.6.2
  • Apache Hadoop 2.5.2
  • Apache Spark 2.2.1
  • Test containers 1.4.2

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.CassandraStoreGora class for storing data in Apache Cassandra.org.apache.gora.hbase.store.HBaseStoreGora class for storing data in Apache HBase.org.apache.gora.accumulo.store.AccumuloStoreGora class for storing data in Apache Accumulo.org.apache.gora.memory.store.MemStoreGora class for storing data in a Memory based implementation for tests.org.apache.gora.mongodb.store.MongoStoreGora class for storing data in MongoDB.org.apache.gora.solr.store.SolrStoreGora 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;

Nutch2.4 存储方式配置相关推荐

  1. session的存储方式和配置

    Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息.我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式.在w ...

  2. 存储方式与介质对性能的影响

    摘要 数据的存储方式对应用程序的整体性能有着极大的影响.对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们如何选择?本文给 ...

  3. Spring Cloud应用开发(七:使用Git存储方式实现分布式配置管理 )

    1.使用Git存储实现管理: 1.1.配置Git.在Git上创建microservice-study-config目录,并在目录中添加开发,预发布和测试的配置文件: 1.2.修改服务端配置文件.将mi ...

  4. Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)...

    1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...

  5. Session 存储方式

    简单来说,Session就是服务器给客户端的一个编号,当一台web服务器运行时,可能 是有多个用户都在浏览这台服务器上的网站,当每个用户首次与这台服务器建立连接时,它就与这个服务器建立了一个Sessi ...

  6. Android中的数据存储方式

    Android数据存储的5中方式总结: A:使用SharedPreferences存储方式 B:文件存储数据 C:SQLite数据库存储数据 D:使用ContentProvider存储数据 E:网络存 ...

  7. 单点登录cas常见问题(四) - ticket有哪些存储方式?

    配置文件ticketRegistry.xml负责配置ticket的存储方式,registry是注冊表,登记薄的意思 经常使用的存储方式包含 1.DefaultTicketRegistry:默认的.存储 ...

  8. 传统存储方式_分布式存储 vs 传统SAN、NAS 的优缺点分析

    传统存储架构的局限性和分布式存储的优点 传统SAN存储设备一般采用双控制器架构,两者互为备份,配置两台交换机与前端的服务器进行连接,这种双控制器架构方式会有以下两个方面的缺点: 1. 网络带宽容易变成 ...

  9. asp.net session 介绍一三种Session存储方式

    asp.net session 介绍一三种Session存储方式 www.firnow.com 时间:2009-03-04 作者:匿名 编辑:sky 点击: 1478 [评论] 对于asp.net的程 ...

最新文章

  1. mysql 学习笔记15 子查询
  2. freeCodeCamp认证
  3. freecodecamp_关于freeCodeCamp-常见问题
  4. 学web前端有什么计划?
  5. 从某软件引发的深思总结
  6. 餐巾(cogs 461)
  7. 《Java语言程序设计与数据结构》编程练习答案(第十章)
  8. IDEA格式化SQL代码
  9. C语言!鸡兔同笼的程序
  10. matplotlib:plot 3d ,plot_surface
  11. 介绍中国象棋对弈程序ElephantEye(象眼)
  12. 搞一下CP AUTOSAR 入门 | 08 CP AUTOSAR CAN 网络管理简介
  13. windows启动时自动运行程序四种方法(登录或不登录都可以的)
  14. [ 物联网篇 ] 27 -使用libcur API 实现本地时间同步的功能,类似NTP功能
  15. xiuno论坛开发模式怎么调整
  16. 论文翻译-Hamming OCR A Locality Sensitive Hashing Neural Network for Scene Text Recognition
  17. 华为Mate40系列国行参数价格曝光
  18. 数学建模 matlab 数据建模基础
  19. HTML5+CSS3小实例:自定义滤镜实现液体加载动画
  20. nginx 官方文档翻译

热门文章

  1. mysql 高可用方案漫谈(二)
  2. nGrinder性能测试平台搭建(LVS压力测试)
  3. Hadoop Install
  4. 网管的一天——按小时记录生活
  5. WebDriver(C#)之十点使用心得
  6. 微信公众号 JSSDK 提示:invalid signature
  7. centos 7 修复mysql,快速修复Centos7 系统时区!
  8. 通过管道传输快速将MySQL的数据导入Redis(自己做过测试)
  9. 好的MongoDB中文文档
  10. PHP生成日历(实例详解)