引言

区域及国家中心测震台网产出的连续波形数据一般在线存储3个月,3个月后的数据脱离生产系统,采用光盘或磁带的方式进行离线存储。离线后的历史波形数据,在数据查询、波形截取、大尺度数据连续分析、在线服务等方面难以实现。另外,历史波形的存储安全也面临严重的挑战,尤其是5—10年前的历史波形数据,存在因介质失效而致数据丢失的可能。

考虑到测震连续波形数据管理与服务的时效、易用、安全,需要针对目前离线数据的管理模式和存储方式,采用云计算、大数据等新的信息技术,研制并搭建面向行业服务的地震波形数据存储与服务实验平台,实现台网历史及实时波形数据的在线存储管理与服务。构建一种可扩展的、具备一定负载均衡能力的高性能云存储体系(陈俊等,2011),并针对相应的问题进行测试与分析,给出相应的实现方法和实施策略,在搭建的云存储平台上,验证云存储体系可扩展性及负载均衡等问题的可行性(李文武等,2011)。

1 地震数据管理与服务的现状

“九五”以来,山东地震观测台网产出了大量观测数据。地震监测数据的汇集、存储、管理、处理和服务等在现有技术平台支撑下,存在诸多问题。尤其是在地震连续波形数据的存储、管理与服务等方面,因其数据量大(山东运行的测震台站有130多个,日产生的SEED文件约有4GB,解压后的文件约有24GB,加上地震波形数据的其他辅助信息和为它们创建查询索引,每年需提供15TB的原始数据存储量),现阶段采用光盘形式离线存储。

为解决山东区域中心海量的地震数据备份问题,2013年12月山东省地震局启动了“地震数据处理平台”工程项目。项目目标是采用大数据技术,解决数据存储、管理与服务问题,实现山东台网历史数据(测震、强震、前兆等)和实时产出数据的在线综合存储、管理和服务,为进一步数据的分析和挖掘,提供数据资源和计算资源。

2 地震数据云计算平台核心技术

云计算是一种由网络提供、按需使用、按量付费的计算资源共享模式;Hadoop作为云计算的一个典型的开源工具软件,为用户进入可配置的资源池(包括网络、服务器、存储、应用软件等服务),并能够快速获取所需资源,提供了极大的便利(Jason Venner,2009)。

Hadoop的分布式计算框架具有高可靠性和良好扩展性,是解决地震数据分布式处理和存储的首选系统框架,并可为地震数据云计算平台提供一组稳定可靠的接口。Hadoop集群典型的Master/Slaves结构,主要是由Hadoop分布式文件系统HDFS和计算模型MapReduce两个主要的子项目组成(曹英忠等,2011)。

HDFS是以流式数据访问模式存储超大文件而设计,并在通用硬件的集群上运行的文件系统(王德文等,2010)。同时HDFS又是一个具有高度容错性的系统,提供高吞吐量的数据访问,非常适合地震波形数据大规模的存储应用。MapReduce所提供的高效分布式计算模型,为处理和生成大规模地震波形数据集提供了可靠的实现方式(谢桂兰等,2010)。MapReduce的核心就是任务的分解与结果的汇总。它由函数Map和函数Reduce组成,函数Map就是将一个任务分解成为多个任务;而函数Reduce就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。

在Hadoop的分布式框中,地震数据将被分割成多个数据块存储在每一个Slave的DataNode上,由NameNode负责管理这些数据块。用户的计算任务被分成多个Map任务和Reduce任务,JobTracker负责启动、跟踪和调度Map任务和Reduce任务,这些任务是由每一个Slave的TaskTracker所执行的。J0bTracker同时侦测TaskTracker的运行状况,若有需要的时候,也会重新执行某个任务,计算结果会保存在用户指定的目录下(Chang等,2008)。

3 地震数据云计算平台搭建

