郭凱 黃金剛 彭克銀 龐麗娜
摘要:對目前主要的大數(shù)據(jù)技術(shù)進(jìn)行探討,并對大數(shù)據(jù)計算方法在測震數(shù)據(jù)中應(yīng)用進(jìn)行分析,設(shè)計了基于大數(shù)據(jù)技術(shù)的測震數(shù)據(jù)存儲模型以及基于海量數(shù)據(jù)運(yùn)行率管理的計算模型,編寫了分別基于單機(jī)多線程和大數(shù)據(jù)環(huán)境的程序,并進(jìn)行對比實驗。結(jié)果表明:采用基于大數(shù)據(jù)技術(shù)的分布式管理和計算架構(gòu),可以較好地解決海量測震數(shù)據(jù)的管理困難、共享服務(wù)和科研計算方面的性能瓶頸。
關(guān)鍵詞:大數(shù)據(jù);測震數(shù)據(jù);分布式管理
中圖分類號:P31573文獻(xiàn)標(biāo)識碼:A文章編號:1000-0666(2017)02-0317-07
0引言
大數(shù)據(jù)一般指大小超出常規(guī)的數(shù)據(jù)庫獲取、存儲、管理和分析能力的數(shù)據(jù)集。大數(shù)據(jù)一般具有以下4個特征:大量化(VOLUME)、快速化(VELOCITY)、多樣化(VARIETY)和價值化(VALUE)。近年來,大數(shù)據(jù)技術(shù)在計算性能、無限擴(kuò)容等方面表現(xiàn)出巨大優(yōu)勢,因此,在醫(yī)學(xué)、金融、科研領(lǐng)域已經(jīng)得到了廣泛的應(yīng)用。
在“中國數(shù)字地震觀測網(wǎng)絡(luò)”項目完成后,我國的地震監(jiān)測能力得到了很大提高。相比“九五”期間,“十五”計劃完成后中國國家地震臺網(wǎng)中心的技術(shù)系統(tǒng)得到了全面提升,無論在接入臺站數(shù)量還是在數(shù)據(jù)處理效率上均有了較大的提升(侯建民等,2009)。2008年至2016年底,隨著監(jiān)測臺網(wǎng)的不斷完善和擴(kuò)大,存儲的測震連續(xù)波形數(shù)據(jù)已經(jīng)超過了100 TB,每年還在以約12 TB的增量數(shù)據(jù)進(jìn)行增加。如此海量的數(shù)據(jù),如何做好管理、服務(wù)、以及分析處理具有很大的挑戰(zhàn)性。以前基于文件、MySql數(shù)據(jù)庫等方法進(jìn)行管理的模式無論在數(shù)據(jù)管理、分析處理上都已經(jīng)出現(xiàn)了很大的瓶頸,時間和效率上已經(jīng)無法滿足現(xiàn)在地震科學(xué)數(shù)據(jù)管理和科研的需求。而隨著大數(shù)據(jù)技術(shù)的高速發(fā)展,其對海量數(shù)據(jù)的處理在IO并發(fā)、處理速度上都體現(xiàn)了極大的優(yōu)勢,山東省地震局(李永紅等,2015)、中國地震局第二監(jiān)測中心(王丹寧等,2016)、中國地震臺網(wǎng)中心等都在該方面開展了相關(guān)研究工作,本文主要探討大數(shù)據(jù)技術(shù)在測震數(shù)據(jù)上的應(yīng)用。
1大數(shù)據(jù)技術(shù)發(fā)展
11海量數(shù)據(jù)的存儲技術(shù)[BT)]
[KG(0.15mm]近年來,隨著數(shù)據(jù)量的高速增長,對數(shù)據(jù)進(jìn)行存儲、備份以及分析時,采用高性能集群和存儲的成本非常高昂。Google公司于2003年提出了GFS的文件存儲方法,面對的數(shù)據(jù)規(guī)模是TB級或者GB級,它采用價格低廉的存儲和計算機(jī)進(jìn)行穩(wěn)定高效的海量數(shù)據(jù)管理和計算分析。2006年谷歌公司提出了面向結(jié)構(gòu)化大數(shù)據(jù)的存儲模型——Bigtable,它是一個為管理大規(guī)模結(jié)構(gòu)化數(shù)據(jù)而設(shè)計的分布式存儲系統(tǒng),可以擴(kuò)展到PB級數(shù)據(jù)和上千臺服務(wù)器,能提供靈活、高性能的存儲解決方案。[KG)]
Hadoop-HDFS(Hadoop Distributed File System)是文件分布式系統(tǒng),起源于Apache Nutch,也是目前應(yīng)用最廣泛的大數(shù)據(jù)技術(shù)之一(Tom,2014)。Hadoop在2006 年2月成為一個獨(dú)立的Lucene子項目,是開放源碼并行運(yùn)算編程工具和分散式檔案系統(tǒng),憑借其開源和易用的特性,[HJ2mm]成為大數(shù)據(jù)處理的首選。HDFS采用了主從(Master/Slave)架構(gòu),一個集群有一個Master和多個Slave,前者稱為名字節(jié)點(diǎn)(NameNode),后者稱為數(shù)據(jù)節(jié)點(diǎn)(DataNode),放在HDFS上面的數(shù)據(jù)被分為一系列固定大小的數(shù)據(jù)塊(block)(許春玲,張廣泉,2010)。Hbase是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),對于任何應(yīng)用,Hbase在邏輯上都將所有數(shù)據(jù)存儲在一張表中(許闖等,2012)。
12海量數(shù)據(jù)的快速計算
MapReduce(大規(guī)模數(shù)據(jù)集并行運(yùn)算算法)使得數(shù)據(jù)處理人員只需要執(zhí)行簡單的運(yùn)算,而將并行化、容錯、數(shù)據(jù)存儲、負(fù)載均衡等數(shù)據(jù)處理細(xì)節(jié)放在一個標(biāo)準(zhǔn)庫里(Jeffrey,Sanjay,2004)。圖1為MapReduce的計算架構(gòu),數(shù)據(jù)在Map階段進(jìn)行切割,根據(jù)指定的Key組合為一個列表,然后根據(jù)Key值進(jìn)行分區(qū),在Reduce階段進(jìn)行計算合并。
Spark是近年來發(fā)展較快的分布式并行數(shù)據(jù)處理框架。MapReduce缺點(diǎn)在于Map和Reduce階段產(chǎn)生的數(shù)據(jù)存儲在硬盤上效率相對較低,且只能處理離線數(shù)據(jù),面對需求實時處理的數(shù)據(jù)就無法滿足需求。Spark和MapReduce的區(qū)別之一在于Spark把中間產(chǎn)生的數(shù)據(jù)放在了內(nèi)存中,并采用RDD(Resilient Distributed Datasets,彈性分布式數(shù)據(jù)集)來提高計算效率。
2大數(shù)據(jù)技術(shù)在測震數(shù)據(jù)中的應(yīng)用
IRIS DMC 是全球地震臺站最大的數(shù)據(jù)匯集中心和處理中心,世界各個地震研究中心和研究機(jī)構(gòu)通過Wilber、SeedLink、ArcLink、WebService等標(biāo)準(zhǔn)傳輸方式從IRIS DMC獲取數(shù)據(jù)。圖2為IRIS DMC在2006—2016年期間數(shù)據(jù)匯集和數(shù)據(jù)服務(wù)情況,從圖中可以明顯看到匯集的數(shù)據(jù)量不僅從2006年的幾十TB增長到現(xiàn)在將近400 TB,對外服務(wù)提供的數(shù)據(jù)量更是呈現(xiàn)爆發(fā)式增長,2016年的數(shù)據(jù)服務(wù)量比2006年增長了將近50倍,達(dá)到了900 TB。顯然,如果采用普通的數(shù)據(jù)管理和服務(wù)方式,尤其是在破壞性大地震發(fā)生后面對全球用戶的大量數(shù)據(jù)請求響應(yīng)和處理下載,是無法滿足規(guī)模日益增長的數(shù)據(jù)服務(wù)需求的。
中國地震臺網(wǎng)中心從最初接入的47個國家標(biāo)準(zhǔn)數(shù)字地震觀測臺站(趙永等,2002),到已經(jīng)實現(xiàn)了1 024個國家和區(qū)域地震臺站的測震波形數(shù)據(jù)實時傳輸和匯集(郭凱等,2016),監(jiān)測能力大幅提升的同時,需要實時處理和存儲的數(shù)據(jù)量也達(dá)到了之前20多倍。以前將數(shù)據(jù)備份到光盤、磁帶庫的方式在急速增長的數(shù)據(jù)量面前暴露出數(shù)據(jù)易損壞、恢復(fù)難、數(shù)據(jù)導(dǎo)入導(dǎo)出速度慢等諸多問題。從數(shù)據(jù)服務(wù)的角度,由于國家測震臺網(wǎng)西部分布相對稀疏,東部分布密集。如果M50~60地震發(fā)生在西部,震后時間波形數(shù)據(jù)由于臺站密度相對稀疏,需要處理的臺站數(shù)據(jù)相對較少。但如果發(fā)生在華北區(qū)域,按震中800 km選取地震臺站30 min數(shù)據(jù),最少需要處理300個臺站產(chǎn)生約05 GB的數(shù)據(jù),面對較多用戶的數(shù)據(jù)處理和下載請求時,對系統(tǒng)IO和并發(fā)處理能力提出了非常高的要求,普通服務(wù)器很難滿足。
21基于Hadoop的測震數(shù)據(jù)存儲模型架構(gòu)設(shè)計
中國地震臺網(wǎng)中心匯集的測震波形數(shù)據(jù)采用國際標(biāo)準(zhǔn)的Miniseed格式,以一個臺站一個分項512字節(jié)、每個數(shù)據(jù)包1天24個小時數(shù)據(jù)做為一個文件的形式存儲,目前所有的數(shù)據(jù)匯集在NAS存儲上,受限于網(wǎng)絡(luò)帶寬以及NAS機(jī)頭數(shù)量,傳輸速度很難超過100 M/s。在面對TB級規(guī)模的測震波形數(shù)據(jù),單純采用文件方式存儲在數(shù)據(jù)匯集的速度、穩(wěn)定性和安全性方面已經(jīng)無法滿足要求。
并發(fā)性性能受限于機(jī)頭性能優(yōu)于NAS隨系統(tǒng)規(guī)模增加呈線性增長[BG)F][JP]
[KG(0.15mm]目前國內(nèi)已開展的地震大數(shù)據(jù)存儲方式主要分為2種:①將數(shù)據(jù)按照原始格式導(dǎo)入Hbase中(王丹寧等,2016);②對原始測震波形數(shù)據(jù)進(jìn)行解壓縮,整理成ASCII碼放入Hbase中。由于Miniseed格式本身采用了Steim2的壓縮算法,直接將其放入Hbase,對于提取數(shù)據(jù)時的計算效率會有一定的影響,而將數(shù)據(jù)解壓成ASCII碼的形式,則增長的數(shù)據(jù)量達(dá)到了將近4倍,會造成很大的存儲消耗。從測震數(shù)據(jù)的使用需求來看,主要分為2種:①實時性計算,主要用于地震速報、地震預(yù)警和烈度速報等;②數(shù)據(jù)分析,主要對歷史數(shù)據(jù)進(jìn)行計算分析,如噪聲成像、區(qū)域速度結(jié)構(gòu)等科學(xué)研究領(lǐng)域。由于HDFS是為了處理大型數(shù)據(jù)集分析任務(wù)的,是為達(dá)到高的數(shù)據(jù)吞吐量而設(shè)計的,這就可能要求以高延遲作為代價。
基于測震數(shù)據(jù)的實際業(yè)務(wù)需求和匯集情況,并且考慮到數(shù)據(jù)存儲的成本,本文提出了如圖3所示的基于Hadoop的測震數(shù)據(jù)存儲架構(gòu)。將實時數(shù)據(jù)和近期1年的測震波形數(shù)據(jù)放入Hbase中存儲,這樣可以滿足對實時性計算要求較高的地震速報和地震預(yù)警要求;將歷史數(shù)據(jù)放入HDFS中,并采用1∶[KG-*2]3的比例進(jìn)行數(shù)據(jù)備份,提高了數(shù)據(jù)的安全性,并可以開展基于MapReduce和Spark的高效計算。
當(dāng)然,測震數(shù)據(jù)在Hbase中的存儲要結(jié)合實際的業(yè)務(wù)需求進(jìn)行設(shè)計。目前國家臺網(wǎng)中心采用基于JOPENS的SSS流服務(wù)器來負(fù)責(zé)接收和分發(fā)近實時波形數(shù)據(jù),接收數(shù)據(jù)為512字節(jié)的純數(shù)據(jù)SEED卷(Miniseed數(shù)據(jù)),包含有固定頭段部分(48字節(jié))和數(shù)據(jù)部分,主要記錄臺站名、通道名、記錄起始時間、樣本數(shù)目、測震數(shù)據(jù)等,以一個臺站一個分項(周輝等,2011)。劉堅等(2015)對測震數(shù)據(jù)存入Hbase的數(shù)據(jù)結(jié)構(gòu)進(jìn)行相關(guān)設(shè)計和研究,設(shè)計了Row Key 為
22數(shù)據(jù)管理和計算模型設(shè)計
測震波形數(shù)據(jù)質(zhì)量控制是數(shù)據(jù)共享和服務(wù)非常關(guān)鍵的一步,而運(yùn)行率是評估臺站數(shù)據(jù)質(zhì)量在一定時間范圍內(nèi)的一個重要指標(biāo)。如果以5年全國測震臺站波形數(shù)據(jù)1 024個臺站約65 TB數(shù)據(jù),每個臺站1個分項1小時運(yùn)行率作為基本單位進(jìn)行統(tǒng)計并存儲該小時段的運(yùn)行率,則產(chǎn)生的數(shù)據(jù)量超過了2億多條,而傳統(tǒng)的數(shù)據(jù)庫如Mysql在規(guī)模達(dá)到幾百萬條數(shù)據(jù)的時,檢索的速度就已經(jīng)達(dá)到了瓶頸,同時,計算如此海量的數(shù)據(jù),即使采用高性能計算機(jī)進(jìn)行數(shù)據(jù)運(yùn)行率檢索,也會受限于IO瓶頸和CPU的數(shù)量,計算的時間會非常漫長。
基于臺網(wǎng)中心目前的數(shù)據(jù)存儲情況以及本文設(shè)計的測震數(shù)據(jù)存儲模型,設(shè)計了一套基于Hadoop的分布式歷史數(shù)據(jù)運(yùn)行率檢索計算模型,同時兼容考慮了對實時流數(shù)據(jù)運(yùn)行率的實時檢索,如圖4所示。模型基于表2的數(shù)據(jù)存儲結(jié)構(gòu)將歷史數(shù)據(jù)首先導(dǎo)入HDFS中,采用Spark計算模式開展多節(jié)點(diǎn)的數(shù)據(jù)運(yùn)行率計算,以小時為周期將計算結(jié)果實時放入Hbase中,實時流數(shù)據(jù)的計算流程同歷史數(shù)據(jù)一樣,結(jié)果放入MySql,并按一定周期導(dǎo)入Hbase中。
[JP2]圖4中,自底向上分為3個層面。第1層是數(shù)據(jù)源層,主要包括地震波形數(shù)據(jù)文件以及測震實時流,最新的地震波形數(shù)據(jù)文件存儲在NAS存儲服務(wù)器上,可通過腳本將其掛載到本地進(jìn)行讀寫,歷史地震波形數(shù)據(jù)文件存儲在HDFS分布式文件系統(tǒng)中,用HDFS接口進(jìn)行存儲和訪問;第2層是處理層,主要完成系統(tǒng)所需要數(shù)據(jù)計算功能,主要提供基于歷史地震波形數(shù)據(jù)文件的連續(xù)率計算以及實時地震波形數(shù)據(jù)文件的連續(xù)率計算;第3層是云平臺中系統(tǒng)的數(shù)據(jù)持久層,主要提供處理層中各類計算結(jié)果的存儲,包括測震連續(xù)波形數(shù)據(jù)、索引數(shù)據(jù)以及臺站通道信息數(shù)據(jù)等。其中,連續(xù)率數(shù)據(jù)由于數(shù)據(jù)量巨大,將存儲在分布式數(shù)據(jù)庫Hbase中,通過Hbase接口進(jìn)行存儲和訪問處理;而其它類似基礎(chǔ)信息類的數(shù)據(jù),即數(shù)據(jù)量不大但處理響應(yīng)性能要求較高的數(shù)據(jù),將存儲在關(guān)系數(shù)據(jù)庫系統(tǒng)Mysql中,用JDBC/SQL進(jìn)行存儲和訪問處理。[JP]
23基于大數(shù)據(jù)架構(gòu)的測震數(shù)據(jù)計算測試
本次測試編寫了2個測震數(shù)據(jù)運(yùn)行率計算程序,分別為基于Hadoop的大數(shù)據(jù)計算版本和基于多線程的單機(jī)版本。這里主要介紹大數(shù)據(jù)計算版本的程序設(shè)計和執(zhí)行步驟:首先數(shù)據(jù)處理模塊的主線程獲取HDFS上的數(shù)據(jù)目錄集合,并將目錄集合以任務(wù)集的方式提交至計算節(jié)點(diǎn)進(jìn)行計算,計算節(jié)點(diǎn)每次取出一天的數(shù)據(jù)進(jìn)行計算,work從HDFS上取出某天目錄下的所有Miniseed文件依次進(jìn)行解析,每個Miniseed文件按512個字節(jié)為單位進(jìn)行讀取,讀取時需要對重復(fù)數(shù)據(jù)進(jìn)行選優(yōu)計算,ZooKeeper是一個開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Hadoop和Hbase的重要組件,提供的功能包括配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等;Hbase是一個分布式的、面向列的非結(jié)構(gòu)化開源數(shù)據(jù)庫,在縱向上可以提供無限擴(kuò)展能力;Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它通過Hadoop的并行加載機(jī)制來統(tǒng)一各類消息處理,也是為了通過集群來提供實時數(shù)據(jù)的緩存和消費(fèi);Spark 是一種與 Hadoop 相似的基于內(nèi)存的開源集群計算環(huán)境,由于Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。
測試數(shù)據(jù)采用2015年12月的全國測震波形數(shù)據(jù),數(shù)據(jù)量約1 TB。多線程版本測試將1個月的Miniseed文件保存在10519056服務(wù)器的硬盤上,目錄按每天1個文件夾進(jìn)行存放,通過多線程技術(shù)分別將1個月的文件進(jìn)行解析,測試結(jié)果如表5所示。
通過上面測試,發(fā)現(xiàn)大數(shù)據(jù)版本的處理時間僅為多線程版本的1/6,多線程版本的數(shù)據(jù)放在本地硬盤,受限制于文件讀取效率,而從HDFS文件系統(tǒng)讀取,不限制于硬盤讀取速率,且可以成倍的提高讀取解析效率;另外,如圖5所示,其中計算節(jié)點(diǎn)10519053(圖5a)上只有HDFS,所以上傳速率是30~40 M/s,下載速度為0,表示該節(jié)點(diǎn)在為spark運(yùn)算提供文件數(shù)據(jù);計算節(jié)點(diǎn)10519055(圖5b)上不僅有HDFS節(jié)點(diǎn),還有Spark計算節(jié)點(diǎn),上傳和下載速度約264 M/s,表明該節(jié)點(diǎn)不僅有Spark的work節(jié)點(diǎn)在接受并解析數(shù)據(jù),同時,該節(jié)點(diǎn)在向外發(fā)送數(shù)據(jù);計算節(jié)點(diǎn)10519056(圖5c)上也是不僅有HDFS節(jié)點(diǎn),同時有Spark計算節(jié)點(diǎn),但是上傳速率很低,說明該解析的數(shù)據(jù)并沒有存放在該節(jié)點(diǎn)上或存放量偏少。但是該節(jié)點(diǎn)文件接受速率為120 M/s,說明該節(jié)點(diǎn)在解析數(shù)據(jù)。由于本次測試的Hadoop集群配置的是千兆網(wǎng)卡,因此,120 M/s左右的速率為正常速率,220 M/s的上傳下載速度表明該節(jié)點(diǎn)不僅接受其他HDFS節(jié)點(diǎn)傳輸過來的數(shù)據(jù),同時在處理本機(jī)上的HDFS節(jié)點(diǎn)數(shù)據(jù)。綜上可知,通過Spark計算,還有一定提升空間,由于網(wǎng)絡(luò)帶寬達(dá)到上限,通過增加服務(wù)器的方式,對網(wǎng)絡(luò)進(jìn)行負(fù)載均衡,可以進(jìn)一步提升Spark解析任務(wù)的文件讀取效率,進(jìn)一步提升解析速度。
3結(jié)論
[KG(0.2mm]本文從測震數(shù)據(jù)存儲和共享科學(xué)計算的角度出發(fā),就大數(shù)據(jù)技術(shù)在海量測震數(shù)據(jù)的存儲和應(yīng)用方面進(jìn)行了相關(guān)研究,基于海量測震數(shù)據(jù)的實際業(yè)務(wù)需求和匯集情況,設(shè)計了一套分別將測震數(shù)據(jù)放入HDFS和Hbase的數(shù)據(jù)模型,并通過多副本的設(shè)定來保證數(shù)據(jù)的安全性;從測震數(shù)據(jù)質(zhì)量控制的需求出發(fā),提出了一個基于Hadoop Spark的海量數(shù)據(jù)運(yùn)行率計算模型,采用測震數(shù)據(jù)就傳統(tǒng)的多線程計算和基于Hadoop環(huán)境的集群計算做了對比實驗,實驗結(jié)果體現(xiàn)了大數(shù)據(jù)在海量數(shù)據(jù)處理上進(jìn)行分布式存儲和計算的強(qiáng)大的性能優(yōu)勢,該性能可以隨著參與計算節(jié)點(diǎn)的增加來進(jìn)行提升。因此,對于開展地震波形互相關(guān)、層析成像、區(qū)域速度結(jié)構(gòu)等研究,需要對海量測震波形數(shù)據(jù)分析處理的地震科研人員來說,可以大大提高效率,使處理速度達(dá)到之前的幾倍、幾十倍甚至更多,體現(xiàn)了大數(shù)據(jù)技術(shù)在地震行業(yè)的利用價值。[KG)]
[HTK]本文在撰寫過程中得到孟令媛副研究員、南京云創(chuàng)大數(shù)據(jù)公司馬鳴、汪洲權(quán)的幫助,在此向他們表示衷心感謝。[KH*1D]
參考文獻(xiàn):
郭凱,溫瑞智,楊大克,等2016地震預(yù)警系統(tǒng)的效能評估和社會效益分析[J].地震學(xué)報,38(1):146-154
侯建民,黃志斌,余書明,等2009中國國家地震臺網(wǎng)中心技術(shù)系統(tǒng)[J].地震學(xué)報,31(6):684-690
李永紅,周娜,趙國峰,等2015云計算環(huán)境下地震數(shù)據(jù)管理與服務(wù)應(yīng)用研究[J].震災(zāi)防御技術(shù),10(增刊1):811-817
劉堅,李盛樂,戴苗,等2015基于Hbase的地震大數(shù)據(jù)存儲研究[J].大地測量與地球動力學(xué),35(5):890-893
王丹寧,柴旭超,王文青2016Hadoop平臺下的地震波形數(shù)據(jù)存儲與應(yīng)用規(guī)劃[J].軟件工程,19(1):48-49
許闖,劉鵬,劉志忠,等2012一種基于HBase的本體復(fù)用新方法[J].計算機(jī)技術(shù)與發(fā)展,22(6):57-60
許春玲,張廣泉2010分布式文件系統(tǒng)Hadoop HDFS與傳統(tǒng)文件系統(tǒng)Linux FS的比較與分析[J].蘇州大學(xué)學(xué)報(工科版),34(1):5-9
趙永,薛峰,劉陽,等2002國家數(shù)字地震臺網(wǎng)中心技術(shù)系統(tǒng)與服務(wù)[J].地震地磁觀測與研究,23(1):16-23
周輝,申學(xué)林,王文青,等2011通用測震數(shù)據(jù)獲取軟件包的設(shè)計與實現(xiàn)[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