基于Hbase的地震大数据存储研究

2015-02-15 01:06李盛乐陈晓琳刘珠妹郭啟倩
大地测量与地球动力学 2015年5期
关键词:关系数据库结构化观测

刘 坚 李盛乐 戴 苗 陈晓琳 康 凯 刘珠妹 郭啟倩

1 中国地震局地震研究所(地震大地测量重点实验室),武汉市洪山侧路40号,430071

2 湖北省地震局地震监测预报中心,武汉市洪山侧路40号,430071

地震数据存放于关系数据库,而传统关系二维表存储数据无法应对大数据带来的挑战,比如表链接运算的性能瓶颈、表数据底层存储导致的读写瓶颈。另外,大数据的存储是开展机器学习、挖掘、分析预测等应用的前提和基础[1],因此,为使用户能高效地进行大数据处理,提出一种基于Hbase(hadoop database)的地震大数据存储方法[2]。

1 NoSQL数据库简介

NoSQL与RDBMS完全不同,它是非关系数据库,是一种基于键值对的高并发、高性能、高可用性数据库系统。从数据模型角度,它主要可分为键值、列式、文档和图形等4 种基本数据模型[3]。如今,NoSQL数据库主要用于解决高并发数据库读写、海量大数据的存储等问题。相比于关系数据库,NoSQL 水平方向可扩展性强,更适合存储非结构化数据。NoSQL 数据库的典型产品有Hbase、Dynamo、Redis、Bigtable、CouchDB、MongoDB和Neo4J等[4]。其中,Hbase是基于Hadoop架构的一款查找迅速、可扩展性强、支持大数据存储的数据库管理工具。

Hbase为列式数据模型,有两个重要专有名词——Column Family和Row Key。Column Family中文名为“列族”,它是由列关键字组成的集合;Row Key 可以看作是RDBMS 中表的主键[5]。Hbase有以下特征与优势:1)高可扩展性,真正意义上的线性水平扩展;2)高性能,支持并提供高并发读写访问;3)高可用性,提供容错等功能;4)模式自由;5)能简易备份;6)具有简单应用程序接口;7)最终一致性;8)支持海量数据;9)可通过网络访问;10)兼具SQL 与NoSQL数据库的优势。

2 基于Hbase的存储原理和实现

2.1 存储原理

Hbase表是一个分布式多维表,表中的数据通过一个行关键字(Row Key)、一个列族和一个列名(Columnfamily:column name)以及一个时间戳进行索引和查询定位[6-7]。其关键在于设计好Row Key,以方便数据查询和数据分析。下面以地震观测数据为例,讲述基于Hbase的存储原理和方法。

地震信息的业务逻辑是通过台网(Netid)、台站(Stationid)、测点(Pointid)、仪器(Intrid)、测项(Itemid)、采样率(Samplerate)、产品类别(Protype)和时间戳(Timestamp)进行查询的。假设地震业务数据库中有一Obs观测数据表,按照传统的RDBMS,Obs表中的列是不能随意改变的,比如Schema定义了Netid、Stationid、Pointid、Intrid、Itemid、Value等属性,Obs表的属性是不能动态增加的。对于Hbase列式存储数据库,在创建Obs表时,再为它定义一个info列族,Obs的数据便可以表示为info:value=23.4。如果要增加新的字段属性,只需要通过添加一个info:new-Property就可以了。因此,如果采用传统关系数据库存储将非常复杂,且会造成一些为空值(null)的存储浪费。而Hbase就不会出现该问题,列存储的每一个列单元如果是空值,则不占用存储空间。下面通过一张关系库表和一张非关系库表结构来介绍二者的联系与区别(表1、表2)。

表1是关系数据库定义的表Obs,一旦设计完投入运行,表的列是固定的,不能动态改变,并且列值为null时,会占存储空间。表2为Hbase的NoSQL数据库,Obs表的列可通过列族动态增加,并且空值列是不存储的,这样就节约了存储空间,因此Hbase的基于列存储数据模型非常适合地震数据频繁扩展的场景。另外,选用Hbase数据库存储管理数据,还能自动切分数据,当Obs表中的数据超过某一个阀值时,Hbase就会自动切分数据,使查询具有伸缩性。再加上Hbase的弱事务性,使得Hbase的数据写入效率非常高。

表1 关系数据库表结构Tab.1 Table structure of relational database

表2 Nosql数据库表结构Tab.2 Table structure of not only sql database

Row Key 是类似关系数据库中的主键,在Hbase中的存储也是根据Row Key 来排序的。另外,Hbase不支持条件查询和Order by等查询方式,故Row Key的设计要根据应用系统的查询需求而定。

根据上述地震业务需求,观测数据表Obs的Row Key可以由以下几个部分构成:<Netid><Stationid><Pointid><Intrid><Itemid><Samplerate><Timestamp><Protype>,当要查询某个台网某个时间段数据时,就可以指定起始Row Key为<Netid><Timestamp.MIN_VALUE>,终止Row Key为<Netid><Timestamp.MAX_VALUE>。其他各种组合需求,比如要查询某个自然测点数据、某台仪器的数据、某个学科数据、某个测项分量数据等,都可以非常高效地检索出来。

2.2 存储方法实现

从数据结构角度,地震数据可划分为两类:观测产生的结构化数据和文件、图像等非结构化数据。

2.2.1 结构化数据存储

地震典型的普通结构化数据就是前兆存放在Oracle数据库和测震存放在MySQL 数据库的关系型观测数据,主要包括前兆各学科(形变、重力、GNSS、地下流体、地电、地磁等)和测震学(地震目录、观测报告、事件波形、连续波形等)数据。这些观测数据,分别从前兆Oracle库、测震MySQL库读取出来,通过上述存储方法存储至Hbase设计的Obs表中进行统一存储管理。

