摘 要: 隨著科技的發(fā)展,科學(xué)領(lǐng)域的研究人員在觀察和實驗中產(chǎn)生的數(shù)據(jù)規(guī)模越來越大,科學(xué)分析任務(wù)也愈加復(fù)雜。新型的陣列數(shù)據(jù)庫和工作流技術(shù)逐漸被應(yīng)用到大規(guī)??茖W(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è)計目標是與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的值可以是一個或多個標量值,也可以是一個或多個數(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具有如下特性:
(1)SciDB事物的作用領(lǐng)域是一條SQL語句。每一條語句都涉及針對一個或者多個數(shù)組的很多操作。最后,事務(wù)結(jié)束后得到的結(jié)果存儲到目的數(shù)組中。
?。?)SciDB實現(xiàn)了數(shù)組級鎖。在事務(wù)一開始,鎖就被獲取,該鎖在查詢執(zhí)行中一直處于活躍狀態(tài)。數(shù)組鎖在查詢執(zhí)行之后被釋放。如果取消了某個查詢,該查詢所涉及的數(shù)組的相應(yīng)操作在所有節(jié)點上都被取消,從而使得數(shù)據(jù)庫可以返回到初始狀態(tài)。
(3)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í)行信息存儲在擴展標記語言(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)負載均衡部分組成。針對第1節(jié)中提到的SciDB系統(tǒng)的相關(guān)特性,科學(xué)數(shù)據(jù)分析系統(tǒng)做了相應(yīng)的處理。WAS系統(tǒng)用戶管理、WAS系統(tǒng)用戶資源管理以及WAS系統(tǒng)負載均衡部分目前還只是處于初步階段,管理的用戶是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)了負載均衡和用戶使用過程中系統(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.