陳亞杰 王鋒,2? 鄧輝 劉應波
(1昆明理工大學云南省計算機技術應用重點實驗室 昆明 650500) (2中國科學院云南天文臺 昆明 650011)
E lasticSearch分布式搜索引擎在天文大數(shù)據(jù)檢索中的應用研究?
陳亞杰1王鋒1,2?鄧輝1劉應波1
(1昆明理工大學云南省計算機技術應用重點實驗室 昆明 650500) (2中國科學院云南天文臺 昆明 650011)
天文觀測數(shù)據(jù)是天文研究的基礎,但傳統(tǒng)的集中式數(shù)據(jù)檢索方法已難以滿足日益增長的海量天文數(shù)據(jù)的高性能檢索和查詢需求.提出了一種基于ElasticSearch分布式搜索引擎,通過River機制對現(xiàn)有的海量FITS(Flexib le Image Transport System)數(shù)據(jù)進行索引構建,從而實現(xiàn)海量FITS數(shù)據(jù)高效檢索的方法,并討論了其中的近實時檢索和查詢的關鍵技術.實測結果表明,在百萬到千萬級的天文數(shù)據(jù)量下,該方法可獲得極高的檢索性能,并能夠很方便地集成到現(xiàn)有的天文數(shù)據(jù)歸檔系統(tǒng)中,完全可以滿足當前國內各類望遠鏡系統(tǒng)天文數(shù)據(jù)的歸檔要求.
方法:數(shù)值,方法:解析,天文數(shù)據(jù)庫:其他諸多方面
FITS(Flexible Image Transport System)[1]是國際天文學聯(lián)合會(IAU)于1982年確定的用于各天文臺之間數(shù)據(jù)傳輸、交換的統(tǒng)一標準格式,是天文學界常用的數(shù)據(jù)格式.目前,大量的天文數(shù)據(jù)都以FITS格式進行存儲.隨著天文觀測技術和數(shù)據(jù)獲取及處理技術的逐漸成熟,各天文觀測站獲取的天文FITS數(shù)據(jù)已經(jīng)非常龐大[2];此外,由于不同觀測站根據(jù)其自身的考慮會采用不同的存儲規(guī)范,FITS數(shù)據(jù)文件基本沒有完全統(tǒng)一的存儲標準.因此,在當前海量數(shù)據(jù)增長背景下,對海量的FITS數(shù)據(jù)進行統(tǒng)一、高效以及近實時的檢索成為天文學領域亟待解決的一個難題.
采用分布式[3?4]的存儲方式是應對海量數(shù)據(jù)的有效措施.Crestani等人討論了基于云的海量數(shù)據(jù)存儲與檢索問題[5];Berrim an等人討論了基于云的數(shù)據(jù)存儲在天文領域中的應用[6].由此可見,基于云的分布式數(shù)據(jù)管理方式具有有效應對海量FITS數(shù)據(jù)存儲與檢索問題的可行性.之前,已有很多研究人員對FITS數(shù)據(jù)的存儲和檢索問題做了一些很有價值的研究.樊東衛(wèi)等人設計了FITS文件管理器,實現(xiàn)了對中小型規(guī)模FITS文件的管理[7];王歆設計并實現(xiàn)了基于非關系型數(shù)據(jù)庫的圖像數(shù)據(jù)庫系統(tǒng)[8?9];劉應波等人分析了使用NoSQL對可變FITS文件頭元數(shù)據(jù)進行存儲和檢索的可行性[10];崔辰州等人采用存儲FITS頭的方式,實現(xiàn)了通過FITS頭對FITS文件的存儲與檢索[11].FITS數(shù)據(jù)對于天文學的研究來說非常重要,然而,FITS數(shù)據(jù)的海量性以及其非結構化的特性,為其高效存儲和檢索帶來了難題.本文結合前人的研究,繼續(xù)探究海量天文FITS數(shù)據(jù)的存儲和檢索問題,在使用分布式搜索引擎ElasticSearch關鍵技術的基礎上,分析并研究了對海量FITS數(shù)據(jù)進行高效檢索的可行性解決方案.
2.1 FITS文件
FITS文件由文件頭和數(shù)據(jù)矩陣兩部分組成.文件頭能夠唯一標識一個FITS文件,其中包含了FITS文件的標識符、FITS數(shù)據(jù)的來源、圖像的維數(shù)、每個維的大小、圖像的大小、圖像的最大值和最小值、波長、經(jīng)度、緯度、圖像觀測者和望遠鏡、觀測目標、拍攝日期、拍攝時間等一系列描述FITS文件的信息.除固定長的FITS文件頭信息外,其他部分均為文件的具體數(shù)據(jù).然而,不同的天文觀測站都有其實施規(guī)范,存儲的天文FITS數(shù)據(jù)也都有其獨特的風格,并且不同F(xiàn)ITS文件描述的天文信息也不盡相同,并不是所有的FITS文件頭中都含有相同的信息.文中采用存儲FITS文件頭的方式實現(xiàn)對FITS數(shù)據(jù)的存儲,為了對FITS數(shù)據(jù)進行統(tǒng)一管理,需要將FITS文件頭處理成為一種統(tǒng)一的規(guī)范.
2.2 FITS文件頭
FITS文件頭由80字符長的行記錄組成,其中行記錄是用ASCII字符串寫成的.它由N個記錄構成,每個記錄由關鍵字、值和注釋3個部分組成,值和注釋部分可為空.每個FITS文件的文件頭中必須含有SIMPLE、BITPIX、NAXIS和END這4個關鍵字信息,并且這4個關鍵字的順序是一定的,它們之間可以存在其他關鍵字.第1個關鍵字必須為SIMPLE,標識此文件是否為FITS標準格式;最后一個關鍵字必須為END,作為文件結束標志;關鍵字BITPIX表示圖像數(shù)據(jù)的格式,其值為8、16、32、?32或?64;NAXIS表示圖像數(shù)據(jù)矩陣的維數(shù),NAXIS不為0時,其后緊跟著的關鍵字表示每個維的大小[12].
由于不同F(xiàn)ITS數(shù)據(jù)的文件頭中的N個記錄并不完全相同,這就給所有FITS文件的統(tǒng)一規(guī)范存儲造成了不便.然而每個FITS文件的文件頭能夠唯一標識一個FITS文件.因此,可以將所有不同F(xiàn)ITS文件頭的所有記錄抽取出來形成文件頭集合,集合中的每個元素作為一個記錄項,這樣,每條記錄便可作為一個FITS文件的元數(shù)據(jù)來標識此文件.則一個FITS文件的元數(shù)據(jù)集合可表示為:
由此,提取出每個FITS文件的元數(shù)據(jù),將每個FITS文件的元數(shù)據(jù)作為一行記錄標識一個FITS文件,便可實現(xiàn)在關系型數(shù)據(jù)庫中按文件頭統(tǒng)一存儲FITS元數(shù)據(jù),為數(shù)據(jù)檢索和訪問提供條件.
分布式搜索引擎(ElasticSearch)[13]是一個開源的、基于Lucene1h ttp://lucene.apache.org/的分布式搜索引擎. ElasticSearch可以提供穩(wěn)定、實時、可靠的檢索服務,具有高可用、易擴展以及近實時的特點.它采用REST ful的架構風格,提供了簡單易用的查詢和共享接口;使用GET獲得請求對象的當前狀態(tài),使用POST改變請求對象的狀態(tài),使用PUT創(chuàng)建一個新對象,使用DELETE刪除請求對象.
ElasticSearch擁有的River機制使得用戶可以并行地將大量數(shù)據(jù)快速同步到集群.另外,使用ElasticSearch能夠方便地為數(shù)據(jù)建立索引,可將一個索引分割成多個索引分片(索引分片數(shù)可由用戶指定,默認為5),然后將多個分片均衡地分布在集群的所有可用節(jié)點上,形成分布式結構,減輕了單個節(jié)點的負擔.在ElasticSearch集群中,還可以為每個索引分片設置副本(副本數(shù)仍然可以由用戶自行指定,默認為1),當某索引分片失效時,可以及時使用副本恢復數(shù)據(jù).ElasticSearch還擁有自動發(fā)現(xiàn)節(jié)點機制和快速數(shù)據(jù)恢復機制,當有新節(jié)點加入集群時,ElasticSearch可及時發(fā)現(xiàn)并自動重新進行負載均衡,為新節(jié)點分配數(shù)據(jù);當某節(jié)點失效時,它同樣會自動重新為可用節(jié)點分配數(shù)據(jù).
天文觀測站每天都在不停地觀測,隨著時間的推進和大型天文望遠鏡技術的日益成熟,天文數(shù)據(jù)逐漸累積,天文觀測站正面臨PB級海量天文數(shù)據(jù)的存儲和檢索問題[8].關系型數(shù)據(jù)庫已逐漸無法容納這些快速增長的天文數(shù)據(jù),隨著數(shù)據(jù)量的暴增,其存儲和檢索效率也越來越低.雖然,通過元數(shù)據(jù)可實現(xiàn)對非結構化FITS數(shù)據(jù)的存儲,但是,海量的數(shù)據(jù)卻難以使用單機來解決.將分布在不同地域用于存儲數(shù)據(jù)的機器組成集群,形成分布式結構,可解決海量數(shù)據(jù)的統(tǒng)一管理問題;當數(shù)據(jù)量持續(xù)增加時,只需要在集群中增加節(jié)點,而無需改變已有數(shù)據(jù)和節(jié)點.
如2.2節(jié)所述,提取FITS元數(shù)據(jù),將每個FITS文件的元數(shù)據(jù)作為一行記錄寫入關系型數(shù)據(jù)庫SQLServer,可實現(xiàn)對FITS文件元數(shù)據(jù)的結構化管理.然而,當FITS數(shù)據(jù)的數(shù)據(jù)量較大時,相應地,元數(shù)據(jù)記錄也會隨之增長.隨著元數(shù)據(jù)記錄的增長,其檢索效率將會受到影響,而使用分布式的方式進行檢索和訪問將能夠大大提高其效率. ElasticSearch能夠利用自身機制將不同數(shù)據(jù)庫中的數(shù)據(jù)并行導入到ElasticSearch分布式集群,因此,利用ElasticSearch分布式檢索集群可以很方便地解決FITS數(shù)據(jù)的海量性帶來的難題.所以,使用關系型數(shù)據(jù)庫存儲FITS元數(shù)據(jù),不斷將數(shù)據(jù)庫中的數(shù)據(jù)同步到ElasticSearch分布式集群,利用ElasticSearch對海量數(shù)據(jù)進行統(tǒng)一的分布式管理具有一定的可行性.
4.1 FITS數(shù)據(jù)處理流程
基于ElasticSearch的FITS數(shù)據(jù)處理流程如圖1所示.首先,從FITS文件中提取出FITS文件頭的行記錄信息,將每個記錄作為關系型數(shù)據(jù)庫表中的一個字段,則表中一行記錄便可唯一標識一個FITS文件;然后,將FITS文件頭記錄批量導入關系型數(shù)據(jù)庫.使用ElasticSearch提供的JDBC的River插件2h ttps://github.com/jp ran te/elasticsearch-jdb c4可方便快速地將關系型數(shù)據(jù)庫中的FITS元數(shù)據(jù)導入ElasticSearch集群;然后,使用ElasticSearch分布式檢索集群便可對海量FITS數(shù)據(jù)進行快速、穩(wěn)定的檢索.
圖1 FITS數(shù)據(jù)處理流程Fig.1 The p rocessing flow of FITS data
4.2 FITS元數(shù)據(jù)提取
由2.2節(jié)所述,不同組織機構在存儲FITS文件時,根據(jù)自身需要,關注的元數(shù)據(jù)信息可能并不相同,所以寫入FITS頭的內容也存在不同.本文在實驗過程中提取FITS頭的所有Key/Value字段,每個Key作為關系型數(shù)據(jù)庫的一列,對應的Value構成了關系型數(shù)據(jù)庫中的一行數(shù)據(jù).
使用JAVA類庫jfits-0.94.jar訪問FITS文件3h ttp://www.eso.org/p?grosbo l/fits java/jfits.h tm l,通過類庫中FitsFile類的getHDUnit方法返回一個FitsHDUnit類的對象,通過該FitsHDUnit類對象的getHearder方法返回一個FitsHeader類的對象,然后通過該FitsHeader類對象的getKeywords方法獲取FITS文件頭的行記錄關鍵字列表.由此,可批量提取每個FITS文件的文件標識記錄.將提取出的每個FITS文件頭的關鍵字列表作為獨立一行,提取所有FITS文件頭統(tǒng)一寫入關系型數(shù)據(jù)庫SQLServer.
4.3 FITS元數(shù)據(jù)的索引構建
提取出FITS的標識字段信息寫入內存緩存區(qū)或臨時文件后,從緩存中獲取數(shù)據(jù),將存儲的所有FITS標識記錄寫入數(shù)據(jù)庫的相應數(shù)據(jù)表中,數(shù)據(jù)寫入流程如圖2所示.
圖2 FITS記錄寫入數(shù)據(jù)庫流程圖Fig.2 The flow chart of the FITS records w ritten in to the database
當關系型數(shù)據(jù)庫中存儲的數(shù)據(jù)量超過一定程度的時候,其檢索效率會大大降低,而將這些數(shù)據(jù)導入ElasticSearch分布式檢索集群,采用分布式結構進行存儲和檢索,將會大大提高數(shù)據(jù)的檢索效率.使用ElasticSearch中JDBC的River插件可將數(shù)據(jù)快速導入ElasticSearch集群,并建立索引,以400萬條記錄的索引構建為例,構建方式如圖3.
使用圖3所示方式為數(shù)據(jù)構建索引后,可以根據(jù)需要構造查詢條件,可方便地進行結構化查詢,這極大地降低了索引開發(fā)管理的難度,其示意圖如圖4、圖5所示.
此外,由于ElasticSearch本身提供了分布式集群方式的檢索管理機制,因此,除了對單一元數(shù)據(jù)建立索引之外,使用ElasticSearch還能夠方便地對元數(shù)據(jù)庫集群建立索引.
圖3 在SQLServer數(shù)據(jù)庫上通過R iver構建索引Fig.3 Bu ild ing the index in the SQLServer database by using the R iver
圖4 索引構建示意圖Fig.4 The schem atic d iagram of the index bu ild ing
圖5 結構化查詢示意圖Fig.5 The schem atic d iagram of the structu red query
5.1 實驗數(shù)據(jù)
本實驗使用1 600萬條模擬數(shù)據(jù)來完成.4.2節(jié)提取出的每個FITS元數(shù)據(jù)作為數(shù)據(jù)表的一行記錄.實驗中,將1 600萬條數(shù)據(jù)分成400萬條、800萬條、1 200萬條和1 600萬條4組,在不同條件下進行不同測試.
5.2 實驗環(huán)境
在w indows7(CPU為Pentium(R)Dual-Core CPU E6500@2.93GHz,內存為4G)下,使用IntelliJ IDEA 14.0.2編譯器編寫JAVA程序來提取FITS文件的元數(shù)據(jù)信息,并將數(shù)據(jù)批量導入SQLServer數(shù)據(jù)庫中;根據(jù)已導入的數(shù)據(jù)使用sql data generator隨機生成更多數(shù)據(jù).使用系統(tǒng)配置為Quad-Core AMD Op teron(TM)Processor 2352 CPU@2.10 GHz,內存為4G的服務器(操作系統(tǒng)為CentOS release 6.4)配置ElasticSearch分布式搜索引擎.測試工具為JM eter.
5.3 實驗結果
實驗中共設置以下4個查詢條件進行測試:
Q1.查詢2015年1月11日拍攝的天文圖像;
Q2.查詢緯度為45°(即:latitude=45°)的天文圖像;
Q3.查詢緯度和經(jīng)度均為45°(即:latitude=45°且longitude=45°)的天文圖像;
Q4.查詢2015年拍攝的,并且經(jīng)緯度均在45°到90°之間(即年份為2015,45°<latitude<90°且45°<longitude<90°)的天文圖像.
測試分為2組進行:
TEST 1:單機環(huán)境下的測試
測試在4個條件下進行查詢時,當數(shù)據(jù)量逐漸增加時,其查詢響應時間的變化規(guī)律.
TEST 2:多機擴展環(huán)境下的測試
測試某一固定條件下,在集群節(jié)點數(shù)逐漸增加時,其查詢響應時間的變化規(guī)律.
響應時間的測試工具為JMeter,使用10組100個線程,模擬同時進行100個并發(fā)用戶的訪問,最后取10組結果的平均值.
5.3.1 單機實驗
為了對比,先設計單機實驗,實驗使用ElasticSearch的默認設置(分片數(shù)為5,副本數(shù)為1).單機測試即ElasticSearch集群中只有一個節(jié)點的情況:僅有一個節(jié)點時,所有索引分片全部分配在這個唯一節(jié)點上,副本分片未分配,此時集群狀態(tài)為亞健康狀態(tài).
在單機實驗中,構建ElasticSearch標準的查詢條件進行測試,以在400萬條數(shù)據(jù)情況下Q4的查詢?yōu)槔?其查詢條件構建方式如圖6所示.
按照圖6所示方式構建查詢條件進行查詢,分別測試了查詢條件Q1-Q4,在數(shù)據(jù)量為400萬條、800萬條、1 200萬條和1 600萬條4種情況下得到結果條數(shù)和查詢響應時間.所有查詢的結果數(shù)量如表1所示,查詢響應時間如圖7所示.
圖6 Q 4在400萬條數(shù)據(jù)下的查詢條件構建Fig.6 The query cond ition build ing of Q 4 w hen the num ber of the data is 4 m illion
圖7 單機下查詢響應時間Fig.7 T he resp onse tim e of query in a single com pu ter
表1 查詢結果數(shù)(單位:萬條)Tab le 1 The num ber of the query resu lts(un it:ten thousand)
如表1和圖7所示,在同一條件下,隨著數(shù)據(jù)量的增加,顯然,查得的結果數(shù)量相應增加,而且查詢響應時間隨之增加;此外,不同的查詢條件在數(shù)據(jù)量相同時,其響應時間也有差距.圖7表明,在同一查詢條件下,查詢響應時間與數(shù)據(jù)量成正相關;數(shù)據(jù)量相同時,查詢響應時間與查詢條件的復雜程度也成正相關.
5.3.2 多機擴展實驗
在多機擴展實驗中,集群節(jié)點數(shù)逐漸增加,當節(jié)點數(shù)大于等于2時,所有分片(包括副本分片)都被均衡地分配到所有可用節(jié)點上,此時集群狀態(tài)為健康狀態(tài).為研究集群中節(jié)點數(shù)對查詢響應時間的影響,在條件Q1下,每增加一個節(jié)點,就分別查詢一次在不同數(shù)據(jù)量情況下Q1的查詢響應時間.
在400萬條數(shù)據(jù)的情況下,其查詢條件構建方式如圖8所示.
圖8 Q 1在400萬條數(shù)據(jù)下的查詢條件構建Fig.8 The query cond ition bu ild ing of Q 1 w hen the num ber of data is 4 m illion
使用相同的方式構建查詢條件進行測試,在不同數(shù)據(jù)量和不同節(jié)點數(shù)情況下,其查詢響應時間結果如圖9所示.
圖9表明,在不同數(shù)據(jù)量下,當集群節(jié)點數(shù)增加時,查詢響應時間都會隨之降低;隨著節(jié)點數(shù)的增加,響應時間會逐漸趨于平穩(wěn);但是,對于不同的數(shù)據(jù)量,響應時間達到穩(wěn)定的節(jié)點數(shù)卻不相同,例如:在400萬條數(shù)據(jù)量的情況下,節(jié)點數(shù)到達3時,響應時間便開始趨于穩(wěn)定;而在1 600萬條數(shù)據(jù)量的情況下,節(jié)點數(shù)到達5時,響應時間才趨于穩(wěn)定.在集群節(jié)點數(shù)增加到一定值時,查詢響應時間總會達到盡可能的最小值,因此,對于海量數(shù)據(jù)的檢索來說,只需要根據(jù)數(shù)據(jù)量增加集群節(jié)點數(shù),對分布式檢索集群進行水平擴展便可達到高效檢索的目的.
圖9 多機集群下查詢響應時間Fig.9 The response tim e of query in the cluster
由于天文數(shù)據(jù)的急速增長和海量觀測數(shù)據(jù)的檢索需要,傳統(tǒng)的關系型數(shù)據(jù)庫在存儲和檢索海量數(shù)據(jù)時存在著諸多的不足,本文研究了一種基于ElasticSearch分布式搜索引擎的天文海量FITS數(shù)據(jù)的高效檢索方法.通過存儲FITS文件元數(shù)據(jù)的方式,實現(xiàn)了FITS數(shù)據(jù)的統(tǒng)一存儲;利用ElasticSearch對索引的易擴展、易管理和易維護的特點來解決海量FITS數(shù)據(jù)的高效檢索問題.實驗證明,這種基于ElasticSearch的海量數(shù)據(jù)檢索方法在檢索效率和擴展性方面都有較大優(yōu)勢,可以滿足用戶高效檢索的需求.論文研究的方法不僅僅適用于天文FITS數(shù)據(jù),也可以為其他天文數(shù)據(jù)格式提供參考和借鑒.
[1]Pence W D,Ch iappetti L,Page C G,et al.A&A,2010,524:A 42
[2]Lin Q,Lu X M,Jiang X J.New A,2013,21:33
[3]And reeva J,An jum A,Barrass T,et a l.ITNS,2005,52:884
[4]X iao W,Ji C L,Li J D.AMM,2013,303:2235
[5]C restani F,M arkov I.Advances in In form ation Retrieval,2013,7814:865
[6]Berrim an G B,G room S L.Comm un ications of the ACM,2011,54:52
[7]樊東衛(wèi),崔辰州,趙永恒.天文研究與技術,2011,8:306
[8]王歆.天文學報,2013,54:382
[9]W ang X.ChA&A,2014,38:211
[10]劉應波,王鋒,季凱帆,等.計算機應用研究,2015,32:461
[11]崔辰州,李文,于策,等.天文研究與技術,2008,5:116
[12]季凱帆,曹文達,宋謙.云南天文臺臺刊,1996:60
[13]Ra faˊl K,M arek R.E lasticSearch可擴展的開源彈性搜索解決方案.時金橋,柳廳文,徐菲,等,譯.北京:電子工業(yè)出版社,2015:25
The A pp lication of E lasticSearch in the M assive A stronom ical Data Retrieval
CHEN Ya-jie1WANG Feng1,2DENG Hui1LIU Ying-bo1
(1 Yunnan K ey Labo ra tory of Com pu ter Techno logy A pp lica tion,K unm ing U n iversity of Science an d Techno logy,Kunm ing 650500) (2 Yunnan A stronom ica l O bserva to ries,Chinese A cadem y of Sciences,K unm ing 650011)
Astronom ical observational data are the fundamental element formodern astronom ical researches.However,with the rapid increase of astronom ical data,the traditional centralized retrievalmethods are hard to meet the requirements of highperformance data retrieval.In the study,we present a novelmethod which is based on the ElasticSearch distributed retrieval engine and River mechanism to create data indexes,and provide high performance data retrieval for massive FITS(Flexible Image Transport System)data.We discuss the key technologies of the nearly real-time retrieval and query.The experimental results show that themethod is capable of obtaining high retrieval performance especially for the cases in which the number of the FITS data exceedsm illions or even tens of m illions.Meanwhile,themethod can be easily integrated into the current astronom ical data archiving system s,and completely meet the archive requirements of all kinds of astronom ical telescope systems.
methods:numerical,methods:analytical,astronom ical databases:m iscellaneous
P112
A
10.15940/j.cnki.0001-5245.2016.02.011
2015-09-21收到原稿,2015-10-06收到修改稿
?國家自然科學基金項目(U1231205,11303011,11263004,11463003,11163004)及云南省應用基礎基金重點項目(2013FA 013,2013FA 032)資助
?w f@cnlab.net