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