Hbase表数据插入或更新通过Put方法实现,单条Put调用HTable.put(Put)方法。如要批量Put,可将一组Put操作放入一个List中,然后调用HTable.put(List<Put>)。下面是将观测数据写入Hbase表的Java语言代码:

2.2.2 非结构化数据存储

地震非结构化数据存储时,Hbase有着不可取代的优势:1)更有效地存储小文件(小于16 MB);2)提供更高层和更可靠的接口,可以方便实现数据的增、删、读、改功能;3)提供失败自动重试机制,有效地保证数据的一致性。因此,Hadoop 开 发 了HBase 大 对 象LOB(large object storage)存储功能,方便用户在HBase中存储各种类型的大对象。存储时,LOB Store是列族级别的存储单元,每个LOB Store可以存储几百万个文件,而LOB Store的底层存储在LOB File中。读写方面,其插入性能提高到200%,插入延时减少90%,读取的随机性能可达到200%。

3 对比测试

3.1 测试平台环境

为对比Hbase-0.94.6和MySQL-5.1.48的存储、查询等性能指标,由3台配置相同服务器的Hadoop集群组成分布式文件系统,构成一个逻辑Hbase集群,同时由其中一台机器单机测试MySQL,测试平台软硬件环境如表3所示。

表3 测试环境Tab.3 Testing environment

该测试平台实现了插入、查询和显示等常用功能,并记录了测试数据和测试日志,为以后进一步的比对测试提供了依据。

3.2 结构化数据存储性能对比

将两者针对结构化观测数据的存储进行效能测试,在关键代码处添加秒表,记录执行命令的时间。数据量(条)分别为50、100、1 000、10 000、100 000,每次插入保存完毕把所耗时长写入日志文件。连续多次测试,取平均值。如图1所示,当写入记录条数小于1 000时,两者所耗时间差别并不明显;随着插入记录条数持续增加,MySQL的插入耗时开始剧增,而Hbase耗时变化幅度相对较小。

图1 结构化数据存储性能对比Fig.1 Performance comparison for storing structured data

通过反复测试与效率对比发现,观测数据读取性能较高情况为:测震连续波形数据,每条记录保存10min长度数据;前兆分钟以上采样率观测数据,每条记录保存1h长度数据。

3.3 非结构化数据存储性能对比

分别对Hbase-0.94.6和MySQL-5.1.48做10、50、100、200、500、1 000 次文件写入试验,文件大小约30KB/个,两者的二进制文件存储耗时性能对比结果如图2所示。可以看出,当插入文件数量增加时,Hbase的性能优势变得更加明显。

图2 非结构化数据存储性能对比Fig.2 Performance comparison for storing unstructured data

3.4 查询性能对比

分别对Hbase-0.94.6和MySQL-5.1.48做数据量为1 000、2 000、10 000、100 000、500 000的查询性能测试。从图3可以看出,Hbase耗时很少,且幅度变化不大,而MySQL 查询耗时随数据量的增长上升很快。

图3 查询性能比较Fig.3 Performance comparison for query

4 结 语

本文提出一种基于Hbase的地震大数据存储方法,并与传统关系数据库MySQL 在写入与读取效率方面作对比测试。结果表明,本文方法在数据存储与查询等方面,特别是在数据量多时,具有显著优势。为更进一步深入研究,体现本文方法在地震数据存储与管理方面的优势,同时为更高层次的应用提供参考,接下来将继续开展与其他典型关系数据库的对比测试工作。

致谢:论文写作、测试环境搭建与性能对比测试过程中,得到山东省地震局王方建研究员、南京云创存储科技有限公司云应用研发组成员杨震宇、张国庆、贾文周和张乃甜等的大力支持和热心帮助,在此表示感谢!

[1]李军,周成虎.地学数据特征分析[J].地理科学,1999,19(2):158-162(Li Jun,Zhou Chenghu.Geoscience Data Analysis[J].Scientia Geographica Sinica,1999,19(2):158-162)

[2]李博强,郝立波,赵玉岩,等.某农业地质调查信息服务系统的设计与实现[J].吉林大学学报:信息科学版,2012,30(5):523-529(Li Boqiang,Hao Libo,Zhao Yuyan,et al.Design and Realization of Information System of Agricultural Geological Survey[J].Journal of Jilin University:Information Science Edition,2012,30(5):523-529)

[3]NoSQL Databases[EB/OL].http://nosqldatabase.org/,2012-10-02

[4]Strauch C.NoSQL Databases[EB/OL].http://www.christ of-strauch.de/nosqldbs.pdf,2012-10-02

[5]Hbase的基本概念[EB/OL].http://blog.csdn.net/szwangdf/article/details/32709261,2014-06-20(Basic Concepts of Hbase[EB/OL].http://blog.csdn.net/szwangdf/article/details/32709261,2014-06-20)

[6]周姚.基于云计算的文本挖掘技术研究[D].长沙:国防科学技术大学,2011(Zhou Yao.Cloud Computing-Based Research on Text Mining Techniques[D].Changsha:Graduate School of National University of Defense Technology,2011)

[7]IHbase[EB/OL].http://github.com/ykulbak/ihbase,2012-10-02

猜你喜欢
关系数据库结构化观测
关系数据库在高炉数据采集系统中的应用
促进知识结构化的主题式复习初探
改进的非结构化对等网络动态搜索算法
结构化面试方法在研究生复试中的应用
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
天文动手做——观测活动(21) 软件模拟观测星空
2018年18个值得观测的营销趋势
可观测宇宙
高分辨率对地观测系统
基于索引结构的关系数据库关键词检索