過匯卿 王 梅 樂嘉錦
(東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 上海 201620)
?
一種面向CASA的分布式數(shù)據(jù)存儲(chǔ)策略
過匯卿 王 梅 樂嘉錦
(東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 上海 201620)
隨著天文設(shè)備的進(jìn)步發(fā)展,對海量天文數(shù)據(jù)處理形成了新的挑戰(zhàn)。為使當(dāng)前主流的天文數(shù)據(jù)分析軟件可以有效處理海量數(shù)據(jù),提出一種適用于射電天文處理上層應(yīng)用的分布式數(shù)據(jù)存儲(chǔ)策略DDSS(Distributed Data Storage Strategy)。首先,設(shè)計(jì)分布式數(shù)據(jù)存儲(chǔ)策略的系統(tǒng)框架。其次,設(shè)計(jì)混合分片列式存儲(chǔ)方法,在保留列存儲(chǔ)查詢優(yōu)勢的同時(shí)提升了數(shù)據(jù)導(dǎo)入的速度。進(jìn)一步,通過維護(hù)基于相對位置映射的元數(shù)據(jù)來快速讀取包含大量數(shù)據(jù)的天文陣列數(shù)據(jù),顯著地提升了天文處理應(yīng)用底層數(shù)據(jù)讀寫的吞吐量。最后,通過實(shí)驗(yàn)證明了該方法的有效性。
分布式 天文 陣列數(shù)據(jù)
伴隨著信息爆炸,大數(shù)據(jù)時(shí)代已經(jīng)走入各行各業(yè),在諸如天文學(xué)、物理學(xué)、社會(huì)科學(xué)等行業(yè)中正源源不斷的產(chǎn)生真正的海量大數(shù)據(jù)。然而,這些行業(yè)在解決大數(shù)據(jù)所帶來數(shù)據(jù)讀寫與處理緩慢問題的方法卻滯后于其數(shù)據(jù)產(chǎn)生的速度。在射電天文領(lǐng)域,隨著射電望遠(yuǎn)鏡設(shè)備的飛躍發(fā)展,望遠(yuǎn)鏡所能觀測和產(chǎn)生的數(shù)據(jù)量早已超出了當(dāng)前主流的天文學(xué)數(shù)據(jù)處理軟件的承載能力。為此,急需將計(jì)算機(jī)數(shù)據(jù)處理的前沿技術(shù)如列存儲(chǔ)、分布式等應(yīng)用到當(dāng)前成熟的處理軟件中,以應(yīng)對海量天文數(shù)據(jù)所帶來的挑戰(zhàn)和沖擊。
射電天文領(lǐng)域中,天文學(xué)家主要采用的數(shù)據(jù)處理軟件有AIPS,AIPS++以及CASA等。其中,CASA[1]是當(dāng)前主流的射電天文數(shù)據(jù)處理和分析軟件。它由AIPS++發(fā)展而來,提供基于二維表的數(shù)據(jù)模型來處理和分析射電天文數(shù)據(jù)。CASA通過調(diào)用casacore[2]庫中封裝的原AIPS++處理程序,實(shí)現(xiàn)各種數(shù)據(jù)分析和處理。然而,由于casacore底層實(shí)現(xiàn)的限制,只可以單節(jié)點(diǎn)串行地處理數(shù)據(jù),這使得CASA需要極高的單點(diǎn)硬件性能。并且由于其不具備擴(kuò)展性,難以應(yīng)對大數(shù)據(jù)流量下高效的數(shù)據(jù)讀寫需求。
另一方面,正如大部分科學(xué)數(shù)據(jù),射電天文數(shù)據(jù)包含大量的陣列數(shù)據(jù),近年來,針對以陣列(Array)為主要數(shù)據(jù)形式的科學(xué)數(shù)據(jù)庫也得到了廣泛的研究。如基于傳統(tǒng)關(guān)系模型的陣列數(shù)據(jù)庫SciDB[3,4]以及基于Hadoop的數(shù)據(jù)庫SciHadoop[5,6]等。SciDB是一個(gè)針對科學(xué)數(shù)據(jù)的分布式數(shù)據(jù)庫,其數(shù)據(jù)模型是基于多維的陣列,這樣就打破了傳統(tǒng)數(shù)據(jù)庫固定表結(jié)構(gòu)的限制,使其具備了對陣列進(jìn)行的操作運(yùn)算的功能。SciHadoop將科學(xué)家輸入的基于陣列數(shù)據(jù)模型的邏輯查詢語句轉(zhuǎn)化為map/reduce程序進(jìn)行執(zhí)行。上述研究均對陣列數(shù)據(jù)的分布式存儲(chǔ)和查詢進(jìn)行了研究,然而其并非針對射電天文數(shù)據(jù)處理,因此其查詢難以滿足天文領(lǐng)域?qū)﹃嚵袛?shù)據(jù)的眾多運(yùn)算。若使用其提供的上層接口與天文軟件對接,由于接口調(diào)用使得數(shù)據(jù)吞吐率低,影響了性能。
針對上述問題,本文提出了面向海量天文數(shù)據(jù)處理,適用于射電天文學(xué)數(shù)據(jù)分析軟件CASA的分布式數(shù)據(jù)存儲(chǔ)策略DDSS。DDSS通過重寫CASA底層的文件存儲(chǔ)管理模塊,在不修改任何上層應(yīng)用接口的情況下解決了其只支持集中式、串行的數(shù)據(jù)讀寫機(jī)制,實(shí)現(xiàn)了并行化讀寫數(shù)據(jù)和分布式存儲(chǔ)數(shù)據(jù)。DDSS首先根據(jù)陣列數(shù)據(jù)類型與普通數(shù)據(jù)類型混合的特點(diǎn),采用了行列混合分片的方法,分片時(shí)保證每個(gè)數(shù)據(jù)片段大小均勻,在不影響寫入效率的同時(shí)保留了其讀取某一屬性的高效性。進(jìn)一步,在寫數(shù)據(jù)的同時(shí),維護(hù)基于數(shù)據(jù)相對位置映射的元數(shù)據(jù)文件,以提高陣列數(shù)據(jù)讀取時(shí)的效率。實(shí)驗(yàn)測評表明,所提策略在寫數(shù)據(jù)與讀數(shù)據(jù)的吞吐量都有了顯著的提高,其數(shù)據(jù)寫入性能提升了6.8倍,數(shù)據(jù)讀取性能提升了3.4倍。同時(shí)也驗(yàn)證了陣列數(shù)據(jù)的大小并不會(huì)影響系統(tǒng)的性能,系統(tǒng)具有較好的可擴(kuò)展性。
CASA是一個(gè)融合了射電天文數(shù)據(jù)圖形化、數(shù)據(jù)分析、數(shù)據(jù)處理等功能的綜合軟件包,其內(nèi)部的數(shù)據(jù)格式以CASA TABLE的二維表形式存在[7]。其按屬性可以分為三種,分別是ArrayColumn(AC)、IndexColumn(IC)和ScalarColumn(SC)。ArrayColumn存放各種數(shù)據(jù)類型的陣列數(shù)據(jù),IndexColumn和ScalarColumn存放普通類型的數(shù)據(jù),類似傳統(tǒng)數(shù)據(jù)庫中的屬性。在CASA TABLE中,大量的表數(shù)據(jù)往往集中在ArrayColumn中。如表1所示,表1為一張5列10 000行的CASA TABLE。其中前4列分別為int、int、float和double類型的普通數(shù)據(jù),第五列為4×5的int型陣列數(shù)據(jù)。雖然ArrayColumn只有一列,但可計(jì)算出其占全表大小的80%。
表1 CASA TABLE示例表
CASA提供了底層數(shù)據(jù)存儲(chǔ)類StorageManager,使得其可以被二次開發(fā)來替換原始的數(shù)據(jù)讀寫方式,從而進(jìn)行I/O優(yōu)化。StorageManager是CASA核心庫即casacore中負(fù)責(zé)數(shù)據(jù)讀寫的模塊,其決定了數(shù)據(jù)的存儲(chǔ)方式、位置、元數(shù)據(jù)信息等。目前,CASA中調(diào)用的StorageManager只支持集中式環(huán)境下串行的數(shù)據(jù)I/O,導(dǎo)致了I/O效率低下、無法擴(kuò)展、硬件要求高等問題,已經(jīng)難以滿足當(dāng)前海量射電天文數(shù)據(jù)的處理需求。
為了無縫支持CASA系統(tǒng),DDSS結(jié)合CASA環(huán)境編寫而成,其與CASA以及casacore庫的整體結(jié)構(gòu)與數(shù)據(jù)流入流出過程如圖1所示。圖1中虛線框中即為的主要模塊,包括數(shù)據(jù)劃分模塊、數(shù)據(jù)分配模塊、重寫后的CASA存儲(chǔ)管理(DDSS_StMan)模塊和數(shù)據(jù)流出的接口。系統(tǒng)的工作流程為:數(shù)據(jù)先經(jīng)過劃分,經(jīng)數(shù)據(jù)分配模塊分配到各個(gè)節(jié)點(diǎn),各個(gè)節(jié)點(diǎn)的存儲(chǔ)管理器DDSS_StMan負(fù)責(zé)數(shù)據(jù)的寫入和讀出。
圖1 DDSS框架圖
形式化描述如下:
定義1CASA TABLE形式的數(shù)據(jù)集D={F1,F2,…,F|D|}。其中,F(xiàn)i表示按照數(shù)據(jù)分片策略stfrag得到的數(shù)據(jù)片段,F(xiàn)1,F2,…,F|D|應(yīng)滿足F1∪F2∪…∪F|D|=D且Fi1∩Fi2=φ(i1≠i2,0≤i1,i2≤|D|)。
定義2節(jié)點(diǎn)集N={N1,N2,…,N|N|}。
其中,Nk表示系統(tǒng)中第k個(gè)存儲(chǔ)節(jié)點(diǎn)。數(shù)據(jù)集D依照數(shù)據(jù)分配策略stallo分配到各個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)Nk所得到的數(shù)據(jù)D_Nk可以表示為D_Nk=stallo(stfrag(D),N)。當(dāng)上層需要數(shù)據(jù)時(shí),各個(gè)節(jié)點(diǎn)同時(shí)通過存儲(chǔ)管理器(DDSS_StMan)模塊從磁盤中取出數(shù)據(jù),轉(zhuǎn)換成CASA TABLE的格式,完成過濾后流入導(dǎo)出接口。上層CASA應(yīng)用可以直接調(diào)用各節(jié)點(diǎn)接口中的數(shù)據(jù),完成其所需要的操作。
DDSS面向的是海量實(shí)時(shí)流入的CASA TABLE數(shù)據(jù)(如圖1所示),因此無論是數(shù)據(jù)劃分還是數(shù)據(jù)存儲(chǔ)管理都必須考慮到以下問題:1) 數(shù)據(jù)對象是CASA TABLE,該數(shù)據(jù)以陣列類型數(shù)據(jù)為主,同時(shí)也包含普通數(shù)據(jù)類型;2) 盡可能提高并行執(zhí)行度,來提供數(shù)據(jù)讀寫的效率。為此,本文將進(jìn)一步詳細(xì)介紹數(shù)據(jù)劃分模塊及重寫后的CASA存儲(chǔ)管理模塊。而數(shù)據(jù)分配模塊主要采用一致性哈希算法[8,9]完成數(shù)據(jù)分配[10],在此不再贅述。
在CASA TABLE中,由于大部分?jǐn)?shù)據(jù)量傾斜在ArrayColumn中,ArrayColumn往往會(huì)是所關(guān)注的焦點(diǎn),在大量實(shí)際應(yīng)用中,都需要對ArrayColumn中的陣列數(shù)據(jù)進(jìn)行讀取,此時(shí)列存儲(chǔ)是十分適合這類場景的。然而,若采用直接的列存儲(chǔ),將數(shù)據(jù)垂直劃分后用多進(jìn)程分別寫入不同列的方法,會(huì)使得某個(gè)進(jìn)程需要寫入大量的數(shù)據(jù),而其他所有進(jìn)程寫入少量的數(shù)據(jù),造成并行效率低的問題。因此,本文采用混合分片列式存儲(chǔ)策略。
混合分片列式存儲(chǔ)[11]是指在滿足定義1的前提下將數(shù)據(jù)集D先進(jìn)行水平劃分,再進(jìn)行垂直劃分。其與行列混合存儲(chǔ)的不同之處在于垂直劃分后的數(shù)據(jù)片段F1,F2,…,F|D|分別根據(jù)屬性名的不同,存于不同的文件之中。這樣既解決了列存儲(chǔ)在寫入效率的不足,同時(shí)卻保持了列存儲(chǔ)的形式,可以發(fā)揮列存儲(chǔ)在讀取某單一屬性如CASA TABLE中實(shí)際數(shù)據(jù)存放的ArrayColumn列效率高的優(yōu)勢。如圖2所示,Table為一張8行三列的CASA TABLE,以三行為一個(gè)水平劃分,按此劃分通過下文的分配策略分配到每個(gè)節(jié)點(diǎn),然后以列為單位,寫進(jìn)程分別將數(shù)據(jù)寫入對應(yīng)列名的文件中如tableIC_1、tableSC_1和AC_1中,從而實(shí)現(xiàn)了列存儲(chǔ)。在分布式環(huán)境下,數(shù)據(jù)片段Fi根據(jù)分配策略stallo分配到滿足定義2的節(jié)點(diǎn)集N。相同屬性的數(shù)據(jù)片段Fi會(huì)
在各個(gè)節(jié)點(diǎn)被寫入相同路徑的文件中。當(dāng)數(shù)據(jù)不斷增加,以追加的方式的到來時(shí),新的數(shù)據(jù)也會(huì)以追加的方式寫入同一列名的文件夾中。
圖2 數(shù)據(jù)表分片圖
在進(jìn)行數(shù)據(jù)分析,讀取磁盤數(shù)據(jù)時(shí),雖然每個(gè)節(jié)點(diǎn)儲(chǔ)存列文件中的不同分片數(shù)據(jù)并不連續(xù),但是單個(gè)分片內(nèi)的數(shù)據(jù)是以順序的方式存儲(chǔ)中的。通常CASA TABLE中的數(shù)據(jù)會(huì)以時(shí)間或者天線頻道排序,這樣當(dāng)天文學(xué)家需要某個(gè)時(shí)間段或者某個(gè)頻道的陣列數(shù)據(jù)時(shí),就只需要在某一個(gè)節(jié)點(diǎn)讀取數(shù)據(jù),節(jié)省了多節(jié)點(diǎn)元組重構(gòu)和通信的網(wǎng)絡(luò)開銷。
DDSS_StMan是DDSS中負(fù)責(zé)數(shù)據(jù)讀寫和管理的模塊。由于casacore中原有的存儲(chǔ)管理器(StorageManager)并不支持分布式環(huán)境。DDSS_StMan重寫了StorageManager使其支持分布式與并行的環(huán)境,并且使用基于相對位置映射的元數(shù)據(jù),加快陣列數(shù)據(jù)讀取的速度。
4.1 支持分布式環(huán)境的DDSS_StMan
casacore中原有的存儲(chǔ)管理器在設(shè)計(jì)時(shí)數(shù)據(jù)讀寫是單進(jìn)程、串行處理的。同時(shí),由于casacore庫中全局的元數(shù)據(jù)文件以表為單位來創(chuàng)建,但在分布式環(huán)境下,我們對數(shù)據(jù)表進(jìn)行劃分,但casacore中的元數(shù)據(jù)信息卻并不支持因數(shù)據(jù)表劃分而再次劃分元數(shù)據(jù)文件,這便在寫數(shù)據(jù)時(shí)造成了元數(shù)據(jù)文件沖突。在DDSS _StMan為了支持分布式環(huán)境,在數(shù)據(jù)讀寫時(shí)提供了支持多進(jìn)程的接口,并記錄了各個(gè)節(jié)點(diǎn)數(shù)據(jù)的全局信息。于此同時(shí)其數(shù)據(jù)讀寫不再依靠casacore中所使用的元數(shù)據(jù)信息,以避免在分布式環(huán)境中所造成的各種元數(shù)據(jù)信息錯(cuò)誤。當(dāng)寫入數(shù)據(jù)時(shí),每個(gè)進(jìn)程得到其劃分后的數(shù)據(jù)之后,開始寫入數(shù)據(jù),并記錄相關(guān)信息,完成基于相對位置映射的元數(shù)據(jù)。當(dāng)讀取數(shù)據(jù)時(shí),不再從casacore庫中所使用的元數(shù)據(jù)信息來尋找數(shù)據(jù),而是通過之前維護(hù)的相對位置映射元數(shù)據(jù)來完成數(shù)據(jù)尋址,進(jìn)行數(shù)據(jù)讀取。
4.2 基于相對位置映射的元數(shù)據(jù)
在節(jié)點(diǎn)接收數(shù)據(jù)的水平分片后,將其垂直劃分,根據(jù)之前的分配算法用相應(yīng)的進(jìn)程寫入磁盤。在應(yīng)用壞境中,進(jìn)程需要讀取ArrayColumn中的某一行或某幾行。在列存儲(chǔ)中,讀取節(jié)點(diǎn)上單獨(dú)列所有內(nèi)容,是非常便捷的,但是當(dāng)進(jìn)行選擇性讀取的時(shí)候,往往需要從頭遍歷該列的數(shù)據(jù)文件,從而產(chǎn)生巨大的開銷。傳統(tǒng)的索引技術(shù)并不適用與陣列數(shù)據(jù),而一些基于陣列數(shù)據(jù)的索引大多針對某一陣列內(nèi)部數(shù)據(jù)。因此,本文提出了一種在寫入陣列數(shù)據(jù)的同時(shí),維護(hù)該列陣列各陣列相對位置的元數(shù)據(jù)信息,來快速定位該陣列在文件中的位置。如圖3所示。每個(gè)ArrayColumn的陣列數(shù)據(jù)文件都會(huì)有一個(gè)對應(yīng)的元數(shù)據(jù)文件,元數(shù)據(jù)文件中的指針與陣列數(shù)據(jù)文件中的陣列一一對應(yīng)。當(dāng)?shù)玫皆獢?shù)據(jù)文件中指針的位置時(shí),便可以將位置信息映射到陣列數(shù)據(jù)文件中,再通過位置信息直接讀取需要的陣列。DDSS中,使用行號作為元組重構(gòu)的鍵值,元數(shù)據(jù)文件中也會(huì)記錄相應(yīng)的行號信息。
圖3 指針與數(shù)據(jù)的相對位置映射圖
實(shí)現(xiàn)上述的功能需要重寫CASA存儲(chǔ)管理器,尤其是修改其中的put與get函數(shù)。在put函數(shù)中需要添加寫元數(shù)據(jù)文件的功能,而在get函數(shù)中需要先讀取元數(shù)據(jù)文件,確認(rèn)所需數(shù)據(jù)的實(shí)際地址映射。再根據(jù)映射關(guān)系map函數(shù)來確定實(shí)際數(shù)據(jù)的儲(chǔ)存位置。最后,讀取相應(yīng)的陣列數(shù)據(jù)文件中所需要的陣列數(shù)據(jù)。
4.3 相對位置映射方法設(shè)計(jì)
ArrayColumn以列存儲(chǔ)的方式,用字節(jié)流寫入磁盤之中,設(shè)每個(gè)陣列大小為SA字節(jié),總共寫入k行,即k個(gè)陣列。同時(shí),在元數(shù)據(jù)文件中寫入指針,指針大小遠(yuǎn)遠(yuǎn)小于陣列大小,設(shè)指針大小為SP字節(jié)總共寫入k行,即k個(gè)指針,其中SP< (1) 通過P_Pos的值,可以推導(dǎo)出對應(yīng)陣列在陣列文件中的起始字節(jié)位置P_SB: P_PS=P_Pos×SA×k (2) 得到陣列起始位置P_SB后,在讀取陣列文件時(shí),使用lseek(filename,P_SB)函數(shù)直接從該陣列所在的位置讀取SA個(gè)字節(jié)即可。 令式(1)與式(2)的計(jì)算函數(shù)為P_SB=Map(pki),基于運(yùn)用基于位置映射的元數(shù)據(jù)來選取陣列數(shù)據(jù)的算法如下: 算法1:FindArray(int Row_id) 輸入:元組重構(gòu)的行號。 輸出:該元組的陣列。 1readbuffer_meta[n];2readbuffer_array[m];3read(metadata,readbuffer_meta);4while(readbuffer_meta[i]!=NULL)5 if(Row_id==readbuffer_meta[i])6 pki==I;7 break;8 i++;9P_SB=Map(pki);10lseek(ArrayData,P_SB);11read(ArrayData,readbuffer_array);12returnreadbuffer_array; 該方法在傳統(tǒng)的數(shù)據(jù)庫中針對傳統(tǒng)數(shù)據(jù)并沒有任何效果,反而可能會(huì)影響讀取效率,然而針對CASA TABLE中的ArrayColumn卻非常適合。因?yàn)镃ASA TABLE中絕大部分?jǐn)?shù)據(jù)量傾斜在ArrayColumn中,ArrayColumn中的一個(gè)陣列所占的存儲(chǔ)空間往往可以達(dá)到MB級別。而元數(shù)據(jù)文件的總大小往往只有KB級別。在實(shí)驗(yàn)中發(fā)現(xiàn),一個(gè)1 GB左右大小的數(shù)據(jù)文件所對應(yīng)的元數(shù)據(jù)文件約為5 KB。鑒于這種情況,全掃描元數(shù)據(jù)文件所帶來的開銷幾乎可以忽略不計(jì),但卻可以快速定位陣列數(shù)據(jù)文件中相應(yīng)陣列的位置,避免了大量的陣列文件掃描的開銷。 DDSS通過上述方法將數(shù)據(jù)取出,并依賴casacore完成部分節(jié)點(diǎn)內(nèi)處理后傳遞至導(dǎo)出接口,上層即可直接運(yùn)用接口中的數(shù)據(jù),完成相應(yīng)操作。 5.1 實(shí)驗(yàn)環(huán)境 實(shí)驗(yàn)采用centos 6.4(Final)和casacore-1.5.0作為軟件環(huán)境。硬件采用2個(gè)服務(wù)器作為節(jié)點(diǎn),每個(gè)服務(wù)器擁有2個(gè)4核的CPU(Intel Xeon CPU E5-2609 2.40 GHz),32 GB內(nèi)存,和Broadcom NetXtreme BCM5750 千兆網(wǎng)卡。實(shí)驗(yàn)數(shù)據(jù)采用MWA[12]天文項(xiàng)目中數(shù)據(jù),共23列,陣列型數(shù)據(jù)5列(即CASA TABLE中的ArrayColumn),陣列大小為4×384的浮點(diǎn)型數(shù)據(jù),占整張表數(shù)據(jù)量的99.98%。同時(shí),為了測試DDSS與casacore中標(biāo)準(zhǔn)存儲(chǔ)模式在不同數(shù)據(jù)規(guī)模下的性能,將陣列型數(shù)據(jù)復(fù)制擴(kuò)大,并且應(yīng)實(shí)驗(yàn)需要,數(shù)據(jù)在內(nèi)存中生成。 5.2 實(shí)驗(yàn)結(jié)果和分析 本文實(shí)驗(yàn)對比了CASA使用casacore庫中標(biāo)準(zhǔn)的數(shù)據(jù)存儲(chǔ)管理器模塊(STANDARD)與CASA使用DDSS的I/O能力,驗(yàn)證兩者的表現(xiàn)。每組實(shí)驗(yàn)運(yùn)行3次,取平均結(jié)果。 實(shí)驗(yàn)一分別測試了標(biāo)準(zhǔn)情況下與DDSS在單機(jī)串行環(huán)境和多節(jié)點(diǎn)并行下,針對不同數(shù)據(jù)量的讀寫性能。圖4(a)中的數(shù)據(jù)量為9.5 GB,比較了單節(jié)點(diǎn)串行環(huán)境下STANDARD與DDSS的讀寫性能。圖4(b)中數(shù)據(jù)量為38 GB,比較了STANDARD與DDSS在單節(jié)點(diǎn)串行和多節(jié)點(diǎn)并行的讀寫能力,其中DDSS的并行環(huán)境為2個(gè)節(jié)點(diǎn)。每個(gè)陣列大小均約為1 MB。 圖4 實(shí)驗(yàn)結(jié)果 結(jié)合圖4分析可得,在串行環(huán)境下,無論數(shù)據(jù)量或大或小,DDSS的數(shù)據(jù)寫入性能都率優(yōu)于STANDARD,其隨著數(shù)據(jù)量的增大,兩者耗時(shí)的比例幾乎不變,DDSS比STANDARD快1.2倍左右。但是在數(shù)據(jù)讀取方面DDSS則比CASA在大量數(shù)據(jù)環(huán)境下有了顯著的提升,單機(jī)和集群兩種情況分別比STANDARD快了5.6倍和6.8倍,可見列存儲(chǔ)和基于位置映射的讀取數(shù)據(jù)方式是十分有效的。并且當(dāng)數(shù)據(jù)量不斷擴(kuò)大時(shí),DDSS的效果會(huì)更加優(yōu)越。在分布式環(huán)境中,DDSS十分有效地提升了數(shù)據(jù)寫入的速度,比STANDARD快了3.4倍。當(dāng)數(shù)據(jù)量較小的情況下,本文方法讀取數(shù)據(jù)的效果提升的較少,其原因是分布式環(huán)境下,每個(gè)節(jié)點(diǎn)得到的數(shù)據(jù)量減少,在數(shù)據(jù)量不大的情況下,效果并不十分顯著??偨Y(jié)可得,通過分布式并行處理有效地減少了數(shù)據(jù)的讀寫時(shí)間。 實(shí)驗(yàn)二測試了陣列為1、2、4 MB時(shí)系統(tǒng)的讀寫數(shù)據(jù)時(shí)間。數(shù)據(jù)的總量為38 GB保持不變,每個(gè)實(shí)驗(yàn)按照陣列大小改變其記錄條數(shù)。如圖5所示,可以發(fā)現(xiàn)在數(shù)據(jù)總量不變的情況下,更改單個(gè)陣列的大小對系統(tǒng)的讀寫性能幾乎沒有影響,這說明DDSS可以靈活滿足各種大小的陣列數(shù)據(jù),適合各種天文場景的應(yīng)用。 圖5 DDSS應(yīng)對不同大小陣列的吞吐量圖 本文提出了適應(yīng)主流射電天文軟件CASA的底層分布式數(shù)據(jù)存儲(chǔ)策略。在不改變?nèi)魏紊蠈討?yīng)用層的條件下,使其支持分布式環(huán)境,將數(shù)據(jù)進(jìn)行混合方片后采用列存儲(chǔ)的方法,重寫數(shù)據(jù)儲(chǔ)存管理器并維護(hù)基于相對位置映射的元數(shù)據(jù),提升CASA軟件的底層I/O讀寫效率。最后通過一系列實(shí)驗(yàn)驗(yàn)證了所提方法DDSS的有效性。在未來的研究中,針對ArrayColumn和列存儲(chǔ),可以對陣列數(shù)據(jù)進(jìn)行數(shù)據(jù)壓縮,進(jìn)一步提高讀寫效率。另外重點(diǎn)關(guān)注于進(jìn)程安全問題,在保證并行效果的同時(shí),完善其對進(jìn)程安全的控制,提高系統(tǒng)的健壯性和可靠性。 [1] McMullin J P,Waters B,Young W,et al.CASA Architecture and Applications[C]//Astronomical Data Analysis Software and Systems XVI ASP Conference Series,2007,376:127. [2] Diepen G N J V.Casacore Table Data System and its use in the MeasurementSet[J].Astronomy and Computing,2015,12:174-180. [3] Zetics P,Jose S.Overview of sciDB:large scale array storage,processing and analysis[C]//Proceedings of the 2010 ACM SIGMOD International Conference on Management of data,2010,NY,USA:ACM,2010:963-968. [4] Yao Y,Bowen B,Dalya B,et al.SciDB for High-Performance Array-Structured Science Data at NERSC[J].Computing in Science & Engineering,2015,17(3):44-52. [5] Buck J,Watkins N,LeFevre J,et al.SciHadoop:array-based query processing in Hadoop[C]//Proceedings of International Conference for High Performance Computing,Networking,Storage and Analysis,2011,NY,USA:ACM,2011. [6] Buck J,Watkins N,Levin G,et al.SIDR:structure-aware intelligent data routing in Hadoop[C]//Proceedings of the International Conference on High Performance Computing,Networking,Storage and Analysis,2013,NY,USA:ACM,2013. [7] 危兵,王鋒,鄧輝,等.CASA混合編程技術(shù)分析與功能擴(kuò)展研究[J].天文技術(shù)與研究,2014,11(1):46-53. [8] Hong T,Wu Ya,Cao B,et al.A dynamic data allocation method with improved load-balancing for cloud storage system[C]//Proceedings of the 31st AIAA International Communications Satellite Systems Conference (ICSSC),2013,Shanghai,China,2013:220-225. [9] 巴子言,吳軍,馬嚴(yán).基于虛節(jié)點(diǎn)的一致性哈希算法的優(yōu)化[J].軟件,2014(12):26-29. [10] Eswaran K. Placement of records in a file and file allocation in a computer network[C]//Proceedings of IFIP Congress on Information Processing.Stockholm,Sweden,1974,304-307. [11] Floratou A,Patel J,Shekita E,et al.Column-oriented storage techniques for MapReduce[J].VLDB Endowment,2011,4(7):419-429. [12] Tingay S,Goeke R,Bowman J D,et al.The Murchison Widefield Array:The Square Kilometre Array Precursor at Low Radio Frequencies[J].Publications of the Astronomical Society of Australia,2012,30(30):109-121. A DISTRIBUTED DATA STORAGE STRATEGY FOR CASA Guo Huiqing Wang Mei Le Jiajin (SchoolofComputerScienceandTechnology,DonghuaUniversity,Shanghai201620,China) With the progress and development in astronomical equipments,to process massive astronomical data forms the new challenge.In order to make current mainstream astronomical data analysis software can effectively deal with massive data,we proposed a distributed data storage strategy (DDSS) applicable for radio astronomy to deal with upper application.First we designed the system framework of DDSS.Then we designed the hybrid method of partitioning and columnar storage,while preserving the advantage of column-store in data query,the speed of data import is promoted as well.Furthermore,by maintaining the relative position mapping-based metadata to quickly read astronomical array data containing large amount of data,the I/O throughput of astronomy when processing underlying data of applications is significantly improved.Finally,through experiment we testified the effectiveness of the proposed method. Distribution Astronomy Array data 2015-10-13。過匯卿,碩士生,主研領(lǐng)域:數(shù)據(jù)倉庫和分布式技術(shù)。王梅,副教授。樂嘉錦,教授。 TP3 A 10.3969/j.issn.1000-386x.2016.11.0075 實(shí)驗(yàn)與分析
6 結(jié) 語