Nutch 2.0 之 Apache Gora 介绍

JerryDui 2012-07-21

1. 什么是Apache Gora

Apache Gora是一个开源的ORM框架,主要为大数据提供内存数据模型与数据的持久化。目前Gora支持对于列数据、key-value数据,文档数据与RDBMS数据的存储,还支持使用Apache Hadoop来对对大数据进行分析。

2. 为什么要使用Apache Gora

虽然目前市面上有很多不错的关系数据库的ORM框架,但是基于数据模型的框架如JDO还是有一些不足,如对于列数据模型的存储与持久化。Gora正好弥补了这个问题,它能使用户很容易对大数据时行 内存建模与持久化,而且支持Hadoop来对大数据进行分析。

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

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

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

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

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

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

3. Gora的一个源代码结构

Gora源代码以模块的形式来组织,其中gora-core是主要核心模块。所有其它模块都依赖这个核心模块,当然你可以扩展自己的模块,当前实现的模块如下

gora-core : 核心模块

gora-cassandra : apache cassandra模块

gora-hbase : apache hbase模块

gora-sql : sql数据库模块

4. 一个简单的例子

下面这个例子是基于Gora中源代码中的gora-tutorial来说明的,在gora的源代码包中有这个目录。

这个例子主要完成两上功能,一个是把目录中的测试数据放到HBase中,另一个是对HBase中的数据进行MR分析。

下面先来看第一个功能:

目前gora 0.2只支持hbase 0.90,hbase可以在hbase.apache.org上进行下载,下载先完成以后启动一个简单的服务,它把namenode+regionserver还有zookeeper都启动在一个jvm进程中,命令如下

$ bin/start-hbase.sh 

启动完成以后可以使用如下命令来测试

bin/hbase shell

下来源代码中的测试数据进行解析,命令如下

$ tar zxvf src/main/resources/access.log.tar.gz -C src/main/resources/

数据格式如下:

  1.   88.254.190.73 - - [10/Mar/2009:20:40:26 +0200] "GET / HTTP/1.1" 200 43 "http://www.buldinle.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; .NET CLR 2.0.50727; InfoPath.2)"   
  2. 78.179.56.27 - - [11/Mar/2009:00:07:40 +0200] "GET /index.php?i=3&a=1__6x39kovbji8&k=3750105 HTTP/1.1" 200 43 "http://www.buldinle.com/index.php?i=3&a=1__6X39Kovbji8&k=3750105" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)"   
  3. 78.163.99.14 - - [12/Mar/2009:18:18:25 +0200] "GET /index.php?a=3__x7l72c&k=4476881 HTTP/1.1" 200 43 "http://www.buldinle.com/index.php?a=3__x7l72c&k=4476881" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1)"   

相关推荐