郭凱 黃金剛 彭克銀 龐麗娜
摘要:對目前主要的大數據技術進行探討,并對大數據計算方法在測震數據中應用進行分析,設計了基于大數據技術的測震數據存儲模型以及基于海量數據運行率管理的計算模型,編寫了分別基于單機多線程和大數據環境的程序,并進行對比實驗。結果表明:采用基于大數據技術的分布式管理和計算架構,可以較好地解決海量測震數據的管理困難、共享服務和科研計算方面的性能瓶頸。
關鍵詞:大數據;測震數據;分布式管理
中圖分類號: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 為
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