摘 要: 隨著科技的發(fā)展,科學(xué)領(lǐng)域的研究人員在觀察和實(shí)驗(yàn)中產(chǎn)生的數(shù)據(jù)規(guī)模越來越大,,科學(xué)分析任務(wù)也愈加復(fù)雜,。新型的陣列數(shù)據(jù)庫和工作流技術(shù)逐漸被應(yīng)用到大規(guī)模科學(xué)數(shù)據(jù)的管理和分析中,。結(jié)合陣列數(shù)據(jù)庫系統(tǒng)SciDB,,研究并實(shí)現(xiàn)了一種基于工作流的科學(xué)數(shù)據(jù)分析系統(tǒng),用于滿足基于大規(guī)模數(shù)據(jù)的復(fù)雜科學(xué)數(shù)據(jù)分析需求,。
關(guān)鍵詞: SciDB,;工作流;科學(xué)工作流,;科學(xué)數(shù)據(jù)分析,;科學(xué)大數(shù)據(jù)
0 引言
近年來,隨著科學(xué)觀測(cè)工具和科學(xué)實(shí)驗(yàn)操作儀器的不斷改進(jìn)以及科學(xué)觀測(cè)手段的不斷進(jìn)步,,很多科學(xué)研究領(lǐng)域,,尤其是一些基礎(chǔ)學(xué)科領(lǐng)域,,例如高能物理學(xué)、生物信息學(xué),、大氣科學(xué),、天文學(xué)等,在實(shí)驗(yàn)過程中和實(shí)驗(yàn)后產(chǎn)生的可以用來分析的實(shí)驗(yàn)數(shù)據(jù)越來越多,,其數(shù)據(jù)量越來越大,;同時(shí),科學(xué)過程也越來越完善,,這意味著它變得越來越復(fù)雜,,包含在其中的科學(xué)計(jì)算過程往往由成千上萬個(gè)步驟構(gòu)成。綜上,,目前的科學(xué)分析甚至是一個(gè)簡單的科學(xué)實(shí)驗(yàn)都需要對(duì)TB甚至PB量級(jí)的數(shù)據(jù)進(jìn)行分析查詢,,才能夠?qū)φ麄€(gè)科學(xué)工程進(jìn)行進(jìn)一步的分析,從而找出規(guī)律,,得出結(jié)論,。因而,將大數(shù)據(jù)查詢的處理方法應(yīng)用到科學(xué)大數(shù)據(jù),,并將其做成一種簡單,、易上手的服務(wù),對(duì)于提高科研人員的工作效率具有顯著的作用,。同時(shí),,科學(xué)過程產(chǎn)生的是數(shù)據(jù),其運(yùn)行的過程本身是由數(shù)據(jù)驅(qū)動(dòng)的,,對(duì)于科學(xué)領(lǐng)域?qū)W者來說,,數(shù)據(jù)是最重要的,科學(xué)數(shù)據(jù)是數(shù)據(jù)密集型的,。
采用工作流技術(shù)可以將復(fù)雜查詢進(jìn)行拆分,,實(shí)現(xiàn)查詢的可視化和動(dòng)態(tài)修改,使得科學(xué)分析服務(wù)簡單,、易上手,。但是由于科學(xué)分析其以數(shù)據(jù)作為驅(qū)動(dòng)的特點(diǎn),目前不能將傳統(tǒng)的工作流系統(tǒng),,即目前應(yīng)用在企業(yè)領(lǐng)域的BPM(Business Process Management),,例如JBPM和Activiti直接應(yīng)用于科學(xué)領(lǐng)域,因而采用科學(xué)工作流系統(tǒng),。
在國外,,Kepler科學(xué)工作流系作為一種科學(xué)分析的手段,已經(jīng)開始應(yīng)用于醫(yī)學(xué)數(shù)據(jù)分析領(lǐng)域和環(huán)境監(jiān)測(cè)數(shù)據(jù)分析領(lǐng)域,,但是Kepler本身只是一個(gè)工作流執(zhí)行引擎,,其所分析的科學(xué)過程中的每一個(gè)步驟經(jīng)常采用Hadoop作為分析的工具,,而Hadoop執(zhí)行科學(xué)分析的效率不高,尤其在其所分析的科學(xué)數(shù)據(jù)的維度較大的情況下,。同時(shí),,以SciDB作為科學(xué)分析工具的查詢服務(wù)在國外目前還處于起步階段。針對(duì)于Kepler,,其所提供的可視化編輯是在軟件界面上實(shí)現(xiàn)的,,將之應(yīng)用于網(wǎng)頁形式還是比較困難的。
在國內(nèi),,基于數(shù)據(jù)驅(qū)動(dòng)的科學(xué)數(shù)據(jù)處理的科學(xué)工作流系統(tǒng)的研究還處于起步階段,,很多學(xué)者都只是提出了一個(gè)簡單的僅僅應(yīng)用于一項(xiàng)甚至幾項(xiàng)相類似的科學(xué)研究的科學(xué)工作流框架,針對(duì)這些框架的實(shí)現(xiàn)較少,,同時(shí),,這些框架基本上是基于關(guān)系型數(shù)據(jù)庫設(shè)計(jì)的,對(duì)于數(shù)組數(shù)據(jù)庫來說,,不具有較好的數(shù)據(jù)可擴(kuò)展性,。
1 科學(xué)數(shù)據(jù)庫系統(tǒng)SciDB
隨著科學(xué)學(xué)科領(lǐng)域觀測(cè)手段的不斷進(jìn)步,在很多科學(xué)領(lǐng)域產(chǎn)生的數(shù)據(jù)都開始呈現(xiàn)出爆炸性增長的趨勢(shì),。為了滿足針對(duì)這些數(shù)據(jù)的多種多樣的復(fù)雜分析操作,,基于數(shù)組模型的數(shù)據(jù)管理和分析成為了科學(xué)數(shù)據(jù)管理和分析的趨勢(shì)。傳統(tǒng)的數(shù)組管理和分析軟件如MATLAB的基本思想是在主存中處理可以放在內(nèi)存中的少量數(shù)據(jù),,但是對(duì)于海量數(shù)據(jù)的處理比較困難。同時(shí),,對(duì)于科學(xué)家來說,,使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫如SQLServer、Mysql,、Oracle等來存儲(chǔ)和分析數(shù)組類型數(shù)據(jù)的過程過于復(fù)雜且低效,,這是因?yàn)閭鹘y(tǒng)的關(guān)系型數(shù)據(jù)庫是基于關(guān)系數(shù)據(jù)模型來分析數(shù)據(jù)的,本身沒有針對(duì)數(shù)組類型科學(xué)數(shù)據(jù)的存儲(chǔ)和分析進(jìn)行優(yōu)化,。進(jìn)一步說,,傳統(tǒng)關(guān)系型數(shù)據(jù)庫的擴(kuò)展能力也制約著它們的海量科學(xué)數(shù)據(jù)處理能力[1-2]。
為了解決上述問題,,以STONEBRAKER M為首的數(shù)據(jù)庫專家在收集并且深入探究了當(dāng)前領(lǐng)域?qū)W者對(duì)于科學(xué)數(shù)據(jù)的分析需求的基礎(chǔ)上,,在列存儲(chǔ)的基礎(chǔ)上,結(jié)合科學(xué)研究所產(chǎn)生數(shù)據(jù)的結(jié)構(gòu)特點(diǎn),,在Paradigm4公司的贊助下研發(fā)了一套科學(xué)數(shù)據(jù)管理和分析的系統(tǒng)軟件,,其社區(qū)免費(fèi)版本名為SciDB[3]。
SciDB不同于傳統(tǒng)的關(guān)系數(shù)據(jù)庫軟件,,它側(cè)重于科學(xué)數(shù)據(jù)的分析操作,,設(shè)計(jì)目標(biāo)是與R,、MATLAB以及IDL等科學(xué)分析軟件結(jié)合來分析管理科學(xué)數(shù)據(jù)。
SciDB是一個(gè)開源的數(shù)據(jù)管理系統(tǒng),,主要為科學(xué)領(lǐng)域中的超大規(guī)模陣列數(shù)據(jù)而設(shè)計(jì),,其設(shè)計(jì)初衷旨在解決科學(xué)研究中數(shù)據(jù)量大、數(shù)據(jù)世襲等科學(xué)問題,。與傳統(tǒng)DBMS不同的是,,SciDB能夠?yàn)榭茖W(xué)應(yīng)用領(lǐng)域提供大規(guī)模的復(fù)雜分析支持,用以滿足其日益增長的需求,。它采用陣列數(shù)據(jù)模型(一種具有數(shù)學(xué)中數(shù)組特性的數(shù)據(jù)模型),,支持多維數(shù)據(jù)。其基本組成單元是cell,,各個(gè)cell有相同的值類型,。cell的值可以是一個(gè)或多個(gè)標(biāo)量值,也可以是一個(gè)或多個(gè)數(shù)組,。
SciDB的基本架構(gòu)如圖1所示,。在SciDB集群中有兩種類型的節(jié)點(diǎn):Coordinate節(jié)點(diǎn)參與查詢執(zhí)行并且協(xié)調(diào)查詢行為;Worker節(jié)點(diǎn)是直接參與查詢執(zhí)行的節(jié)點(diǎn),,查詢后的結(jié)果會(huì)傳輸?shù)紺oordinate節(jié)點(diǎn)上輸出,。在SciDB集群中,使用Postgresql數(shù)據(jù)庫(Postgresql數(shù)據(jù)庫,,PG)作為集群元數(shù)據(jù)的存儲(chǔ),。
SciDB具有如下特性:
(1)SciDB事物的作用領(lǐng)域是一條SQL語句,。每一條語句都涉及針對(duì)一個(gè)或者多個(gè)數(shù)組的很多操作,。最后,事務(wù)結(jié)束后得到的結(jié)果存儲(chǔ)到目的數(shù)組中,。
?。?)SciDB實(shí)現(xiàn)了數(shù)組級(jí)鎖。在事務(wù)一開始,,鎖就被獲取,,該鎖在查詢執(zhí)行中一直處于活躍狀態(tài)。數(shù)組鎖在查詢執(zhí)行之后被釋放,。如果取消了某個(gè)查詢,,該查詢所涉及的數(shù)組的相應(yīng)操作在所有節(jié)點(diǎn)上都被取消,從而使得數(shù)據(jù)庫可以返回到初始狀態(tài),。
?。?)SciDB支持追加操作。它使用不覆蓋存儲(chǔ)機(jī)制,,每一次更新現(xiàn)有的數(shù)組中的數(shù)據(jù),,SciDB都會(huì)創(chuàng)建一個(gè)新的數(shù)組版本,。這意味著如果往現(xiàn)有的數(shù)組中插入一系列的新數(shù)據(jù),這些數(shù)據(jù)以及數(shù)組中原有的數(shù)據(jù)必須全部重新分布到SciDB節(jié)點(diǎn)中,。如果數(shù)據(jù)量比較大,,上述過程會(huì)花費(fèi)額外的大量時(shí)間。
2 科學(xué)工作流及其代表Kepler系統(tǒng)
工作流(Workflow),,指業(yè)務(wù)過程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動(dòng)化,,是對(duì)工作流程及其各操作步驟之間業(yè)務(wù)規(guī)則的抽象、概括描述,。
工作流管理聯(lián)盟(WfMC)對(duì)工作流的定義為:一類能夠完全或者部分自動(dòng)執(zhí)行的經(jīng)營過程,,根據(jù)一系列過程規(guī)則、文檔,、信息或任務(wù)能夠在不同的執(zhí)行者之間傳遞,、執(zhí)行。
工作流其實(shí)是一個(gè)直接有向圖,,它的執(zhí)行是有序的,,目前一般將工作流的執(zhí)行信息存儲(chǔ)在擴(kuò)展標(biāo)記語言(eXtensible Markup Language,XML)文檔中[4],。
與傳統(tǒng)的工作流不同,,科學(xué)工作流是以數(shù)據(jù)作為驅(qū)動(dòng)的,它也是由一系列的小的工作流程組成的,,但是制約整個(gè)工作流程執(zhí)行的不僅僅是順序,,同時(shí)還與數(shù)據(jù)有關(guān),假如整個(gè)工作流程沒有需要的數(shù)據(jù),,該工作流便不能執(zhí)行,;相反,假如存在數(shù)據(jù),,則整個(gè)工作流程可以重復(fù)執(zhí)行,這意味著科學(xué)工作流的執(zhí)行邏輯與傳統(tǒng)的工作流有些不同,。同時(shí),,以SciDB作為科學(xué)分析的執(zhí)行引擎,這意味著需要針對(duì)SciDB單獨(dú)設(shè)計(jì)工作流執(zhí)行邏輯[5-7],??傮w來說,科學(xué)工作流是獲取科學(xué)數(shù)據(jù),,并對(duì)所獲取到的數(shù)據(jù)執(zhí)行復(fù)雜分析的靈活的工具,。
Kepler[8]主要面向科學(xué)家、分析專家以及計(jì)算機(jī)程序員,,提供了一系列可以通用的科學(xué)分析框架,。它可以操作不同格式,、不同地區(qū)、不同介質(zhì)中的數(shù)據(jù),,同時(shí)提供了一系列可以擴(kuò)展的接口用于擴(kuò)展R或C語言用戶,。 Kepler的圖形界面允許用戶使用拖拽的形式來創(chuàng)建一個(gè)工作流,此時(shí)的工作流即以數(shù)據(jù)為驅(qū)動(dòng)的科學(xué)工作流,。
Kepler是一個(gè)以Java作為主要開發(fā)語言的軟件,,這意味著Kepler的api可以具有很好的跨平臺(tái)特性。一個(gè)簡單的Kepler工作流如圖2所示,。
其中,,SDF Director是流程控制器,Display是不同的actor組件,,其功能類似于JBPM中的Process,。
3 基于工作流的科學(xué)數(shù)據(jù)分析系統(tǒng)
本文提出的基于工作流的科學(xué)數(shù)據(jù)分析系統(tǒng)是云平臺(tái)上工作流作為服務(wù)(Workflow As a Service,WAS)系統(tǒng)的一部分,,WAS架構(gòu)圖如圖3所示,。
WAS系統(tǒng)分為兩個(gè)主要的部分,即應(yīng)用部分和SciDB集群系統(tǒng)部分,。
應(yīng)用部分是基于集群系統(tǒng)部分構(gòu)建的,,目前主要由本文中提到的科學(xué)數(shù)據(jù)分析系統(tǒng)、WAS系統(tǒng)用戶管理,、WAS系統(tǒng)用戶資源管理以及WAS系統(tǒng)負(fù)載均衡部分組成,。針對(duì)第1節(jié)中提到的SciDB系統(tǒng)的相關(guān)特性,科學(xué)數(shù)據(jù)分析系統(tǒng)做了相應(yīng)的處理,。WAS系統(tǒng)用戶管理,、WAS系統(tǒng)用戶資源管理以及WAS系統(tǒng)負(fù)載均衡部分目前還只是處于初步階段,管理的用戶是WAS系統(tǒng)的全部用戶,,這部分相應(yīng)的數(shù)據(jù)是存儲(chǔ)在關(guān)系型數(shù)據(jù)庫之中的,,而且只有系統(tǒng)管理員才有相應(yīng)的管理和查看權(quán)限,實(shí)現(xiàn)了一定的數(shù)據(jù)保密性,。
集群部分是基于SciDB構(gòu)建的分布式集群,,相比關(guān)系型數(shù)據(jù)庫以及傳統(tǒng)的MATLAB等數(shù)據(jù)分析工具,該分布式集群具有較好的科學(xué)數(shù)據(jù)分析功能,。
用戶登錄到WAS后,,可以通過工作流系統(tǒng)執(zhí)行科學(xué)分析,并查看科學(xué)分析的執(zhí)行結(jié)果,,并且可以同時(shí)從界面中導(dǎo)出,。WAS系統(tǒng)同時(shí)實(shí)現(xiàn)了負(fù)載均衡和用戶使用過程中系統(tǒng)資源利用率的實(shí)時(shí)監(jiān)控。本文中的工作流系統(tǒng)是圖3中的工作流中的一部分,這部分系統(tǒng)的架構(gòu)圖如圖4所示,。
該工作流系統(tǒng)由兩個(gè)部分組成,,即Web客戶端界面以及工作流執(zhí)行引擎。
在Web客戶端界面中,,用戶通過用戶管理界面與用戶信息庫之間的接口查看本賬戶中已經(jīng)執(zhí)行的科學(xué)工作流的執(zhí)行情況以及執(zhí)行過程中的資源占用率(如CPU占用率,、主存的占用率、主存的占有量,、磁盤的讀寫以及本帳戶所使用的集群的網(wǎng)絡(luò)數(shù)據(jù)傳輸速率),。其中的用戶管理與WAS系統(tǒng)的用戶管理不同。
而數(shù)據(jù)上傳界面,、流程設(shè)計(jì)界面以及結(jié)果輸入界面都是通過接口與工作流執(zhí)行引擎交互的,。用戶通過數(shù)據(jù)上傳界面將上傳文件的相關(guān)信息發(fā)給工作流執(zhí)行引擎,之后,,工作流執(zhí)行引擎通過接口與SciDB集群通信,,并將數(shù)據(jù)文件加載到SciDB數(shù)據(jù)庫中,再將加載后狀態(tài)信息返回給用戶,。流程設(shè)計(jì)界面是一個(gè)Web版的流程設(shè)計(jì)器,,用戶通過拖拽可以設(shè)計(jì)一個(gè)科學(xué)工作流,最后保存為XML文件交給工作流執(zhí)行引擎處理,。結(jié)果輸入界面顯示出分析結(jié)果,。一個(gè)簡單的科學(xué)工作流如圖5所示。其中,,左邊的圓點(diǎn)代表科學(xué)分析任務(wù)開始,,右邊圓點(diǎn)代表科學(xué)分析任務(wù)結(jié)束,task1代表一個(gè)簡單的科學(xué)分析過程,。當(dāng)然,,復(fù)雜的科學(xué)分析過程是由一系列的圖中的基本的科學(xué)分析子過程組成的。
本文中提出的科學(xué)分析系統(tǒng)的執(zhí)行過程如下:
?。?)工作流引擎在啟動(dòng)后進(jìn)行初始化,,加載afl.properties文件,該文件中有SciDB的AFL函數(shù)相關(guān)信息,。這部分信息可以用于在工作流執(zhí)行過程中的檢測(cè),。
(2)該系統(tǒng)的用戶在流程設(shè)計(jì)界面使用拖拽的方式拖拽基本組件,,并連接這些組件組成類似于圖5的工作流,。執(zhí)行這個(gè)工作流可以完成用戶需要的科學(xué)分析操作,。用戶通過點(diǎn)擊保存按鈕將該工作流保存到XML和數(shù)據(jù)庫中,。
(3)解析XML文件,并執(zhí)行該工作流完成用戶需要的科學(xué)分析操作,。這部分操作的流程圖如圖6所示,。
(4)用戶可以分別在結(jié)果輸入界面和用戶管理界面查看最終結(jié)果及系統(tǒng)執(zhí)行分析操作過程中的一系列系統(tǒng)參數(shù)變化情況,。
以SciDB作為科學(xué)分析執(zhí)行引擎,,其本質(zhì)上是針對(duì)SQL語句或類SQL語句的處理。
4 結(jié)論
本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于工作流的科學(xué)數(shù)據(jù)分析系統(tǒng),,該系統(tǒng)是基于SciDB獨(dú)立設(shè)計(jì)的執(zhí)行邏輯科學(xué)分析工作,,具有較好的可擴(kuò)展性和可復(fù)用性,適用于科學(xué)數(shù)據(jù)分析,,同時(shí)該系統(tǒng)與Kepler不同,,該系統(tǒng)允許用戶在Web端使用。
參考文獻(xiàn)
[1] DOBOS L,, SZALAY A,, BLAKELEY J, et al. Array requirements for scientific applications and an implementation for Microsoft SQL Server[EB/OL].(2011-10-11)[2015-03-01].www.docin.com/p-379013760.html.
[2] WIDMANN N,, BAUMANN P. Efficient execution of operations in a DBMS for multidimensional arrays[C]. Proceedings of SSDBM′98,, Capri, Italy,, 1998,,7:155-165.
[3] THAKAR A R, SZALAY A S,, KUNSZT P Z,, et al. Migrating a multiterabyte archive from object to relational databases[J]. Computing in Science & Engineering, 2003:16-29.
[4] 羅海濱,,范玉順,,吳澄.工作流技術(shù)綜述[J].軟件學(xué)報(bào),2000,,11(7):899-907.
[5] 肖飛,,張為華,王東輝.面向科學(xué)過程的工作流技術(shù)研究現(xiàn)狀與趨勢(shì)[J].計(jì)算機(jī)應(yīng)用研究,,2011,,28(11):4013-4019.
[6] 張衛(wèi)民,劉燦燦,,駱志剛.科學(xué)工作流技術(shù)研究綜述[J].國防科技大學(xué)學(xué)報(bào),,2011,33(3):56-65.
[7] 宋琳琳.E-Science發(fā)展情況簡介[J].圖書館學(xué)研究,,2005(7):21-23.
[8] Wang Jianwu,, CRAWL D, ALTINTAS I. Kepler+hadoop: a general architecture facilitating data-intensive applications in scientific workflow systems[C]. Proceedings of the Fourth Workshop on Workflows in Support of Large-Scale Science (WORKS09) at Supercomputing 2009 (SC2009) Conference, ACM 2009.