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/
数据格式如下:
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)" 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)" 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)"