郭 凱 彭克銀 雷 蕾
(中國地震臺(tái)網(wǎng)中心,北京 100045)
測震波形數(shù)據(jù)存儲(chǔ)和管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
郭 凱 彭克銀 雷 蕾
(中國地震臺(tái)網(wǎng)中心,北京 100045)
為了解決日益增長的海量測震波形數(shù)據(jù)在存儲(chǔ)和管理方面存在的性能瓶頸問題,基于測震波形數(shù)據(jù)管理的業(yè)務(wù)需求,選取基于Hadoop大數(shù)據(jù)技術(shù)的分布式文件系統(tǒng)HDFS和分布式計(jì)算Spark架構(gòu)進(jìn)行數(shù)據(jù)的存儲(chǔ)和計(jì)算,并開發(fā)基于Web的測震波形數(shù)據(jù)存儲(chǔ)和管理系統(tǒng),實(shí)現(xiàn)對海量測震波形數(shù)據(jù)的可視化管理和數(shù)據(jù)運(yùn)行率檢索。
大數(shù)據(jù);Hadoop;測震數(shù)據(jù);分布式存儲(chǔ);管理系統(tǒng)
從1996年起,中國地震局進(jìn)行了大規(guī)模數(shù)字地震觀測系統(tǒng)建設(shè),已建成由國家地震臺(tái)網(wǎng)、區(qū)域地震臺(tái)網(wǎng)和流動(dòng)地震臺(tái)網(wǎng)組成的數(shù)字地震觀測系統(tǒng)[1]。中國地震臺(tái)網(wǎng)中心承擔(dān)著全國地震監(jiān)測、地震中短期預(yù)測和地震速報(bào)以及各類地震監(jiān)測數(shù)據(jù)的匯集、處理與服務(wù)的重要任務(wù)。僅測震波形數(shù)據(jù),現(xiàn)在每年匯集的數(shù)據(jù)量已經(jīng)達(dá)到12TB,目前匯集和管理的測震波形數(shù)據(jù)已經(jīng)超過了100TB。
如此海量的數(shù)據(jù),受制于傳統(tǒng)硬件IO、網(wǎng)絡(luò)以及計(jì)算性能的限制,如對一年的測震波形數(shù)據(jù)進(jìn)行遷移和備份,一般需要超過半個(gè)月的時(shí)間;針對數(shù)據(jù)運(yùn)行率計(jì)算,主要作為評估數(shù)據(jù)質(zhì)量的指標(biāo)之一,需要對每一條記錄的波形數(shù)據(jù)進(jìn)行讀取、解壓、計(jì)算完整性等一系列計(jì)算,僅5年的計(jì)算結(jié)果就超過2億條記錄,已經(jīng)超過了傳統(tǒng)的MySql數(shù)據(jù)庫的承受范圍,無法使用傳統(tǒng)的數(shù)據(jù)庫進(jìn)行管理,時(shí)間和效率上已經(jīng)難以滿足現(xiàn)在地震科學(xué)數(shù)據(jù)管理和科研的需求[2]。因此,做好測震波形數(shù)據(jù)的匯集和管理就顯得非常重要。作為目前應(yīng)用最廣泛的開源大數(shù)據(jù)技術(shù),Hadoop采用合理的框架分布存儲(chǔ)和管理數(shù)據(jù),將數(shù)據(jù)和計(jì)算資源進(jìn)行有效的分配,基于集群的性能和數(shù)量,IO和計(jì)算能力可以線性增長。在其他領(lǐng)域處理海量數(shù)據(jù)上如醫(yī)學(xué)基因[3]、電子商務(wù)[4-5]、氣象[6]等領(lǐng)域采用基于Hadoop的技術(shù)架構(gòu)均有較好的表現(xiàn)。因此,本文采用基于Hadoop的技術(shù)架構(gòu)作為研發(fā)系統(tǒng)采用的主要技術(shù),實(shí)現(xiàn)對測震波形數(shù)據(jù)的匯集、存儲(chǔ)以及數(shù)據(jù)運(yùn)行率計(jì)算。
經(jīng)過多年的努力,中國地震局已經(jīng)初步建成了地學(xué)的多學(xué)科、多門類的基礎(chǔ)數(shù)據(jù)觀測網(wǎng),包括測震、電磁、形變、流體等四大觀測臺(tái)網(wǎng)和測線累計(jì)長度達(dá)15萬公里的流動(dòng)物理場觀測系統(tǒng)[7]。按照地震科學(xué)數(shù)據(jù)分類,測震波形數(shù)據(jù)屬于大類地震觀測數(shù)據(jù)(D10000)下面中類的測震數(shù)據(jù)(D11000)。測震波形數(shù)據(jù)對于從事地震學(xué)研究的科研人員有著非常重要的意義,無論是進(jìn)行區(qū)域速度結(jié)構(gòu)、層析成像,還是大震后對地震序列特征等方面開展研究,都需要大量的地震波形數(shù)據(jù)的支持。
從2000年年底開始,中國地震臺(tái)網(wǎng)中心接入全國48個(gè)測震臺(tái)站,到2015年12月,中國地震臺(tái)網(wǎng)中心已經(jīng)實(shí)時(shí)接入了包括國家臺(tái)網(wǎng)和區(qū)域臺(tái)網(wǎng)共1029個(gè)測震臺(tái)站。中國地震臺(tái)網(wǎng)中心匯集的測震波形數(shù)據(jù)采用國際標(biāo)準(zhǔn)的Miniseed格式,以每個(gè)測震臺(tái)站24小時(shí)的數(shù)據(jù)作為一個(gè)文件進(jìn)行存儲(chǔ)。測震臺(tái)站采用了高精度的地震儀進(jìn)行數(shù)據(jù)采集,一般采樣率在100Hz左右,基于所在地的情況選擇有線如SDH或者3G、4G網(wǎng)等方式將數(shù)據(jù)匯集到臺(tái)站所在的省級臺(tái)網(wǎng)中心,然后省級臺(tái)網(wǎng)中心采用流服務(wù)器的方式將測震波形數(shù)據(jù)匯集到中國地震臺(tái)網(wǎng)中心,如圖1所示。
測震波形數(shù)據(jù)最初采用磁帶、光盤、硬盤等方式進(jìn)行存儲(chǔ),可是存在數(shù)據(jù)量的急劇增長,使用磁帶、光盤存儲(chǔ)的數(shù)據(jù)隨著時(shí)間的推移很難恢復(fù),目前測震所有的數(shù)據(jù)又都匯集在NAS存儲(chǔ)上,且受限于網(wǎng)絡(luò)帶寬以及NAS機(jī)頭數(shù)量,傳輸速度難以超過100 M/s等問題。在面對TB級規(guī)模的測震波形數(shù)據(jù),單純采用文件方式存儲(chǔ),在數(shù)據(jù)匯集的速度、穩(wěn)定性和安全性方面已經(jīng)無法滿足要求。
Google公司于2003年提出了Google文件系統(tǒng)(GFS)的文件存儲(chǔ)方法。當(dāng)面對TB級或者GB級數(shù)據(jù)規(guī)模時(shí),將所有的文件劃分為若干塊存儲(chǔ),每塊大小64M,每個(gè)數(shù)據(jù)塊在3個(gè)數(shù)據(jù)塊服務(wù)器上冗余來保證數(shù)據(jù)的可靠性。2006年,Google公司又提出了面向結(jié)構(gòu)化大數(shù)據(jù)的存儲(chǔ)模型Bigtable。這是一個(gè)為管理大規(guī)模結(jié)構(gòu)化數(shù)據(jù)而設(shè)計(jì)的分布式存儲(chǔ)系統(tǒng),可以擴(kuò)展到PB級數(shù)據(jù)和上千臺(tái)服務(wù)器。Hadoop開源實(shí)現(xiàn)了Google上述技術(shù),具體實(shí)現(xiàn)了對應(yīng)的分布式文件系統(tǒng)HDFS和分布式數(shù)據(jù)庫Hbase[8]。
圖1 測震波形數(shù)據(jù)的傳輸與匯集
劉堅(jiān)等[9]提出一種基于Hbase的地震大數(shù)據(jù)存儲(chǔ)方法,通過搭建測試平臺(tái)、Java語言開發(fā)測試程序,結(jié)果表明,Hbase存取地震數(shù)據(jù)耗時(shí)更低,在數(shù)據(jù)量較多時(shí),其性能更加顯著;李永紅等[10]基于云計(jì)算環(huán)境下海量地震數(shù)據(jù)存儲(chǔ)業(yè)務(wù)需求的分析,采用NoSql數(shù)據(jù)庫替代傳統(tǒng)的Mysql進(jìn)行數(shù)據(jù)的存儲(chǔ),采用MapReduce進(jìn)行計(jì)算;王丹寧等[11]將測震波形數(shù)據(jù)解壓后放入HBase進(jìn)行測震波形數(shù)據(jù)的存儲(chǔ)。從本文前述對地震業(yè)務(wù)的分析數(shù)據(jù)來看,由于測震波形數(shù)據(jù)采用基于文件的方式進(jìn)行存儲(chǔ),且數(shù)據(jù)的完整性校驗(yàn)對于系統(tǒng)的吞吐量要求較高,對每一個(gè)數(shù)據(jù)文件都要依次并發(fā)進(jìn)行檢索,因此本文采用基于HDFS的方式對測震波形數(shù)據(jù)進(jìn)行存儲(chǔ)。目前開源的分布式計(jì)算架構(gòu)主要為MapReduce和Spark,由于MapReduce在Map和Reduce階段產(chǎn)生的數(shù)據(jù)存儲(chǔ)在硬盤上導(dǎo)致計(jì)算效率相對較低,而Spark則將中間產(chǎn)生的數(shù)據(jù)放在內(nèi)存中,并采用RDD(Resilient Distributed Datasets,彈性分布式數(shù)據(jù)集)提高計(jì)算效率[2,12],所以本文將采用Spark計(jì)算架構(gòu)完成測震數(shù)據(jù)的運(yùn)行率計(jì)算。
測震波形數(shù)據(jù)文件按照每個(gè)臺(tái)站的每個(gè)測向(一般為BHZ、BHE、BHN)以天為單位進(jìn)行存儲(chǔ),采用Miniseed格式。它由512個(gè)字節(jié)組成,分為數(shù)據(jù)頭段和數(shù)據(jù)體兩部分。其中,數(shù)據(jù)頭段長度為64字節(jié),包含了該條波形數(shù)據(jù)的屬性,如所屬的臺(tái)網(wǎng)、臺(tái)站、經(jīng)緯度信息以及波形數(shù)據(jù)產(chǎn)生時(shí)間等;數(shù)據(jù)體為448字節(jié)的壓縮過的地震波形數(shù)據(jù),數(shù)據(jù)體中的數(shù)據(jù)根據(jù)Steim2算法進(jìn)行解壓縮。
采用HDFS存儲(chǔ)測震波形數(shù)據(jù)。首先將測震波形數(shù)據(jù)從NAS、硬盤、光盤等匯集到Hadoop集群的存儲(chǔ)上,HDFS提供了許多Shell命令來實(shí)現(xiàn)訪問文件系統(tǒng)的功能,而這些命令構(gòu)建在HDFS File System API之上,通過Shell命令將測震波形數(shù)據(jù)推送到HDFS上,HDFS的Block設(shè)置為256MB。Hadoop提供了基于Web的數(shù)據(jù)顯示界面,匯集到HDFS上的測震波形數(shù)據(jù)如圖2所示。
圖2 測震波形數(shù)據(jù)的在HDFS上的存儲(chǔ)顯示界面
圖3 測震波形數(shù)據(jù)的匯集和管理流程圖
完成數(shù)據(jù)的匯集后,需要對數(shù)據(jù)進(jìn)行運(yùn)行率計(jì)算,對數(shù)據(jù)進(jìn)行完整性校驗(yàn),這是評估匯集數(shù)據(jù)質(zhì)量的重要參考指標(biāo)之一。測震波形數(shù)據(jù)基于Hadoop技術(shù)的存儲(chǔ)流程如圖3所示。由于入庫的數(shù)據(jù)量較大,為了避免入庫中斷而導(dǎo)致重復(fù)數(shù)據(jù)的入庫情況,還需要對入庫的數(shù)據(jù)提供日志功能,這里采用MySql數(shù)據(jù)庫記錄已經(jīng)入庫的數(shù)據(jù)。
基于Hadoop 搭建的集群配置環(huán)境,采用Spark進(jìn)行測震波形數(shù)據(jù)運(yùn)行率的分布式計(jì)算。計(jì)算流程如圖4所示,首先數(shù)據(jù)處理模塊的主線程獲取HDFS上的數(shù)據(jù)目錄集合,并將目錄集合以任務(wù)集的方式提交至計(jì)算節(jié)點(diǎn)進(jìn)行計(jì)算。計(jì)算數(shù)據(jù)運(yùn)行率的單位為小時(shí),計(jì)算節(jié)點(diǎn)每次取出一天的數(shù)據(jù)進(jìn)行計(jì)算,計(jì)算完畢后將解析獲得的臺(tái)網(wǎng)代碼、臺(tái)站代碼、當(dāng)前小時(shí)值以及24個(gè)小時(shí)的連續(xù)率一起推送到HBASE進(jìn)行存儲(chǔ)。由于該任務(wù)是基于Hadoop的分布式計(jì)算,其效率得到了較大提升。一般地,采用6臺(tái)機(jī)器構(gòu)成的Hadoop集群計(jì)算效率相對單機(jī)可以提升6倍[2],,并且該效率將隨著集群規(guī)模的增大呈線性增長。
在完成基于Hadoop技術(shù)的數(shù)據(jù)存儲(chǔ)和運(yùn)行率計(jì)算后,為了及時(shí)掌握測震臺(tái)網(wǎng)的數(shù)據(jù)匯集狀態(tài),系統(tǒng)提供了以下兩個(gè)功能:一是基于Web的展示功能,能夠動(dòng)態(tài)監(jiān)控臺(tái)站、臺(tái)網(wǎng)的數(shù)據(jù)傳輸鏈路;二是為有效地了解全國各測震臺(tái)站歷史波形數(shù)據(jù)匯集和實(shí)時(shí)運(yùn)行情況,能夠以日、月、周、年等方式自動(dòng)生成測震波形數(shù)據(jù)統(tǒng)計(jì)報(bào)表,包括運(yùn)行率、異常臺(tái)站等信息。
Web應(yīng)用主要采用了以下技術(shù):前端采用基于HTML5技術(shù)的BootStrap框架,后端采用Spring MVC框架,圖表控件采用Echats,地圖控件采用百度地圖以及Openlayes。如圖5所示,該系統(tǒng)運(yùn)行界面分為上下兩部分進(jìn)行展示:在上面部分,左側(cè)以動(dòng)態(tài)地圖匯聚的形式展現(xiàn)全國各臺(tái)站實(shí)時(shí)的運(yùn)行狀態(tài),以省級臺(tái)網(wǎng)為單位進(jìn)行數(shù)據(jù)的匯集顯示;右側(cè)展現(xiàn)近一小時(shí)內(nèi)全國各臺(tái)站連續(xù)率運(yùn)行率排名,排序方式為連續(xù)率由高到低進(jìn)行排序。在下面部分,左側(cè)顯示系統(tǒng)的任務(wù)調(diào)度情況;右側(cè)為整體臺(tái)網(wǎng)每個(gè)小時(shí)的連續(xù)運(yùn)行率情況。
系統(tǒng)提供了按時(shí)間范圍查詢統(tǒng)計(jì)全國所有臺(tái)網(wǎng)、省級臺(tái)網(wǎng)以及單個(gè)臺(tái)站的運(yùn)行率,基于查詢目標(biāo)在查詢中選擇統(tǒng)計(jì)類型為“全部臺(tái)網(wǎng)數(shù)據(jù)查詢”“臺(tái)網(wǎng)內(nèi)各臺(tái)站運(yùn)行率”“單一臺(tái)站運(yùn)行軌跡”進(jìn)行統(tǒng)計(jì)。統(tǒng)計(jì)結(jié)果包括:全國臺(tái)網(wǎng)整體運(yùn)行率,省級臺(tái)網(wǎng)的整體運(yùn)行率,單個(gè)臺(tái)站的運(yùn)行率。其中,“單一臺(tái)站運(yùn)行軌跡”統(tǒng)計(jì)結(jié)果以陰影圖的形式進(jìn)行顯示,顯示內(nèi)容為所選臺(tái)站的整體運(yùn)行率的變化狀況,查詢結(jié)果如圖6、圖7、圖8所示。
圖4 測震波形數(shù)據(jù)運(yùn)行率計(jì)算流程圖
圖5 系統(tǒng)運(yùn)行界面
圖6 系統(tǒng)查詢省級臺(tái)網(wǎng)
圖7 省級臺(tái)網(wǎng)所屬臺(tái)站
圖8 單個(gè)臺(tái)站的運(yùn)行率結(jié)果
本文利用大數(shù)據(jù)技術(shù)進(jìn)行了測震波形數(shù)據(jù)存儲(chǔ)和管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),取得以下主要成果。
(1)基于Hadoop的HDFS進(jìn)行了測震波形數(shù)據(jù)的分布式存儲(chǔ),采用Spark技術(shù)對測震波形數(shù)據(jù)運(yùn)行率進(jìn)行計(jì)算,計(jì)算效率基于集群的數(shù)量可以呈線性增加。
(2)實(shí)現(xiàn)了基于Web的測震波形數(shù)據(jù)匯集和管理系統(tǒng),以小時(shí)為單位的顆粒度實(shí)現(xiàn)對全國測震臺(tái)網(wǎng)波形數(shù)據(jù)匯集情況的可視化,實(shí)現(xiàn)了對省級臺(tái)網(wǎng)、單個(gè)臺(tái)站波形數(shù)據(jù)運(yùn)行率的查詢統(tǒng)計(jì)。
(3)基于大數(shù)據(jù)技術(shù)的多副本技術(shù),相對于將數(shù)據(jù)放入NAS可以提高數(shù)據(jù)的安全性和完整性,同時(shí)在數(shù)據(jù)處理效率上也有了較大的提升,便于對海量測震波形數(shù)據(jù)的管理。
[1]劉瑞豐.中國地震臺(tái)網(wǎng)的建設(shè)與發(fā)展[J]. 地震地磁觀測與研究, 2016, 37(4): 201.
[2]郭凱, 黃金剛, 彭克銀, 等.數(shù)據(jù)技術(shù)在海量測震數(shù)據(jù)中的研究應(yīng)用[J].地震研究, 2017(2): 317-323.
[3]齊向明, 鄭帥, 魏萍.基于Hadoop的微陣列數(shù)據(jù)兩階段并行K近鄰基因提取[J]. 計(jì)算機(jī)工程, 2016(5): 54-59.
[4]李克然.基于云計(jì)算的電子商務(wù)數(shù)據(jù)管理模式研究[D].西安: 西安電子科技大學(xué), 2011.
[5]陳吉榮, 樂嘉錦. 基于Hadoop生態(tài)系統(tǒng)的大數(shù)據(jù)解決方案綜述[J].計(jì)算機(jī)工程與科學(xué), 2013(10): 25-35.
[6]黃妍.基于Hadoop的氣象信息云存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].成都: 電子科技大學(xué), 2016.
[7]劉瑞豐, 蔡晉安, 彭克銀, 等. 地震科學(xué)數(shù)據(jù)共享工程[J]. 地震, 2007(2): 9-16.
[8]TOM White. Hadoop權(quán)威指南[M].北京: 清華大學(xué)出版社, 2014.
[9]劉堅(jiān), 李盛樂, 戴苗, 等.基于Hbase的地震大數(shù)據(jù)存儲(chǔ)研究[J].大地測量與地球動(dòng)力學(xué), 2015, 35(5): 890-893.
[10]李永紅, 周娜, 趙國峰, 等.云計(jì)算環(huán)境下地震數(shù)據(jù)管理與服務(wù)應(yīng)用研究[J].震災(zāi)防御技術(shù), 2015, 10(Z):811-817.
[11]王丹寧, 柴旭超, 王文青.Hadoop平臺(tái)下的地震波形數(shù)據(jù)存儲(chǔ)與應(yīng)用規(guī)劃[J].軟件工程, 2016, 19(1): 48-49.
[12]陸宏治, 鄒時(shí)容. 一種基于SSD的高性能Hadoop系統(tǒng)的設(shè)計(jì)與應(yīng)用[J]. 科技資訊, 2015, 13(29): 1-2.
Design and Implementation of the Seismic Waveform Data Management System
GUO Kai, PENG Keyin, LEI Lei
(China Earthquake Networks Center, Beijing 100045)
In order to solve the performance bottleneck of seismic waveform data of the growing mass in the storage and management,based on the seismic business requirements, use the distributed fi le system of HDFS and distributed computing structure of Spark which based on the Hadoop big data technology to realize data storage and computation, and development of the seismic waveform data storage and management system based on Web, the realization of visualization management with massive seismic waveform data and query for data run rate.
big data, Hadoop, seismic data,distributed storage, management system
P315.73
A
10.3772/j.issn.1674-1544.2017.06.011
郭凱(1986—),男,碩士,中國地震臺(tái)網(wǎng)中心工程師,主要研究方向:測震數(shù)據(jù)處理與共享、大數(shù)據(jù)技術(shù)應(yīng)用(通訊作者);彭克銀(1964—),男,博士,中國地震臺(tái)網(wǎng)中心數(shù)據(jù)服務(wù)部主任,研究員,主要研究方向:科學(xué)數(shù)據(jù)管理;雷蕾(1983—),女,中國地震臺(tái)網(wǎng)中心助理工程師,主要研究方向:地震信息公共服務(wù)。
科技基礎(chǔ)性工作專項(xiàng)重點(diǎn)項(xiàng)目“科技基礎(chǔ)性工作數(shù)據(jù)資料集成與規(guī)范化整編”(2013FY110900);地震行業(yè)科研專項(xiàng)“中國全球地震臺(tái)網(wǎng)建設(shè)預(yù)研”(201508007)。
2017年7月14日。