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