大数据技术在海量测震数据中的研究应用

郭凯 黄金刚 彭克银 庞丽娜
摘要:对目前主要的大数据技术进行探讨,并对大数据计算方法在测震数据中应用进行分析,设计了基于大数据技术的测震数据存储模型以及基于海量数据运行率管理的计算模型,编写了分别基于单机多线程和大数据环境的程序,并进行对比实验。结果表明:采用基于大数据技术的分布式管理和计算架构,可以较好地解决海量测震数据的管理困难、共享服务和科研计算方面的性能瓶颈。
关键词:大数据;测震数据;分布式管理
中图分类号:P31573文献标识码:A文章编号:1000-0666(2017)02-0317-07
0引言
大数据一般指大小超出常规的数据库获取、存储、管理和分析能力的数据集。大数据一般具有以下4个特征:大量化(VOLUME)、快速化(VELOCITY)、多样化(VARIETY)和价值化(VALUE)。近年来,大数据技术在计算性能、无限扩容等方面表现出巨大优势,因此,在医学、金融、科研领域已经得到了广泛的应用。
在“中国数字地震观测网络”项目完成后,我国的地震监测能力得到了很大提高。相比“九五”期间,“十五”计划完成后中国国家地震台网中心的技术系统得到了全面提升,无论在接入台站数量还是在数据处理效率上均有了较大的提升(侯建民等,2009)。2008年至2016年底,随着监测台网的不断完善和扩大,存储的测震连续波形数据已经超过了100 TB,每年还在以约12 TB的增量数据进行增加。如此海量的数据,如何做好管理、服务、以及分析处理具有很大的挑战性。以前基于文件、MySql数据库等方法进行管理的模式无论在数据管理、分析处理上都已经出现了很大的瓶颈,时间和效率上已经无法满足现在地震科学数据管理和科研的需求。而随着大数据技术的高速发展,其对海量数据的处理在IO并发、处理速度上都体现了极大的优势,山东省地震局(李永红等,2015)、中国地震局第二监测中心(王丹宁等,2016)、中国地震台网中心等都在该方面开展了相关研究工作,本文主要探讨大数据技术在测震数据上的应用。
1大数据技术发展
11海量数据的存储技术[BT)]
[KG(0.15mm]近年来,随着数据量的高速增长,对数据进行存储、备份以及分析时,采用高性能集群和存储的成本非常高昂。Google公司于2003年提出了GFS的文件存储方法,面对的数据规模是TB级或者GB级,它采用价格低廉的存储和计算机进行稳定高效的海量数据管理和计算分析。2006年谷歌公司提出了面向结构化大数据的存储模型——Bigtable,它是一个为管理大规模结构化数据而设计的分布式存储系统,可以扩展到PB级数据和上千台服务器,能提供灵活、高性能的存储解决方案。[KG)]
Hadoop-HDFS(Hadoop Distributed File System)是文件分布式系统,起源于Apache Nutch,也是目前應用最广泛的大数据技术之一(Tom,2014)。Hadoop在2006 年2月成为一个独立的Lucene子项目,是开放源码并行运算编程工具和分散式档案系统,凭借其开源和易用的特性,[HJ2mm]成为大数据处理的首选。HDFS采用了主从(Master/Slave)架构,一个集群有一个Master和多个Slave,前者称为名字节点(NameNode),后者称为数据节点(DataNode),放在HDFS上面的数据被分为一系列固定大小的数据块(block)(许春玲,张广泉,2010)。Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,对于任何应用,Hbase在逻辑上都将所有数据存储在一张表中(许闯等,2012)。
12海量数据的快速计算
MapReduce(大规模数据集并行运算算法)使得数据处理人员只需要执行简单的运算,而将并行化、容错、数据存储、负载均衡等数据处理细节放在一个标准库里(Jeffrey,Sanjay,2004)。图1为MapReduce的计算架构,数据在Map阶段进行切割,根据指定的Key组合为一个列表,然后根据Key值进行分区,在Reduce阶段进行计算合并。
Spark是近年来发展较快的分布式并行数据处理框架。MapReduce缺点在于Map和Reduce阶段产生的数据存储在硬盘上效率相对较低,且只能处理离线数据,面对需求实时处理的数据就无法满足需求。Spark和MapReduce的区别之一在于Spark把中间产生的数据放在了内存中,并采用RDD(Resilient Distributed Datasets,弹性分布式数据集)来提高计算效率。
2大数据技术在测震数据中的应用
IRIS DMC 是全球地震台站最大的数据汇集中心和处理中心,世界各个地震研究中心和研究机构通过Wilber、SeedLink、ArcLink、WebService等标准传输方式从IRIS DMC获取数据。图2为IRIS DMC在2006—2016年期间数据汇集和数据服务情况,从图中可以明显看到汇集的数据量不仅从2006年的几十TB增长到现在将近400 TB,对外服务提供的数据量更是呈现爆发式增长,2016年的数据服务量比2006年增长了将近50倍,达到了900 TB。显然,如果采用普通的数据管理和服务方式,尤其是在破坏性大地震发生后面对全球用户的大量数据请求响应和处理下载,是无法满足规模日益增长的数据服务需求的。
中国地震台网中心从最初接入的47个国家标准数字地震观测台站(赵永等,2002),到已经实现了1 024个国家和区域地震台站的测震波形数据实时传输和汇集(郭凯等,2016),监测能力大幅提升的同时,需要实时处理和存储的数据量也达到了之前20多倍。以前将数据备份到光盘、磁带库的方式在急速增长的数据量面前暴露出数据易损坏、恢复难、数据导入导出速度慢等诸多问题。从数据服务的角度,由于国家测震台网西部分布相对稀疏,东部分布密集。如果M50~60地震发生在西部,震后时间波形数据由于台站密度相对稀疏,需要处理的台站数据相对较少。但如果发生在华北区域,按震中800 km选取地震台站30 min数据,最少需要处理300个台站产生约05 GB的数据,面对较多用户的数据处理和下载请求时,对系统IO和并发处理能力提出了非常高的要求,普通服务器很难满足。
21基于Hadoop的测震数据存储模型架构设计
中国地震台网中心汇集的测震波形数据采用国际标准的Miniseed格式,以一个台站一个分项512字节、每个数据包1天24个小时数据做为一个文件的形式存储,目前所有的数据汇集在NAS存储上,受限于网络带宽以及NAS机头数量,传输速度很难超过100 M/s。在面对TB级规模的测震波形数据,单纯采用文件方式存储在数据汇集的速度、稳定性和安全性方面已经无法满足要求。
并发性性能受限于机头性能优于NAS随系统规模增加呈线性增长[BG)F][JP]
[KG(0.15mm]目前国内已开展的地震大数据存储方式主要分为2种:①将数据按照原始格式导入Hbase中(王丹宁等,2016);②对原始测震波形数据进行解压缩,整理成ASCII码放入Hbase中。由于Miniseed格式本身采用了Steim2的压缩算法,直接将其放入Hbase,对于提取数据时的计算效率会有一定的影响,而将数据解压成ASCII码的形式,则增长的数据量达到了将近4倍,会造成很大的存储消耗。从测震数据的使用需求来看,主要分为2种:①实时性计算,主要用于地震速报、地震预警和烈度速报等;②数据分析,主要对历史数据进行计算分析,如噪声成像、区域速度结构等科学研究领域。由于HDFS是为了处理大型数据集分析任务的,是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。
基于测震数据的实际业务需求和汇集情况,并且考虑到数据存储的成本,本文提出了如图3所示的基于Hadoop的测震数据存储架构。将实时数据和近期1年的测震波形数据放入Hbase中存储,这样可以满足对实时性计算要求较高的地震速报和地震预警要求;将历史数据放入HDFS中,并采用1∶[KG-*2]3的比例进行数据备份,提高了数据的安全性,并可以开展基于MapReduce和Spark的高效计算。
当然,测震数据在Hbase中的存储要结合实际的业务需求进行设计。目前国家台网中心采用基于JOPENS的SSS流服务器来负责接收和分发近实时波形数据,接收数据为512字节的纯数据SEED卷(Miniseed数据),包含有固定头段部分(48字节)和数据部分,主要记录台站名、通道名、记录起始时间、样本数目、测震数据等,以一个台站一个分项(周辉等,2011)。刘坚等(2015)对测震数据存入Hbase的数据结构进行相关设计和研究,设计了Row Key 为,主要基于512字节数据头段所包含的台站信息来进行数据的快速检索(刘坚等,2015)。根据台网中心的测震波形文件存储格式,并考虑实际业务需求和数据检索效率,本文设计了如表1所示的基于Hbase的测震波形数据存储格式。考虑性能和维护性,采用每月数据存储在一张表的设计思想,每张表有2列,一列是ROWKEY,另一列存储每条实时流,以北京BST台站2016年4月9日16点10分32秒接收到的数据为例,设计的表结构如表2所示。
22数据管理和计算模型设计
测震波形数据质量控制是数据共享和服务非常关键的一步,而运行率是评估台站数据质量在一定时间范围内的一个重要指标。如果以5年全国测震台站波形数据1 024个台站约65 TB数据,每个台站1个分项1小时运行率作为基本单位进行统计并存储该小时段的运行率,则产生的数据量超过了2亿多条,而传统的数据库如Mysql在规模达到几百万条数据的时,检索的速度就已经达到了瓶颈,同时,计算如此海量的数据,即使采用高性能计算机进行数据运行率检索,也会受限于IO瓶颈和CPU的数量,计算的时间会非常漫长。
基于台网中心目前的数据存储情况以及本文设计的测震数据存储模型,设计了一套基于Hadoop的分布式历史数据运行率检索计算模型,同时兼容考虑了对实时流数据运行率的实时检索,如图4所示。模型基于表2的数据存储结构将历史数据首先导入HDFS中,采用Spark计算模式开展多节点的数据运行率计算,以小时为周期将计算结果实时放入Hbase中,实时流数据的计算流程同历史数据一样,结果放入MySql,并按一定周期导入Hbase中。
[JP2]图4中,自底向上分为3个层面。第1层是数据源层,主要包括地震波形数据文件以及测震实时流,最新的地震波形数据文件存储在NAS存储服务器上,可通过脚本将其挂载到本地进行读写,历史地震波形数据文件存储在HDFS分布式文件系统中,用HDFS接口进行存储和访问;第2层是处理层,主要完成系统所需要数据计算功能,主要提供基于历史地震波形数据文件的连续率计算以及实时地震波形数据文件的连续率计算;第3层是云平台中系统的数据持久层,主要提供处理层中各类计算结果的存储,包括测震连续波形数据、索引数据以及台站通道信息数据等。其中,连续率数据由于数据量巨大,将存储在分布式数据库Hbase中,通过Hbase接口进行存储和访问处理;而其它类似基础信息类的数据,即数据量不大但处理响应性能要求较高的数据,将存储在关系数据库系统Mysql中,用JDBC/SQL进行存储和访问处理。[JP]
23基于大数据架构的测震数据计算测试
本次测试编写了2个测震數据运行率计算程序,分别为基于Hadoop的大数据计算版本和基于多线程的单机版本。这里主要介绍大数据计算版本的程序设计和执行步骤:首先数据处理模块的主线程获取HDFS上的数据目录集合,并将目录集合以任务集的方式提交至计算节点进行计算,计算节点每次取出一天的数据进行计算,work从HDFS上取出某天目录下的所有Miniseed文件依次进行解析,每个Miniseed文件按512个字节为单位进行读取,读取时需要对重复数据进行选优计算,ZooKeeper是一个开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件,提供的功能包括配置维护、域名服务、分布式同步、组服务等;Hbase是一个分布式的、面向列的非结构化开源数据库,在纵向上可以提供无限扩展能力;Kafka是一种高吞吐量的分布式发布订阅消息系统,它通过Hadoop的并行加载机制来统一各类消息处理,也是为了通过集群来提供实时数据的缓存和消费;Spark 是一种与 Hadoop 相似的基于内存的开源集群计算环境,由于Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

测试数据采用2015年12月的全国测震波形数据,数据量约1 TB。多线程版本测试将1个月的Miniseed文件保存在10519056服务器的硬盘上,目录按每天1个文件夹进行存放,通过多线程技术分别将1个月的文件进行解析,测试结果如表5所示。
通过上面测试,发现大数据版本的处理时间仅为多线程版本的1/6,多线程版本的数据放在本地硬盘,受限制于文件读取效率,而从HDFS文件系统读取,不限制于硬盘读取速率,且可以成倍的提高读取解析效率;另外,如图5所示,其中计算节点10519053(图5a)上只有HDFS,所以上传速率是30~40 M/s,下载速度为0,表示该节点在为spark运算提供文件数据;计算节点10519055(图5b)上不仅有HDFS节点,还有Spark计算节点,上传和下载速度约264 M/s,表明该节点不仅有Spark的work节点在接受并解析数据,同时,该节点在向外发送数据;计算节点10519056(图5c)上也是不仅有HDFS节点,同时有Spark计算节点,但是上传速率很低,说明该解析的数据并没有存放在该节点上或存放量偏少。但是该节点文件接受速率为120 M/s,说明该节点在解析数据。由于本次测试的Hadoop集群配置的是千兆网卡,因此,120 M/s左右的速率为正常速率,220 M/s的上传下载速度表明该节点不仅接受其他HDFS节点传输过来的数据,同时在处理本机上的HDFS节点数据。综上可知,通过Spark计算,还有一定提升空间,由于网络带宽达到上限,通过增加服务器的方式,对网络进行负载均衡,可以进一步提升Spark解析任务的文件读取效率,进一步提升解析速度。
3结论
[KG(0.2mm]本文从测震数据存储和共享科学计算的角度出发,就大数据技术在海量测震数据的存储和应用方面进行了相关研究,基于海量测震数据的实际业务需求和汇集情况,设计了一套分别将测震数据放入HDFS和Hbase的数据模型,并通过多副本的设定来保证数据的安全性;从测震数据质量控制的需求出发,提出了一个基于Hadoop Spark的海量数据运行率计算模型,采用测震数据就传统的多线程计算和基于Hadoop环境的集群计算做了对比实验,实验结果体现了大数据在海量数据处理上进行分布式存储和计算的强大的性能优势,该性能可以随着参与计算节点的增加来进行提升。因此,对于开展地震波形互相关、层析成像、区域速度结构等研究,需要对海量测震波形数据分析处理的地震科研人员来说,可以大大提高效率,使处理速度达到之前的几倍、几十倍甚至更多,体现了大数据技术在地震行业的利用价值。[KG)]
[HTK]本文在撰写过程中得到孟令媛副研究员、南京云创大数据公司马鸣、汪洲权的帮助,在此向他们表示衷心感谢。[KH*1D]
参考文献:
郭凯,温瑞智,杨大克,等2016地震预警系统的效能评估和社会效益分析[J].地震学报,38(1):146-154
侯建民,黄志斌,余书明,等2009中国国家地震台网中心技术系统[J].地震学报,31(6):684-690
李永红,周娜,赵国峰,等2015云计算环境下地震数据管理与服务应用研究[J].震灾防御技术,10(增刊1):811-817
刘坚,李盛乐,戴苗,等2015基于Hbase的地震大数据存储研究[J].大地测量与地球动力学,35(5):890-893
王丹宁,柴旭超,王文青2016Hadoop平臺下的地震波形数据存储与应用规划[J].软件工程,19(1):48-49
许闯,刘鹏,刘志忠,等2012一种基于HBase的本体复用新方法[J].计算机技术与发展,22(6):57-60
许春玲,张广泉2010分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析[J].苏州大学学报(工科版),34(1):5-9
赵永,薛峰,刘阳,等2002国家数字地震台网中心技术系统与服务[J].地震地磁观测与研究,23(1):16-23
周辉,申学林,王文青,等2011通用测震数据获取软件包的设计与实现[J].地震研究,34(1):102-107
JEFFREY D,SANJAY C2004MapReduce:Simplified Data Processing on Large Clusters[C].Conference on Symposium on Opearting Systems Design & Implementation,137-150