山东地震局的地震数据处理平台,采用16个节点(X86服务器)组成,存储能力180TB。Hadoop集群是Master/Slave结构,使用2台机器作为Master,分别负责NameNode和JobTracker的工作,另14台机器作为Slave,负责DataNode和TaskTraeker的工作(Chunk Lam,2010)。每台实验机器上均运行CentOS6.4版Linux系统,java版本1.6,Hadoop版本2.0。总体框架如图1所示。

3.1 地震波形数据解析
图 1 地震数据云计算平台总体架构图 Fig. 1Framework chart of seismic data cloud computing platform

笔者将山东地震局地震数据分为历史光盘数据和实时波形数据两种方式采集。在对2000年以来的5000多张历史光盘数据文件采集时,采用多台计算机并行采集,解析历史光盘中DAT、EVT、SEED等格式数据的头文件信息后,挖掘出有效台站信息、通道信息、仪器信息等存储数据库。在对实时波形数据进行数据解析时,为防止解析程序对源数据库破坏,首先对地震数据流进行备份,地震数据解析程序从备份数据流中采集实时波形数据,按照miniseed格式解析,通过Steim2解压算法获得结构化数据,并提取台站ID、测点ID、仪器ID、通道、采样率等有用信息存入NOSQL分布式数据库。

3.2 采用NoSQL替代关系型数据库

山东地震台网每日产生的SEED文件约有4GB,解压后的文件约有24GB,如此庞大的数据量使得传统数据库已经很难提供准确的数据存储管理和处理能力。为此,平台提出分布式海量数据存储和处理解决方案,使用大数据领域中的NoSQL数据库替代传统关系型数据库,极大提高了数据分析处理能力。

为提高云计算平台的数据流导入效率,在数据库中对RowKey值加入“台网ID+台站ID+测点ID+仪器ID+通道+采样率+产品类+时间戳”等信息,测点ID和仪器ID这两个节点存在HBASE中的缓冲列中,通过修改大平台的程序每天扫描缓冲区里的这两个节点,如果为空则主动查询物理表进行回填。这样在不影响查询速度和业务要求的情况下,最大程度地贴近了实际情况,保证了数据流高效、完整地进数据库(见图2)。

3.3 分布式并行计算架构

为了能对海量地震数据进行并行化的计算处理,采用Hadoop的并行化计算框架MapReduce管理和调度整个集群中的节点,并完成并行化程序的执行和数据处理,尽可能对本地节点上的数据进行本地化计算。MapReduce任务分为两个阶段:Map阶段和Reduce阶段(Sebnem Rusitschka等,2009)。Map执行分解后的任务,Reduce负责把Map阶段所得到的中间结果汇总。具体执行过程如下(见图3):

图 2 云计算平台数据查询效果图 Fig. 2Query data in the cloud computing platform
图 3 地震数据云计算平台并行计算框架图 Fig. 3Parallel computing framework for seismic data cloud computing platform

(1)预处理:MapReduce框架首先调用类库,将地震seed文件分为等大小(通常为64MB)的分片。

(2)任务分配:JobTracker为集群中空闲的节点分配Map或者Reduce任务。设集群中有m个Map任务和n个Reduce任务。

(3)Map任务:Mapper读取相应的文件分片,将输入分片转换为键值对,使用Map函数对其进行计算,得到一个新的键值对,作为中间结果缓存到当前节点的内存中(周敏奇等,2011)。

(4)缓存文件定位:在(3)得到的中间结果被周期性地写入Mapper所在的本地硬盘中,并把文件的存储位置信息由JobTracker传递给Reducer。

4 地震数据存储效果

山东地震局云计算平台目前存有自2002年以来的地震波形数据1423526条,共7.12 T(图4)。笔者发现合理选择Job中 Tasks数的大小能显著地改善Hadoop执行的性能。通过调整DFS块大小来调整map的数量。正确的map任务的并行度应该是10—100maps每节点,经过优化后,50GB数据查询用时小于0.06s。笔者之前将cpu运算量小的任务调整到300maps每节点,导致整个Task的花费时间超过5min。在实验中还发现,增加Task的个数会增加系统框架的开销,但同时也会增强负载均衡并降低任务失败的开销。一个极端例子是:在1个map、1个reduce的情况,这样没有任务并行;另一个极端例子是:1000000个map、1000000个reduce的情况,会由于框架的开销过大而使得系统资源耗尽。

图 4 云计算平台数据统计效果图 Fig. 4Data statistics on the cloud computing platform

在地震数据存储过程中笔者发现,正确的reduce任务的个数应该是0.95或者1.75×(节点数×mapred.tasktracker.tasks.maximum参数值)。如果任务数是节点个数的0.95倍,那么所有的reduce任务能够在 map任务的输出传输结束后同时开始运行;如果任务数是节点个数的1.75倍,那么高速的节点会在完成他们第一批reduce任务计算之后开始计算第二批reduce任务,这样的情况更有利于负载均衡。由于保证地震数据的高效、安全、可靠存储是第一重要的,因此地震数据云计算平台采用节点任务1.75倍作为任务数。

由图5可以看出,采用MapReduce技术处理地震数据,当数据量相同情况下,随着集群中节点数的增加,运行时间一直在减少。当数据过小时,使用云计算反而达不到提速效果,当数据足够大,并且集群中的全部节点都进行工作时,整个集群可以达到最大效率。在面对地震数据源源不断到来之时,Hadoop并行计算框架下的地震数据云计算平台能够作出极速响应,并有效地降低任务复杂度,提高算法运行效率,大大减少任务的执行时间,这对未来解决地震数据存储相似问题时提供了一定的参考。

图 5 MapReduce技术和单机存储事件效率对比 Fig. 5Comparison of the efficiency of MapReduce and single machine storage event
5 结束语

地震数据云计算平台使用MapReduce技术在集群上实现了分布式计算和任务处理,二者相互作用,完成了地震波形数据的分析存储任务。Hadoop作为开源的云计算模型,它模仿和实现了Google云计算的主要技术,并且使用Java语言编写,可移植性强,为海量地震数据进行云计算方面的研究和应用奠定了基础。基于Hadoop云计算平台能够以秒级处理速度,实现地震数据的实时查询、分析和处理,为地震数据汇聚、存储与管理、挖掘与分析,为防震减灾数据的资源化管理与深度开发应用提供了有力支撑。未来笔者将探索更适合的地震数据存储、管理和算法模型,降低数据存储的风险度,提高数据存储质量,大大减少业务执行时间,为未来地震大数据存储方向提供参考。

参考文献
[1]曹英忠,谢晓兰,赵鹏,2011.基于Hadoop的云存储实践. 现代计算机 ,(10):25—27.[本文引用:1次]
[2]陈俊,陈孝威,2011.基于Hadoop建立云计算系统. 贵州大学学报(自然科学版) ,(3):91—93.[本文引用:1次]
[3]李文武,游文霞,王先培,2011.电力系统信息安全研究综述. 电力系统保护与控制 ,39(10):140—147.[本文引用:1次]
[4]王德文,宋亚奇,朱永利,2010.基于云计算的智能电网信息平台. 电力系统自动化 ,34(22):7—12.[本文引用:1次]
[5]谢桂兰,罗省贤,2010.基于Hadoop MapReduce模型的应用研究. 微型机与应用 ,(21):4—7.[本文引用:1次]
[6]周敏奇,王晓玲,金澈清等译,2011.Hadoop权威指南. 北京:清华大学出版社. [本文引用:1次]
[7]Chang F., Dean J., Ghemawat S.,2008.A distributedstorage system for structured data.ACM Transactions on Computer Systems (TOCS. 26(2): 80—84.[本文引用:1次]
[8]Chunk Lam,2010.Hadoop in action. Manning Publications Co. [本文引用:1次]
[9]Sebnem Rusitschka, KoUa Eger, Christoph Gerdes,2010.Smart grid data cloud:a model for utilizing cloud computing in the smart grid domain.2010 First IEEE International Conference on Smart Grid Communications (SmartGridComm. 483—488.[本文引用:1次]
[10]Jason Venner,2009.Pro Hadoop.Apress. [本文引用:1次]