齊法制 ,黃秋蘭,胡皓,田浩來,汪璐,王彥明,趙海峰,張紅梅,曾珊
1.中國科學(xué)院高能物理研究所,北京 100049
2.中國散裂中子源科學(xué)中心,廣東 東莞 523803
3.中國科學(xué)院高能物理研究所東莞分部,廣東 東莞 523803
高能同步輻射光源(High Energy Physics Photon Source,HEPS)是我國“十三五”期間優(yōu)先建設(shè)的、為國家的重大戰(zhàn)略需求和前沿基礎(chǔ)科學(xué)研究提供技術(shù)支撐平臺的國家重大科技基礎(chǔ)設(shè)施,位于懷柔科學(xué)城北部核心區(qū)域。建成之后,HEPS 將是我國第一臺高能量同步輻射光源,也將是世界上亮度最高的第四代同步輻射光源。
HEPS 建成之后將是一個開放的大型科學(xué)實驗平臺,年均面向全球用戶提供實驗機(jī)時將在5000 小時以上,開展X 射線衍射、散射、成像和譜學(xué)等同步輻射實驗。作為第四代同步輻射裝置,HEPS 產(chǎn)生的X 射線能夠獲得毫電子伏的能量分辨、納米的空間分辨率和飛秒的時間分辨(來源自《高能同步輻射光源初步設(shè)計報告》),相對于現(xiàn)有光源有數(shù)量級的提升。同時,隨著光學(xué)、電子學(xué)技術(shù)的發(fā)展,以及先進(jìn)的光學(xué)儀器、探測器的使用,用戶實驗過程中的實驗數(shù)據(jù)將呈現(xiàn)爆發(fā)性增加,海量的實驗原始數(shù)據(jù)、實驗元數(shù)據(jù)需要高效、安全地進(jìn)行采集、傳輸、存儲、分析和共享,以滿足裝置、光束線實驗站、用戶等各方面的需求,促進(jìn)依托HEPS的科研實驗產(chǎn)出。
HEPS 作為我國面向多學(xué)科綜合研究平臺類重大科技基礎(chǔ)設(shè)施,其運行和科學(xué)數(shù)據(jù)處理效率以及用戶體驗至關(guān)重要。HEPS 科學(xué)數(shù)據(jù)處理平臺作為設(shè)施的重要支撐,需要提供依托HEPS的科學(xué)實驗過程、實驗數(shù)據(jù)分析與共享、科學(xué)成果發(fā)布與管理等科研活動過程的自動化。從科學(xué)實驗用戶視角,保障用戶實驗全過程的信息化、自動化、便利化;而從HEPS 設(shè)施運行視角,需要實驗運行過程的數(shù)字化和智能化,保障設(shè)施運行高效、可靠和安全;從信息技術(shù)視角,支撐HEPS的計算平臺需要支持硬件架構(gòu)異構(gòu)化、軟件功能模塊化、功能接口及數(shù)據(jù)管理標(biāo)準(zhǔn)化。
HEPS 科學(xué)數(shù)據(jù)處理平臺需要以服務(wù)依托HEPS設(shè)施開展科學(xué)實驗的用戶和科學(xué)家需求,圍繞科學(xué)實驗數(shù)據(jù)全生命周期開展支撐服務(wù)。依托信息化基礎(chǔ)設(shè)施,結(jié)合信息化業(yè)務(wù)系統(tǒng)軟件,在整個科學(xué)實驗的前期準(zhǔn)備階段、實驗開展階段以及試驗后階段均提供相應(yīng)的融合的科研信息化綜合服務(wù)(圖1)。
HEPS 一期工程包括B1-BE 共14個線站和1個測試線站,預(yù)計平均每天產(chǎn)生200TB的原始實驗數(shù)據(jù)(峰值可達(dá)每天500TB)(表1)。但這些線站中不同線站數(shù)據(jù)產(chǎn)生速率差異較大。其中B7 線站的原始數(shù)據(jù)產(chǎn)生速率約為10GB/s,后續(xù)有可能繼續(xù)增加到30GB/s,預(yù)計每天產(chǎn)生的數(shù)據(jù)量為100TB-500TB。原始數(shù)據(jù)會通過對探測器像素的分塊采集,由多流寫入存儲系統(tǒng)。B2、BA和BE 線站的原始數(shù)據(jù)產(chǎn)生速率約為500 MB/s ~1.5 GB/s,預(yù)計每天產(chǎn)生的數(shù)據(jù)量為在15 ~40TB之間。其余線站的數(shù)據(jù)產(chǎn)生速率均小于200MB/s,每天產(chǎn)生的數(shù)據(jù)量小于4TB。三種線站的數(shù)據(jù)寫入吞吐率之間各相差了一個數(shù)量級,B7線站的存儲空間需求和數(shù)據(jù)讀寫吞吐率需求超過其他線站的總和。
線站產(chǎn)生的科學(xué)實驗數(shù)據(jù)均需要得到及時、快速的處理、分析、存儲和共享,同時需要提供實驗數(shù)據(jù)的實時分析和快速反饋,以便為實驗站用戶提供決策以指導(dǎo)和修正實驗過程。
圖1 HEPS 科學(xué)實驗過程與科學(xué)數(shù)據(jù)處理系統(tǒng)Fig.1 HEPS structure experiment duration and the science data platform of HEPS
表1 HEPS 各實驗站原始數(shù)據(jù)統(tǒng)計表Table1 Raw data production statics for beamlines in IHEP
從光束線實驗站科學(xué)家角度出發(fā),為了線站的高效運行,需要足夠的數(shù)據(jù)存儲資源并提供滿足不同計算需求(CPU,GPU,F(xiàn)PGA 等)的在線分析環(huán)境。部分實驗站產(chǎn)生的實驗數(shù)據(jù)產(chǎn)生速率較大(如B7 線站未來采用高分辨面探測器,數(shù)據(jù)產(chǎn)生速率可達(dá)50GB/s),需要具有融合數(shù)據(jù)、計算、網(wǎng)絡(luò)、軟件環(huán)境等多種功能并且優(yōu)異性能的科學(xué)數(shù)據(jù)處理平臺作為支撐,實現(xiàn)科學(xué)實驗過程和科學(xué)成果獲取所需實驗數(shù)據(jù)的及時處理、反饋和利用。從實驗用戶角度來說,希望能在短時間內(nèi)完成實驗數(shù)據(jù)的分析、獲得理想的實驗成果并獲取科研成果,因此需要HEPS 能夠提供快捷、便利、易用和友好的支撐環(huán)境,方便用戶跟蹤、訪問、下載實驗數(shù)據(jù)和成果,同時保證實驗數(shù)據(jù)的長期保存、安全和完整。部分實驗數(shù)據(jù)由于特別龐大(如衍射斷層掃描實驗,一次實驗可能產(chǎn)生高達(dá)50TB的數(shù)據(jù)),一方面需要優(yōu)質(zhì)的網(wǎng)絡(luò)性能實現(xiàn)實驗數(shù)據(jù)的快速傳輸,另一方面希望HEPS 能夠提供強大的計算平臺和軟件環(huán)境進(jìn)行實驗數(shù)據(jù)分析。
圖2 科學(xué)數(shù)據(jù)流程Fig.2 Scientific dataflow
從整個HEPS 裝置來說,對平均每天200TB、文件大小不一(KB~GB)、格式不一(ASCII、圖像、HDF5)、來源不一(不同實驗技術(shù)、光束線、前端等)的實驗數(shù)據(jù)進(jìn)行統(tǒng)一化管理是非常重要的工作。涉及科學(xué)數(shù)據(jù)庫(實驗數(shù)據(jù)庫、元數(shù)據(jù)庫、儀器設(shè)備數(shù)據(jù)庫等)、數(shù)據(jù)管理規(guī)范、數(shù)據(jù)標(biāo)準(zhǔn)化、數(shù)據(jù)接口等一系列工作,為科學(xué)數(shù)據(jù)利用和共享提供支撐和保障。
此外,HEPS 總體規(guī)劃中,未來將有超過90個光束線站運行,屆時每天產(chǎn)生實驗數(shù)據(jù)將會有更大幅度的提升,這對科學(xué)數(shù)據(jù)存儲、分析、管理和共享帶來更大的壓力,其科學(xué)數(shù)據(jù)處理平臺在規(guī)劃時需要考慮架構(gòu)、技術(shù)上的擴(kuò)展性。
HEPS 科學(xué)數(shù)據(jù)處理平臺將為HEPS 裝置、束線科學(xué)家、工程技術(shù)人員以及用戶提供包括數(shù)據(jù)傳輸、數(shù)據(jù)存儲、數(shù)據(jù)分析、數(shù)據(jù)共享、科研協(xié)同等在內(nèi)的網(wǎng)絡(luò)、計算、存儲等基礎(chǔ)設(shè)施能力,以及提供科學(xué)軟件、通用軟件、通用信息系統(tǒng)和網(wǎng)絡(luò)信息安全服務(wù)等。同時,在平臺整體規(guī)劃和建設(shè)時,統(tǒng)籌和設(shè)計同數(shù)據(jù)相關(guān)的多個系統(tǒng)之間的標(biāo)準(zhǔn)化和規(guī)劃化接口。
根據(jù)科學(xué)數(shù)據(jù)處理平臺系統(tǒng)功能,具體系統(tǒng)包括支撐平臺運行的基礎(chǔ)設(shè)施、網(wǎng)絡(luò)系統(tǒng)、存儲系統(tǒng)、計算系統(tǒng)、公共信息系統(tǒng)、網(wǎng)絡(luò)安全系統(tǒng)、智能化運維保障系統(tǒng)以及服務(wù)于科學(xué)數(shù)據(jù)全生命周期的的軟件系統(tǒng)、數(shù)據(jù)管理系統(tǒng)(圖2)。
科學(xué)數(shù)據(jù)處理軟件系統(tǒng)是HEPS 科學(xué)數(shù)據(jù)處理平臺的重要組成部分,其任務(wù)是利用平臺提供的數(shù)據(jù)存儲和訪問服務(wù)、計算資源管理和網(wǎng)絡(luò)環(huán)境等服務(wù),把實驗采集的測量數(shù)據(jù)處理成為具有明確物理意義的科學(xué)數(shù)據(jù),并通過對科學(xué)數(shù)據(jù)的分析獲得對實驗對象的科學(xué)認(rèn)識。由于光源用戶的多樣性,設(shè)備儀器和方法學(xué)的豐富性,導(dǎo)致HEPS 科學(xué)數(shù)據(jù)處理軟件是以解決和支持特定科學(xué)應(yīng)用為驅(qū)動的開發(fā)。在這種領(lǐng)域驅(qū)動設(shè)計模式(Domain Driven Design,DDD)的要求下,開發(fā)首先需要對特定業(yè)務(wù)知識進(jìn)行梳理,形成領(lǐng)域模型(Domain Model),并進(jìn)一步驅(qū)動科學(xué)數(shù)據(jù)處理軟件的設(shè)計和實現(xiàn)。HEPS 數(shù)據(jù)處理軟件的設(shè)計目標(biāo)就是開發(fā)能支持多種領(lǐng)域模型的軟件平臺,并保證各領(lǐng)域模型、科學(xué)數(shù)據(jù)處理軟件架構(gòu)以及HEPS科學(xué)數(shù)據(jù)處理平臺的迭代升級互不影響。
2.1.1 科學(xué)數(shù)據(jù)處理軟件框架
HEPS數(shù)據(jù)處理軟件有兩個典型的運行環(huán)境:(1)在線實時數(shù)據(jù)處理環(huán)境,既在實驗執(zhí)行的同時,利用有限的在線計算資源,對采集數(shù)據(jù)進(jìn)行實時處理,其結(jié)果作為線站科學(xué)家和用戶判斷實驗進(jìn)展情況,并對隨后的實驗做出動態(tài)調(diào)整的依據(jù);(2)離線數(shù)據(jù)處理環(huán)境,即在實驗結(jié)束后,利用用戶或計算中心的計算資源,對采集的數(shù)據(jù)進(jìn)行細(xì)致、全面和深入的處理分析,其結(jié)果作為用戶科學(xué)發(fā)現(xiàn)的實驗證據(jù)。由于計算技術(shù)和實驗方法學(xué)的發(fā)展,原來很多需要離線處理的數(shù)據(jù)現(xiàn)在已經(jīng)可以實時處理。同時現(xiàn)代實驗技術(shù)和方法,如材料基因組等研究計劃提出了高通量實驗方法,成像線站的計算機(jī)斷層掃描方法,都能在短時間內(nèi)獲得大量的測量數(shù)據(jù),導(dǎo)致離線數(shù)據(jù)處理也需要借鑒在線數(shù)據(jù)處理系統(tǒng)在自動化和集成計算方面的經(jīng)驗。因此我們在設(shè)計HEPS科學(xué)數(shù)據(jù)處理軟件系統(tǒng)時,希望在線和離線數(shù)據(jù)處理系統(tǒng)能最大程度的共享計算組件。這種在線離線軟件融合的設(shè)計,不但能降低開發(fā)和維護(hù)的工作量,也有利于向用戶提供統(tǒng)一的操作體驗,降低學(xué)習(xí)曲線。
為了實現(xiàn)這一目標(biāo),科學(xué)數(shù)據(jù)處理軟件系統(tǒng)劃分為四個部分:(1)軟件框架;(2)可視化和數(shù)據(jù)分析平臺;(3)基于微服務(wù)的分布式中間件;(4)第三方軟件庫和外部程序集成。由于光源的運行長達(dá)數(shù)十年,期間儀器技術(shù)、實驗方法和計算硬件都會發(fā)生巨大的變化,因此軟件系統(tǒng)整體的設(shè)計必須考慮計算組件之間的低耦和,以及計算平臺的可拓展性,故在設(shè)計中我們遵循如下原則:(1)面向接口的系統(tǒng)設(shè)計,接口是計算組件之間交互的協(xié)議,通過定義接口而不是綁定實現(xiàn)來保證計算系統(tǒng)的靈活性;(2)插件式的開發(fā)模式,插件是遵循接口定義完成特定功能的計算組件,光源軟件平臺通過插件開發(fā)來拓展系統(tǒng)的功能。
科學(xué)數(shù)據(jù)處理軟件框架基于SNiPER[1](圖3)開發(fā),并提供HEPS 科學(xué)計算所需的通用功能組件。SNiPER 實現(xiàn)了以數(shù)據(jù)為中心面向接口的軟件架構(gòu),由C++開發(fā)并提供Python 接口,兼顧計算的高效性和軟件架構(gòu)的靈活性,已經(jīng)應(yīng)用在江門中微子實驗、中國散裂中子源[2]和高海拔宇宙線觀測站的數(shù)據(jù)處理系統(tǒng)中。該框架最重要的兩個組件是瞬態(tài)數(shù)據(jù)對象和算法對象。瞬態(tài)數(shù)據(jù)對象,是軟件運行過程中內(nèi)存中保存的數(shù)據(jù)對象,呈樹型結(jié)構(gòu),能通過路徑名被框架其他組件直接訪問。由于現(xiàn)在大量科學(xué)計算程序都是基于Python 科學(xué)計算庫NumPy 開發(fā),且NumPy的基礎(chǔ)數(shù)據(jù)對象ndarray 由C 實現(xiàn)并能方便的被C++調(diào)用,HEPS的基本瞬態(tài)數(shù)據(jù)對象也采用ndarray 數(shù)據(jù)對象,用戶可以在此基礎(chǔ)上拓展定義自己的數(shù)據(jù)對象。算法對象是執(zhí)行數(shù)據(jù)處理的具體計算組件,領(lǐng)域模型被包裝在具體算法中,由Python或者C++實現(xiàn),其輸入輸出一般為特定瞬態(tài)數(shù)據(jù)對象,并且實現(xiàn)框架定義的算法接口,這樣框架就能通過接口調(diào)用算法,實現(xiàn)算法和框架之間調(diào)用的解耦合。HEPS 科學(xué)數(shù)據(jù)處理軟件接受兩種輸入輸出數(shù)據(jù):一種是文件,軟件通過指定路徑讀取或?qū)懭胛募募忻鞔_的大小和邊界(即文件頭和文件結(jié)束標(biāo)記);另一種是數(shù)據(jù)流(Data Stream),軟件通過指定端口獲取數(shù)據(jù),數(shù)據(jù)流沒有明確的邊界。軟件需要支持HDF5 格式的文件讀寫,以及線站要求的其他格式數(shù)據(jù),因此軟件的輸入輸出模塊應(yīng)該具有插件架構(gòu),可以靈活的更換數(shù)據(jù)源并轉(zhuǎn)換為指定瞬態(tài)數(shù)據(jù)對象,實現(xiàn)外部數(shù)據(jù)源和瞬態(tài)數(shù)據(jù)對象的解耦合。軟件框架對外提供C++和Python的應(yīng)用程序接口(Application Programming Interface,API),其他應(yīng)用程序可以通過API 訪問軟件的所有功能。
圖3 SNiPER 軟件框架Fig.3 SNiPER frame
2.1.2 可視化與數(shù)據(jù)分析
可視化和數(shù)據(jù)分析軟件是搭建在軟件框架上的一個重要應(yīng)用(圖4)。由于Python 在數(shù)據(jù)處理領(lǐng)域的廣泛應(yīng)用,可視化和數(shù)據(jù)分析軟件由Python 實現(xiàn),并通過框架提供的Python API 訪問其功能。可視化和數(shù)據(jù)分析軟件提供三種用戶界面,分別為基于ipython的腳本窗口,基于matplotlib和PyQt的圖形化用戶界面(Graphical User Interfaces,GUI),以及基于Jupyter的Web 界面。對于通用GUI 界面,我們將開發(fā)多種常用圖形化組件(Widget),包括項目導(dǎo)航(The Project Explorer)、文件導(dǎo)航(File Browsing)、 瞬態(tài)數(shù)據(jù)瀏覽(Data Browsing)、數(shù)據(jù)視圖(Data View)、繪圖界面(Dataset Plot)、算法導(dǎo)航(Algorithm Browsing)、運行日志(Log)和終端(Console)等,并通過Qt 提供通過的QML(Qt Modeling Language)用戶界面標(biāo)記語言定義這些Widgets的組合和排列,為每條線站和應(yīng)用提供自己獨特的用戶界面。傳統(tǒng)交互式數(shù)據(jù)處理軟件遵從REPL(Read-Evaluate-Print Loop,讀入-求值-輸出循環(huán))編程模型,在此模型中,所有操作都在同一單進(jìn)程/單線程中循環(huán)執(zhí)行,由于光源數(shù)據(jù)量往往較大,同時數(shù)據(jù)分析算法的運行時間往往較長,采用這種編程模型會導(dǎo)致程序暫時失去響應(yīng),因此可視化和數(shù)據(jù)分析軟件的前端用戶界面和執(zhí)行模塊分屬不同進(jìn)程,并通過ZeroMQ 消息隊列和Jupyter Message 消息標(biāo)準(zhǔn)進(jìn)行通訊。這種編程模式也有很好的拓展性,適應(yīng)從單機(jī)程序到分布式并行程序的遷移。
圖4 可視化和數(shù)據(jù)分析軟件Fig.4 Software for visualization and analysis
2.1.3 分布式中間件
如上所述,HEPS 數(shù)據(jù)處理軟件需要運行在不同的計算環(huán)境中,包括在線實時處理環(huán)境、離線高性能計算環(huán)境和用戶計算機(jī)系統(tǒng),然而我們不希望線站科學(xué)家的注意力放在配置和管理計算資源,同時實驗所需計算資源能根據(jù)需求實現(xiàn)自動的伸縮。微服務(wù)架構(gòu)(圖5)是解決這一問題的較好方案,其中微服務(wù)是一個有獨立功能的可訪問應(yīng)用,通常以容器的形式部署在科學(xué)數(shù)據(jù)分析系統(tǒng)提供的異構(gòu)分布式計算環(huán)境中;微服務(wù)網(wǎng)關(guān)(micro service gateway)是所有微服務(wù)的入口和反向代理,調(diào)用申請首先到達(dá)網(wǎng)關(guān),網(wǎng)關(guān)根據(jù)服務(wù)路由將請求重定向到特定的微服務(wù);工作流引擎(workflow engine)根據(jù)用戶提交的業(yè)務(wù)申請和初始參數(shù),生成微服務(wù)調(diào)用序列,即工作流(work flow)或管道(pipeline),數(shù)據(jù)從數(shù)據(jù)源輸入工作流,經(jīng)過一系列微服務(wù)的調(diào)用,最終獲得結(jié)果輸出。一個基于微服務(wù)的分布式中間件,可以通過微服務(wù)網(wǎng)關(guān)屏蔽分布式環(huán)境的實現(xiàn)細(xì)節(jié),在不修改程序代碼的同時,能滿足從用戶單臺計算機(jī)到計算集群等不同計算環(huán)境的適配。同時領(lǐng)域模型被控制在微服務(wù)的邊界內(nèi)部,不同微服務(wù)通過輕量級的通訊協(xié)議交互,可以較好地實現(xiàn)計算組件的高內(nèi)聚和低耦合。我們采用消息隊列(Message Queue,MQ)實現(xiàn)微服務(wù)之間的通訊,由于科學(xué)數(shù)據(jù)處理軟件需要傳遞大量數(shù)據(jù),我們區(qū)別兩種類型的消息,一種是含控制指令的遠(yuǎn)程過程調(diào)用(RPC)消息,另外一種是數(shù)據(jù)對象序列化后生成的數(shù)據(jù)流。前者數(shù)據(jù)量較小但是要求響應(yīng)及時,采用符合Jupyter Message 消息標(biāo)準(zhǔn)的JSON 數(shù)據(jù)對象表達(dá);后者著重吞吐量,由數(shù)據(jù)發(fā)送方和接收方共同定義數(shù)據(jù)格式,并自行實現(xiàn)瞬態(tài)數(shù)據(jù)對象的序列化與反序列化。
圖5 基于微服務(wù)的工作流實現(xiàn)Fig.5 Workflow based on microservice
2.1.4 面向用戶的軟件集成
利用X 射線研究物質(zhì)結(jié)構(gòu)的科學(xué)探索過程已經(jīng)持續(xù)了一個多世紀(jì),在此期間眾多科研團(tuán)體開發(fā)了大量的數(shù)據(jù)處理代碼,形成了功能繁多的第三方軟件和外部程序。HEPS的軟件系統(tǒng)雖然準(zhǔn)備在最新的計算體系上開發(fā)先進(jìn)的軟件架構(gòu),但是繼承前人積累的遺留代碼依然是一項重要的工作。由前面的論述可知,第三方軟件和外部程序可以通過兩種方式集成進(jìn)入HEPS 數(shù)據(jù)處理軟件系統(tǒng):一種是通過算法包裝外部程序,實現(xiàn)框架定義的算法接口,并在算法內(nèi)部實現(xiàn)框架標(biāo)準(zhǔn)數(shù)據(jù)對象和外部程序數(shù)據(jù)對象的轉(zhuǎn)換;另外一種方式是通過微服務(wù)包裝外部程序。前一種方法,外部程序能通過算法直接調(diào)用框架的所有功能,集成度較好,數(shù)據(jù)對象直接通過框架的瞬態(tài)數(shù)據(jù)對象機(jī)制訪問和管理,效率較高,但是這種集成方式要求深入理解框架和外部程序的內(nèi)部實現(xiàn),工作量較大,因此是科學(xué)計算組件集成較好的選擇;第二種方式,外部程序包裝成微服務(wù),獨立部署運行,通過消息隊列與其他組件交互,雖然集成度不及前者,而且需要分布式環(huán)境的支持,但是實現(xiàn)相對容易,是其他系統(tǒng)接入科學(xué)數(shù)據(jù)處理軟件系統(tǒng)較好的選擇。
基于面向科學(xué)用戶提供便捷化、易用性服務(wù)的需求,將使用軟件框架、設(shè)備控制系統(tǒng)、數(shù)據(jù)獲取系統(tǒng)以及數(shù)據(jù)處理軟件系統(tǒng)的功能和用戶交互功能運行于在線數(shù)據(jù)處理環(huán)境中,使得HEPS 數(shù)據(jù)處理軟件通過數(shù)據(jù)獲取系統(tǒng)訪問實時采集的測量數(shù)據(jù),經(jīng)過快速數(shù)據(jù)處理后,獲得快視結(jié)果,并返回給控制系統(tǒng),作為下一步實驗計劃的依據(jù),構(gòu)成數(shù)據(jù)獲取-數(shù)據(jù)分析-控制反饋的閉環(huán)過程。因此有必要開發(fā)一個集成環(huán)境,作為實驗用戶訪問數(shù)據(jù)獲取系統(tǒng)、在線數(shù)據(jù)處理系統(tǒng)和控制系統(tǒng)的統(tǒng)一界面。
集成環(huán)境和軟件系統(tǒng)的交互可以分為兩種層次。第一層次是可視化和數(shù)據(jù)分析軟件作為集成環(huán)境的子系統(tǒng),提供通用分析界面和功能,如文件導(dǎo)航、瞬態(tài)數(shù)據(jù)瀏覽、數(shù)據(jù)視圖、繪圖界面、算法導(dǎo)航和ipython 終端。由于可視化和數(shù)據(jù)分析軟件采用的前端用戶接口和執(zhí)行模塊分屬不同進(jìn)程,集成環(huán)境可以利用Qt 運行環(huán)境并通過QML 加載所需Widget的方式配置分析界面組件,實現(xiàn)各線站定制的在線快視分析界面,執(zhí)行模塊在后臺運行數(shù)據(jù)分析算法,并通過消息隊列進(jìn)行交互。第二層次是集成環(huán)境作為客戶端,通過調(diào)用HEPS 數(shù)據(jù)處理軟件系統(tǒng)開放的API,向在線數(shù)據(jù)處理系統(tǒng)發(fā)出訪問請求,以獲得特定微服務(wù)響應(yīng),或者向工作流引擎發(fā)出業(yè)務(wù)申請,以啟動所需數(shù)據(jù)處理的工作流。
科學(xué)數(shù)據(jù)管理系統(tǒng)需要實現(xiàn)對HEPS 實驗產(chǎn)生的所有科學(xué)數(shù)據(jù)在數(shù)據(jù)獲取、傳輸、存儲、分析和數(shù)據(jù)成果發(fā)布各個階段進(jìn)行全生命周期的管理和跟蹤。需要實現(xiàn)的目標(biāo)包括:制定科學(xué)數(shù)據(jù)管理標(biāo)準(zhǔn)與規(guī)范;研究和設(shè)計科學(xué)元數(shù)據(jù)目錄管理架構(gòu),實現(xiàn)對科學(xué)數(shù)據(jù)全生命周期的管理,保證科學(xué)數(shù)據(jù)的完整性和可追溯性;實現(xiàn)在實驗不同階段從控制系統(tǒng)、用戶服務(wù)系統(tǒng)、數(shù)據(jù)分析系統(tǒng)獲取數(shù)據(jù)和元數(shù)據(jù);提供標(biāo)準(zhǔn)接口,滿足其他各系統(tǒng)之間的協(xié)作與通訊;提供高效便捷的用戶數(shù)據(jù)服務(wù),實現(xiàn)數(shù)據(jù)管理制度和規(guī)范下對數(shù)據(jù)的可查看、可下載、可共享和可利用。
2.2.1 科學(xué)數(shù)據(jù)管理總體架構(gòu)
科學(xué)數(shù)據(jù)管理系統(tǒng)數(shù)據(jù)流圖(圖6)描述了整個實驗過程中所有數(shù)據(jù)流向過程。具體包括:從線站接收的原始數(shù)據(jù)和科學(xué)元數(shù)據(jù)以文件的形式保存到數(shù)據(jù)中心存儲。另一方面,原始數(shù)據(jù)流經(jīng)過在線分析系統(tǒng)得到的分析結(jié)果數(shù)據(jù)同樣也保存到數(shù)據(jù)中心存儲。同時,元數(shù)據(jù)提取器從用戶服務(wù)系統(tǒng)獲取提案、用戶、樣本相關(guān)信息,從實驗參數(shù)文件獲取部分關(guān)鍵實驗元數(shù)據(jù),并存儲到元數(shù)據(jù)目錄數(shù)據(jù)庫,用于實驗數(shù)據(jù)的查找、搜索和共享。如果從探測器獲取的原始數(shù)據(jù)文件不是標(biāo)準(zhǔn)HDF5 格式,需要對數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換和數(shù)據(jù)封裝(包括原始數(shù)據(jù)和所有元數(shù)據(jù)),形成標(biāo)準(zhǔn)HDF5 文件,注冊元數(shù)據(jù)并長期保存。用戶通過數(shù)據(jù)服務(wù)portal可以對數(shù)據(jù)進(jìn)行搜索、查看、下載和離線分析,同時,被經(jīng)過離線計算分析得到的結(jié)果數(shù)據(jù)同樣會被存放到中心存儲文件系統(tǒng)中長期保存。
圖6 科學(xué)數(shù)據(jù)管理系統(tǒng)數(shù)據(jù)流圖Fig.6 The data flow for HEPS data management system
2.2.2 科學(xué)數(shù)據(jù)管理策略[3]
為進(jìn)一步加強和規(guī)范科學(xué)數(shù)據(jù)管理,保障科學(xué)數(shù)據(jù)安全,提高開放共享水平,國務(wù)院辦公廳已發(fā)布《科學(xué)數(shù)據(jù)管理辦法》[4]??茖W(xué)數(shù)據(jù)開放共享已經(jīng)成為國際科研領(lǐng)域的必然發(fā)展趨勢。但是,目前仍然缺乏相關(guān)國家法律法規(guī)對用戶類設(shè)施科學(xué)數(shù)據(jù)的所有權(quán)和使用權(quán)做清晰的解釋和說明。因此,制定數(shù)據(jù)策略對HEPS 科學(xué)數(shù)據(jù)管理執(zhí)行以及未來科學(xué)數(shù)據(jù)開放共享具有重大意義。該科學(xué)數(shù)據(jù)策略是整個數(shù)據(jù)管理過程的制度和規(guī)范,對HEPS的科學(xué)數(shù)據(jù)管理必須遵從該數(shù)據(jù)策略的各項規(guī)定。
HEPS 科學(xué)數(shù)據(jù)策略包括對設(shè)施獲取的所有數(shù)據(jù)以及元數(shù)據(jù)的所有權(quán)、管理、存儲、訪問四個方面作出的約束和說明。HEPS 會對產(chǎn)生的數(shù)據(jù)進(jìn)行長期保存,其中包括提供至少三個月磁盤存儲和永久磁帶存儲;對原始數(shù)據(jù)、結(jié)果數(shù)據(jù)、刻度數(shù)據(jù)、用戶數(shù)據(jù)長期存儲,對縮減數(shù)據(jù)、過程數(shù)據(jù)短期保存;每個數(shù)據(jù)集都分配唯一永久標(biāo)識(PID),任何與該數(shù)據(jù)集相關(guān)的發(fā)表文章必須引用數(shù)據(jù)集的PID;制定數(shù)據(jù)封閉期,例如三年,封閉期之內(nèi),只有授權(quán)用戶擁有數(shù)據(jù)所有權(quán),封閉期過后,數(shù)據(jù)可以提供給其他合法用戶訪問和下載。
2.2.3 元數(shù)據(jù)分類
2.2.3.1 元數(shù)據(jù)定義和分類
管理元數(shù)據(jù)(administrative metadata):管理元數(shù)據(jù)包括與數(shù)據(jù)相關(guān)的提案信息、用戶信息、實驗類型、線站信息等,來自提案系統(tǒng)和用戶系統(tǒng)。
科學(xué)元數(shù)據(jù)(scientific metadata):包括與數(shù)據(jù)相關(guān)的樣本信息和實驗環(huán)境參數(shù)等相關(guān)信息,從控制系統(tǒng)獲取。由于科學(xué)元數(shù)據(jù)會被用于數(shù)據(jù)分析和數(shù)據(jù)目錄索引,它需要進(jìn)行兩部分存儲:與原始文件一起進(jìn)行數(shù)據(jù)封裝標(biāo)準(zhǔn)化,生成HDF5 文件,同時需要被存儲到元數(shù)據(jù)庫。
圖7 SciCat 元數(shù)據(jù)管理架構(gòu)Fig.7 SciCat meta data management structure
其他元數(shù)據(jù)(other metadata):其他元數(shù)據(jù)主要來自傳輸或者分析應(yīng)用,包括該數(shù)據(jù)傳輸中完整性校驗信息(checksum)、分析軟件名稱版本信息、數(shù)據(jù)更新時間等。
2.2.3.2 元數(shù)據(jù)管理框架
SciCat[5-6]是由PSI、ESS和MaxIV 合作研發(fā)的開源的元數(shù)據(jù)目錄管理框架,通過微服務(wù)的架構(gòu)對科學(xué)數(shù)據(jù)進(jìn)行全生命周期的管理。SciCat 架構(gòu)(圖7)采用了彈性框架,具有可擴(kuò)展性,不受數(shù)據(jù)類型和數(shù)據(jù)量變化的限制;使用json 文件定義元數(shù)據(jù)模型,并且可由元數(shù)據(jù)模型直接生成RESTful API,供其他系統(tǒng)調(diào)用;后端采用非關(guān)系型文檔數(shù)據(jù)庫MongoDB,支持高并發(fā)元數(shù)據(jù)讀寫,同時數(shù)據(jù)結(jié)構(gòu)靈活,能符合各線站元數(shù)據(jù)不一致的需求;支持可視化編程的數(shù)據(jù)流處理,高效地匹配每個線站前期元數(shù)據(jù)處理和整理的流程;同時該架構(gòu)集成基于Web的可視化界面,支持元數(shù)據(jù)檢索功能,簡化后期Web 界面開發(fā)過程。
該架構(gòu)采用消息隊列的方式接收從線站收集數(shù)據(jù)集的相關(guān)元數(shù)據(jù),元數(shù)據(jù)提取器從消息隊列消費元數(shù)據(jù),并將元數(shù)據(jù)通過元數(shù)據(jù)管理API 存放至元數(shù)據(jù)目錄數(shù)據(jù)庫中。用戶通過提供的數(shù)據(jù)web 服務(wù)界面在元數(shù)據(jù)目錄數(shù)據(jù)庫中搜索查找數(shù)據(jù)集。同時,用戶可以將數(shù)據(jù)發(fā)送至現(xiàn)有計算資源或超算平臺進(jìn)行分析和處理,數(shù)據(jù)相關(guān)分析和處理作業(yè)信息被保存到元數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)處理過程的跟蹤。數(shù)據(jù)分析的結(jié)果被保存到數(shù)據(jù)中心存儲,相關(guān)分析結(jié)果元數(shù)據(jù)和數(shù)據(jù)發(fā)布信息最終被保存至元數(shù)據(jù)庫。該架構(gòu)可實現(xiàn)對數(shù)據(jù)集從提案、數(shù)據(jù)獲取、數(shù)據(jù)存儲、數(shù)據(jù)分析到數(shù)據(jù)發(fā)布整個過程進(jìn)行全生命周期的記錄和跟蹤。
2.2.4 關(guān)鍵技術(shù)
2.2.4.1 消息隊列
消息隊列是一種應(yīng)用間的異步協(xié)作機(jī)制,消息發(fā)送后可以立即返回,由消息系統(tǒng)來確保消息的可靠傳遞,具有以下特性。
(1)可靠性:使用持久化、傳輸確認(rèn)、發(fā)布確認(rèn)等機(jī)制來保證可靠性;
(2)消息集群:提供消息集群服務(wù),形成一個邏輯 Broker;
(3)高可用:隊列可以在集群中的機(jī)器上進(jìn)行鏡像,使得在部分節(jié)點出問題的情況下隊列仍然可用;
(4)多種協(xié)議:支持多種消息隊列協(xié)議,比如STOMP、MQTT 等;
(5)易用性:提供易用的用戶界面,使得用戶可以監(jiān)控和管理消息 Broker ;
(6)跟蹤機(jī)制:提供消息跟蹤機(jī)制,使用者可以跟蹤消息異常情況。
擬采用消息隊列技術(shù)來實現(xiàn)高并發(fā)元數(shù)據(jù)接收和存儲,解決高速元數(shù)據(jù)產(chǎn)生時本地IO與數(shù)據(jù)庫寫入速度不匹配的問題,同時也可以使用傳輸確認(rèn)、發(fā)布確認(rèn)等機(jī)制來保證傳輸?shù)目煽啃浴?/p>
2.2.4.2 非關(guān)系型數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。旨在為Web 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富、最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)是類似json的bson 格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo 最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。其特點是高性能、易部署、易使用。
(1)面向集合存儲、易存儲對象類型數(shù)據(jù);
(2)使用高效的二進(jìn)制數(shù)據(jù)存儲,包括大型對象(如圖片、視頻等);
(3)支持完全索引,包含內(nèi)部對象;
(4)支持RUBY、PYTHON、JAVA、C++、PHP等多種語言;
(5)文件存儲格式為BSON;
(6)支持復(fù)制和故障恢復(fù)。
采用MongoDB 作為科學(xué)元數(shù)據(jù)存儲數(shù)據(jù)庫,面向集合的存儲特性能滿足元數(shù)據(jù)模型中分層數(shù)據(jù)關(guān)系的存儲;對完全索引的支持,有利于對數(shù)據(jù)進(jìn)行快速高效地檢索;提供REST API 接口,為各個應(yīng)用提供標(biāo)準(zhǔn)的無狀態(tài)接口,使用http 方式對數(shù)據(jù)庫進(jìn)行CRUD 操作。
2.2.4.3 數(shù)據(jù)格式標(biāo)準(zhǔn)化
HDF5[7](Hierarchical Data Format 5)是一種分層數(shù)據(jù)格式,由數(shù)據(jù)格式規(guī)范和支持庫實現(xiàn)組成,是用于存儲和分發(fā)科學(xué)數(shù)據(jù)的一種自我描述、多對象文件格式。HDF5可以表示出科學(xué)數(shù)據(jù)存儲和分布的許多必要條件。
HDF5 數(shù)據(jù)格式具有以下特性:通用性,許多數(shù)據(jù)類型都可以被嵌入在一個HDF5 文件里;靈活性,允許相關(guān)數(shù)據(jù)對象組合在一起,放到一個分層結(jié)構(gòu)中,向數(shù)據(jù)對象添加描述和標(biāo)簽;跨平臺性,它是一個與平臺無關(guān)的文件格式,無需任何轉(zhuǎn)換就可以在不同平臺上使用。HDF5 文件以分層結(jié)構(gòu)組織,其中包含兩個主要結(jié)構(gòu):組和數(shù)據(jù)集。分組結(jié)構(gòu)包含零個或多個組或數(shù)據(jù)集的實例;數(shù)據(jù)集是數(shù)據(jù)元素的多維數(shù)組。
采用HDF5 作為HEPS 數(shù)據(jù)統(tǒng)一的格式標(biāo)準(zhǔn),組合相應(yīng)數(shù)據(jù)對象放到分層結(jié)構(gòu)中,并為數(shù)據(jù)對象添加描述和標(biāo)簽,實現(xiàn)對元數(shù)據(jù)模型中多層數(shù)據(jù)關(guān)聯(lián)結(jié)構(gòu)描述。
存儲系統(tǒng)為各線站提供快速存儲和長期保存服務(wù),為用戶和離線分析作業(yè)提供數(shù)據(jù)共享和文件系統(tǒng)訪問接口,為遠(yuǎn)程用戶提供跨域數(shù)據(jù)共享服務(wù)。主要的應(yīng)用場景包括:線站數(shù)據(jù)流寫入、在線快視、離線數(shù)據(jù)分析、長期保存以及跨域數(shù)據(jù)共享等。系統(tǒng)包括線站存儲和中心存儲兩個部分,除數(shù)據(jù)接口、訪問性能、可靠性和性價比等與其它科學(xué)計算設(shè)施共性需求外,光源存儲還需要考慮到不同線站對存儲需求的多樣性。
2.3.1 總體架構(gòu)設(shè)計
光源存儲系統(tǒng)(圖8)包括線站存儲、中心磁盤存儲和磁帶存儲三個層級。每個線站有獨立的線站存儲,一般只存儲一次實驗(持續(xù)時間1-3 天)的數(shù)據(jù)。實驗進(jìn)行過程中,用戶通過快視服務(wù)器檢查采集到線站存儲的數(shù)據(jù)??煲暦?wù)器可以讀在線存儲,可以讀采集服務(wù)器轉(zhuǎn)發(fā)的數(shù)據(jù)流。如果數(shù)據(jù)有問題,則需要調(diào)整探測器和樣本,重新采集。快視服務(wù)器產(chǎn)生的數(shù)據(jù)的寫入吞吐率,遠(yuǎn)小于探測器。如果數(shù)據(jù)沒有問題,則通過在線數(shù)據(jù)處理服務(wù)器將數(shù)據(jù)異步拷貝到中心存儲并注冊到數(shù)據(jù)管理系統(tǒng)。中心磁盤存儲系統(tǒng)是各實驗共享的分布式文件系統(tǒng),用戶只能對中心磁盤存儲上的數(shù)據(jù)進(jìn)行大規(guī)模重建、分析、拷貝和遠(yuǎn)程訪問。原始數(shù)據(jù)在中心磁盤存儲中存放的期限是從實驗結(jié)束開始計算的2-6個月,超過期限的數(shù)據(jù)會被保存到磁帶存儲中。中心磁盤存儲中產(chǎn)生的衍生數(shù)據(jù),會被定期刪除,不會拷貝到磁帶存儲中。
圖8 存儲系統(tǒng)架構(gòu)Fig.8 Structure of the storage system
2.3.2 詳細(xì)設(shè)計
2.3.2.1 線站存儲
計劃通過入門級NAS(Network Attached Storage,網(wǎng)絡(luò)附加存儲)、企業(yè)級NAS和高性能NAS 存儲設(shè)備來滿足各線站的數(shù)據(jù)訪問需求。NAS 設(shè)備集成了多種數(shù)據(jù)訪問協(xié)議,Windows 客戶端可以通過SMB協(xié)議,Linux 客戶端可以通過NFS 協(xié)議來訪問數(shù)據(jù)。訪問接口與本地文件系統(tǒng)沒有區(qū)別,多個客戶端可以共享線站存儲的名字空間,實現(xiàn)一定級別的數(shù)據(jù)同步功能。對于B7 線站,基于全閃盤陣的高性能NAS 能夠?qū)崿F(xiàn)從10GB/s 到TB/s。每秒的訪問吞吐率線性擴(kuò)展和從數(shù)百TB 到數(shù)十PB的容量擴(kuò)展,可以滿足其存儲性能挑戰(zhàn)。以上三種NAS 產(chǎn)品均可配置圖形化的性能監(jiān)控、存儲管理界面以及故障告警,保證了系統(tǒng)的可靠性和易維護(hù)性。
2.3.2.2 中心磁盤存儲
中心磁盤存儲主要基于Lustre 分布式文件系統(tǒng)搭建,通過元數(shù)據(jù)和數(shù)據(jù)分離的架構(gòu)實現(xiàn)讀寫吞吐率的線性可擴(kuò)展性。 Lustre是高性能計算領(lǐng)域使用最廣泛的分布式文件系統(tǒng),在全球Top 100 超級計算機(jī)中,已經(jīng)存在若干超過HEPS 需求的部署實例。如圖8,所示元數(shù)據(jù)服務(wù)器集群包括多臺Lustre 元數(shù)據(jù)服務(wù)器,通過SAN 存儲交換網(wǎng)絡(luò)連接一個高性能全閃存存儲陣列,每個服務(wù)器連接的元數(shù)據(jù)設(shè)備是該陣列的一個LUN。同時,系統(tǒng)還設(shè)計了一個低速盤陣來異步地拷貝全閃盤陣中的數(shù)據(jù),進(jìn)一步保證元數(shù)據(jù)的可靠性。數(shù)據(jù)服務(wù)器通過FC 通路主連一個磁盤陣列作為數(shù)據(jù)存儲設(shè)備。每個磁盤陣列配置兩個以上的控制器以及RAID 6 以上的數(shù)據(jù)冗余和快速數(shù)據(jù)重建能力。所有服務(wù)器均通過兩兩之間的Active-Active 熱備實現(xiàn)服務(wù)高可用性,通過雙端口綁定、雙鏈路冗余等技術(shù)避免單點失效。所有服務(wù)器通過高帶寬、低延時的百Gb 高速網(wǎng)絡(luò)向計算集群提供服務(wù)。
2.3.2.3 中心磁帶存儲
中心磁帶存儲將采用CERN CASTOR 磁帶管理系統(tǒng),該系統(tǒng)已經(jīng)有數(shù)百PB的部署實例,可以驅(qū)動市場上主流的磁帶格式和磁帶庫硬件。系統(tǒng)包括請求隊列、磁帶驅(qū)動器、磁帶服務(wù)器和名字服務(wù)器等組件。磁帶服務(wù)器可以通過FC 通道驅(qū)動磁帶庫的機(jī)械手,并且通過HBA 卡連接磁帶驅(qū)動器讀寫數(shù)據(jù)。通過CASTOR 提供的數(shù)據(jù)訪問接口和API,用戶可以順序的讀寫磁帶中的數(shù)據(jù)文件。如圖8所示,數(shù)據(jù)在磁盤和磁帶之間的透明移動由專門的數(shù)據(jù)拷貝節(jié)點實現(xiàn),這些節(jié)點同時安裝了Lustre和CASTOR的客戶端。用戶在Lustre 客戶端發(fā)起了歸檔和讀出請求后,Lustre 會將這些請求放在自己的分級存儲隊列中,數(shù)據(jù)拷貝節(jié)點從分級存儲隊列中主動拉取請求進(jìn)行數(shù)據(jù)讀寫。用戶在Lustre 客戶端發(fā)出的分級存儲請求會一直阻塞到CASTOR中的讀寫順利完成。
2.3.3 關(guān)鍵技術(shù)
2.3.3.1 分布式文件系統(tǒng)
考慮到線站存儲將采用軟硬一體化的商業(yè)NAS產(chǎn)品,存儲系統(tǒng)的核心技術(shù)主要體現(xiàn)在中心存儲的設(shè)計上。中心存儲計劃采用在高性能計算領(lǐng)域應(yīng)用最廣泛的分布式文件系統(tǒng)作為技術(shù)方案。其中仍需要解決的問題包括智能運維、分級存儲以及性價比等。根據(jù)高能所計算中心長達(dá)10 余年的Lustre 建設(shè)和運維經(jīng)驗,實現(xiàn)智能運維首先需要解決細(xì)粒度的性能監(jiān)控問題,有了監(jiān)控數(shù)據(jù)以后可以用基于機(jī)器學(xué)習(xí)的算法和模型實現(xiàn)故障檢測、異常作業(yè)發(fā)現(xiàn)、訪問熱度預(yù)測以及參數(shù)調(diào)優(yōu)等自動化運維任務(wù)。為了實現(xiàn)對磁盤數(shù)據(jù)和磁帶數(shù)據(jù)的透明訪問,還需開發(fā)針對CASTOR 磁帶存儲系統(tǒng)的Lustre 插件。Lustre是還在發(fā)展中的文件系統(tǒng),目前還在開發(fā)中的文件副本、糾刪碼數(shù)據(jù)冗余和元數(shù)據(jù)訪問性能優(yōu)化等功能,有望在HEPS 存儲系統(tǒng)實施時完成開發(fā),使用這些功能和更為廉價的存儲盤陣,可以在保證數(shù)據(jù)可靠性的同時,進(jìn)一步提高存儲系統(tǒng)的性價比。
2.3.3.2 數(shù)據(jù)壓縮技術(shù)
對存儲空間和訪問帶寬需求最多的線站是成像實驗線站。成像實驗通過對樣品進(jìn)行不同角度的投影成像和對成像數(shù)據(jù)的斷層掃描,實現(xiàn)對樣本內(nèi)部構(gòu)造的詳細(xì)分析。一組成像數(shù)據(jù)可以看成是一套連續(xù)的圖片幀,每幀圖片為16 比特位的灰度圖片。如果能夠利用相鄰兩幀數(shù)據(jù)的相似性以及樣本運動軌跡的先驗知識,有望通過圖片幀的預(yù)測、殘差計算和數(shù)據(jù)壓縮等方法,實現(xiàn)對數(shù)據(jù)容量大幅度的無損壓縮。數(shù)據(jù)壓縮的比例,將決定存儲系統(tǒng)的造價和訪問帶寬開銷。同時,還需要可以通過GPU、FPGA 等硬件加速數(shù)據(jù)壓縮和解壓過程,保證算法的可實時性。
科學(xué)數(shù)據(jù)分析系統(tǒng)旨在滿足高能光源實驗的科學(xué)研究需求,通過建造HEPS 實驗快速在線數(shù)據(jù)處理集群和離線計算集群,用來支持HEPS 在線計算和大規(guī)模離線數(shù)據(jù)處理。圖9 顯示了HEPS 實驗數(shù)據(jù)產(chǎn)生、處理、存儲、傳輸?shù)冗^程中的數(shù)據(jù)流,科學(xué)數(shù)據(jù)分析系統(tǒng)的功能主要體現(xiàn)在圖9中的紅色圓圈部分,包括在線數(shù)據(jù)處理服務(wù)和離線數(shù)據(jù)集群兩部分。該系統(tǒng)將提供一個混合CPU、GPU 等多類型計算資源的大規(guī)模異構(gòu)計算系統(tǒng)。根據(jù)HEPS 不同光束線站實驗及不同用戶的使用模式,設(shè)計相應(yīng)的計算服務(wù)解決方案,保證科學(xué)計算任務(wù)的高效執(zhí)行。
2.4.1 系統(tǒng)設(shè)計及關(guān)鍵技術(shù)
高能光源的實驗機(jī)時非常寶貴,用戶希望能在給定的實驗時間內(nèi)盡可能快地完成多個實驗,取得準(zhǔn)確、滿意的實驗結(jié)果,這就要求HEPS 能夠提供高性能的在線快速數(shù)據(jù)處理,讓用戶能夠判斷已完成的實驗是否符合預(yù)期,為下一個實驗的參數(shù)調(diào)整提供判斷依據(jù)。這對提高實驗的效率至關(guān)重要。實時快速的在線數(shù)據(jù)分析系統(tǒng)由CPU,GPU 等異構(gòu)資源組成,根據(jù)實驗的數(shù)據(jù)量和計算復(fù)雜度合理分配計算資源,滿足不同實驗站的需求。需要提供面向用戶定制的個人高性能數(shù)據(jù)分析服務(wù),實時反饋數(shù)據(jù)處理結(jié)果,讓用戶能夠方便、快捷地獲得初步的實驗結(jié)果。實驗結(jié)束后,部分光束線站還需要大規(guī)模的計算資源用于離線數(shù)據(jù)分析,進(jìn)一步對實驗數(shù)據(jù)進(jìn)行分析以獲得更好的成果。因此,科學(xué)數(shù)據(jù)分析系統(tǒng)包括在線計算服務(wù)和離線計算服務(wù)。系統(tǒng)架構(gòu)如圖10所示。
圖9 HEPS 實驗數(shù)據(jù)流Fig.9 Data flow for HEPS experiments
圖10 HEPS 科學(xué)數(shù)據(jù)分析系統(tǒng)架構(gòu)Fig.10 The struct of data analysis system
為滿足在線計算服務(wù)和離線計算服務(wù),提供四種計算服務(wù)模式,包括基于CPU的流式計算、基于Web的數(shù)據(jù)處理、云主機(jī)分析和批作業(yè)處理。
(1)基于CPU的流式計算
從探測器出來的數(shù)據(jù)流直接進(jìn)入在線計算系統(tǒng)提供的基于CPU的流式計算集群(圖11),數(shù)據(jù)處理后進(jìn)行快速展示。涉及的關(guān)鍵技術(shù)是基于內(nèi)存計算的Spark streaming 計算和消息隊列的接收和分發(fā)。這種計算模式適用于數(shù)據(jù)量大且數(shù)據(jù)處理實時性要求較高的光束線站。
圖11 流式計算模式Fig.11 Streaming computing mode
(2)基于Web的數(shù)據(jù)處理
這種計算模式前端為用戶提供基于Web的數(shù)據(jù)處理接口,底層計算資源由GPU、CPU、FPGA等異構(gòu)資源組成的高性能在線數(shù)據(jù)處理服務(wù)。該計算模式由用戶前端層、中間軟件層和底層資源管理層構(gòu)成。用戶前端層基于Jupyter Notebook,實現(xiàn)多用戶訪問,為不同光束線站開發(fā)數(shù)據(jù)分析Jupyter notebook,提供固定的數(shù)據(jù)分析流程。中間件軟件基于Jupyter Hub,提供用戶的認(rèn)證和授權(quán)、計算資源的申請,以及Jupyter Notebook的管理。底層資源管理層基于Kubernetes,并根據(jù)中間件軟件的需求,提供動態(tài)的計算資源創(chuàng)建、管理和調(diào)度。該系統(tǒng)支持一鍵式數(shù)據(jù)分析并可視化,用戶可靈活定制分析步驟,適用于中小型線站、輕量級的數(shù)據(jù)處理。
(3)云主機(jī)分析
利用云軟件管理和調(diào)度物理計算資源。針對不同光束線站的不同數(shù)據(jù)分析需求創(chuàng)建不同的數(shù)據(jù)處理環(huán)境,并集成HEPS 實驗數(shù)據(jù)訪問。利用CVMFS倉庫管理分析環(huán)境和云分析軟件更新和維護(hù)。該系統(tǒng)支持按需請求計算資源、高安全性隔離、計算密集型分析和較復(fù)雜的數(shù)據(jù)可視化分析。底層計算資源由CPU和GPU 等異構(gòu)資源組成,并對用戶透明。(4)批作業(yè)處理
圖12 云主機(jī)分析模式Fig.12 Cloud computing mode
提供提交批作業(yè)處理的接口,方便用戶進(jìn)行大規(guī)模的離線數(shù)據(jù)處理分析。計算資源有CPU和GPU組成的高性能集群,由SLURM 管理和調(diào)度。
2.4.2 計算資源統(tǒng)一管理
科學(xué)數(shù)據(jù)分析系統(tǒng)將整合所有可用計算資源,并對資源統(tǒng)一管理和分配(圖13),快速調(diào)度和分配在線和離線計算的資源。根據(jù)HEPS用戶的提案信息,得知實驗所需的計算資源情況、數(shù)據(jù)處理環(huán)境(包括操作系統(tǒng)、軟件、數(shù)據(jù)等)生成相應(yīng)的計算集群/云主機(jī),并匹配CPU/GPU/FPGA 等硬件資源。整個資源的調(diào)度和分配及底層硬件細(xì)節(jié)對用戶透明,用戶無需花時間部署數(shù)據(jù)處理環(huán)境,從而大大提高了科學(xué)家們的工作效率。
系統(tǒng)將基于虛擬化技術(shù)開發(fā)上層調(diào)度管理軟件,通過虛擬機(jī)和容器技術(shù),降低應(yīng)用與基礎(chǔ)設(shè)施的耦合程度,提供可以彈性伸縮的計算服務(wù),滿足不同實驗和應(yīng)用需求,并使資源利用率最大化。
網(wǎng)絡(luò)系統(tǒng)提供支撐光源實驗數(shù)據(jù)存儲和分析、科研協(xié)同等需要的網(wǎng)絡(luò)通訊服務(wù),為實驗數(shù)據(jù)的國際、國內(nèi)共享提供高效的國際國內(nèi)互聯(lián)網(wǎng)環(huán)境,同時為實驗數(shù)據(jù)獲取、光源線站實驗控制、加速器控制網(wǎng)絡(luò)提供技術(shù)支撐。
HEPS 網(wǎng)絡(luò)系統(tǒng)按照功能劃分為通用網(wǎng)絡(luò)、數(shù)據(jù)中心網(wǎng)絡(luò)、業(yè)務(wù)系統(tǒng)網(wǎng)絡(luò)(包括數(shù)據(jù)獲取網(wǎng)絡(luò)、加速器控制網(wǎng)絡(luò)、線站控制網(wǎng)絡(luò))、管理網(wǎng)絡(luò)和用于支持與國際、國內(nèi)合作單位實現(xiàn)高效多流數(shù)據(jù)傳輸?shù)膹V域網(wǎng)絡(luò)(圖14)。
通用網(wǎng)絡(luò)主要提供HEPS 辦公區(qū)有線和無線網(wǎng)絡(luò)連接,并進(jìn)行相關(guān)的網(wǎng)絡(luò)管理系統(tǒng)建設(shè):接入控制系統(tǒng)、計費系統(tǒng)、監(jiān)控系統(tǒng)等。
數(shù)據(jù)中心網(wǎng)絡(luò)用于支撐HEPS 計算資源和存儲系統(tǒng)之間、計算資源之間以及存儲系統(tǒng)內(nèi)部的網(wǎng)絡(luò)連接。
圖13 資源的統(tǒng)一管理和調(diào)度Fig.13 Scheduler for computing resources
圖14 網(wǎng)絡(luò)總體邏輯架構(gòu)圖Fig.14 Overview of HEPS network
生產(chǎn)網(wǎng)絡(luò)也稱為業(yè)務(wù)網(wǎng)絡(luò),支撐HEPS 各實驗線站和數(shù)據(jù)中心之間的高速數(shù)據(jù)傳輸網(wǎng)絡(luò)、加速器控制網(wǎng)絡(luò)和線站控制網(wǎng)絡(luò)。
廣域網(wǎng)用于支持HEPS 實驗數(shù)據(jù)與國際、國內(nèi)合作單位之間的高效多流數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)環(huán)境。
管理網(wǎng)絡(luò)用于對HEPS 整網(wǎng)中服務(wù)器的遠(yuǎn)程控制管理,下接服務(wù)器的管理網(wǎng)口,通過將管理網(wǎng)絡(luò)和數(shù)據(jù)網(wǎng)絡(luò)分離,使兩種流量互不干擾,數(shù)據(jù)網(wǎng)絡(luò)中斷時依然可管理,管理網(wǎng)絡(luò)中斷時,可通過數(shù)據(jù)網(wǎng)絡(luò)臨時管理,保障服務(wù)器可以長期在線接入到網(wǎng)絡(luò)。
通用網(wǎng)絡(luò)、生產(chǎn)/業(yè)務(wù)網(wǎng)絡(luò)、數(shù)據(jù)中心網(wǎng)絡(luò)和管理網(wǎng)絡(luò)之間通過HEPS 核心交換機(jī)實現(xiàn)互聯(lián)互通,考慮到數(shù)據(jù)中心網(wǎng)絡(luò)和生產(chǎn)/業(yè)務(wù)網(wǎng)絡(luò)的安全性以及未來實際業(yè)務(wù)的需求,將在數(shù)據(jù)中心網(wǎng)絡(luò)和HEPS核心交換機(jī)之間、生產(chǎn)/業(yè)務(wù)網(wǎng)絡(luò)和HEPS 核心交換機(jī)之間架設(shè)防火墻,既實現(xiàn)網(wǎng)絡(luò)通信的安全性要求,同時也滿足特殊通訊需求。如圖15所示。
HPES 公共服務(wù)系統(tǒng)是一個開放的綜合信息服務(wù)平臺,面向全球用戶提供簡潔快速的服務(wù),滿足用戶注冊、提案提交、機(jī)時申請等,經(jīng)過專家評審后使用高能同步輻射光源裝置來完成各自實驗,同時系統(tǒng)會對用戶安全培訓(xùn)、行程安排、用戶實驗數(shù)據(jù)及實驗結(jié)果進(jìn)行一系列的管理過程,為用戶提供一個清晰、流程化的高能同步輻射光源裝置使用體驗,接受用戶的反饋,提高用戶實驗申請及使用效率,同時提高裝置運行效率,加速科學(xué)成果的產(chǎn)出。
圖15 網(wǎng)絡(luò)總體連接圖Fig.15 Overview of HEPS network connections
公共服務(wù)系統(tǒng)主要實現(xiàn)四個方面的管理流程,分別是用戶服務(wù)流程、實驗過程管理流程、裝置運行狀態(tài)管理流程和數(shù)據(jù)共享管理流程。其中用戶服務(wù)流程是面向裝置用戶提供從提案申請、機(jī)時分配、實驗過程、數(shù)據(jù)服務(wù)到成果反饋的用戶全生命周期服務(wù)流程(圖16);實驗過程管理是面向束線站管理員提供用戶管理、樣品管理、實驗過程管理和實驗結(jié)果分析的過程管理流程;裝置運行狀態(tài)管理流程是面向束線站運行管理人員和實驗用戶提供裝置運行狀態(tài)和運行分析的運行管理流程;數(shù)據(jù)共享管理流程面向數(shù)據(jù)管理員提供遵照數(shù)據(jù)共享策略進(jìn)行數(shù)據(jù)共享分配,并對數(shù)據(jù)使用情況進(jìn)行分析的數(shù)據(jù)管理流程。
HEPS 公共服務(wù)系統(tǒng)是一個Web 服務(wù)系統(tǒng),以統(tǒng)一認(rèn)證為核心,通過OAUTH和LDAP的形式認(rèn)證和授權(quán)用戶訪問系統(tǒng)。系統(tǒng)實現(xiàn)采用SpringBoot + JPA +Thymeleaf的技術(shù)架構(gòu),共分為六層:最底層是數(shù)據(jù),放置關(guān)系數(shù)據(jù)庫和文件;實體層使用JPA 框架,將數(shù)據(jù)庫中的表和表關(guān)系影射成實體類和配置文件,所有針對數(shù)據(jù)庫的操作都針對這些實體類進(jìn)行;再上一層是數(shù)據(jù)訪問層,所有對實體類的操作都位于該層的文件內(nèi);服務(wù)層調(diào)用數(shù)據(jù)訪問層完成系統(tǒng)的業(yè)務(wù)邏輯,在該層使用SpringBoot 框架的事務(wù)管理保證數(shù)據(jù)的完整性、一致性;控制層處理頁面邏輯并判定用戶請求的跳轉(zhuǎn)關(guān)系,在該層記錄用戶的操作日志;視圖層面向用戶,是控制層輸入輸出的接口,使用JQuery、Thymeleaf、AJAX 技術(shù)動態(tài)形成頁面向用戶提供服務(wù)。
作為服務(wù)于依托國家重大科技基礎(chǔ)設(shè)施開展科學(xué)研究和科學(xué)實驗的重要支撐系統(tǒng),HEPS 科學(xué)計算平臺在功能、性能等各方面均面臨巨大的壓力。特別是隨著技術(shù)的發(fā)展,尤其是光學(xué)儀器、探測器技術(shù)的快速進(jìn)步,HEPS 在科學(xué)數(shù)據(jù)產(chǎn)生速度以及對科學(xué)數(shù)據(jù)和計算系統(tǒng)的需求上將不斷增加。設(shè)計方案在滿足功能性需求的基礎(chǔ)上,采用模塊化、可擴(kuò)展的技術(shù)架構(gòu),未來將根據(jù)數(shù)據(jù)規(guī)模、科研活動模式變化的需求,不斷提升系統(tǒng)性能指標(biāo)。當(dāng)前相關(guān)設(shè)計方案已經(jīng)完成,具體建設(shè)、開發(fā)工作正在穩(wěn)定推進(jìn)。
圖16 HEPS 公共服務(wù)系統(tǒng)用戶服務(wù)流程Fig.16 Data flow for HEPS public services
隨著包括GPU、ARM、FPGA 在內(nèi)的新的計算體系架構(gòu)及技術(shù)的發(fā)展,將開展人工智能技術(shù)在光源數(shù)據(jù)獲取、數(shù)據(jù)觸發(fā)判選、數(shù)據(jù)準(zhǔn)實時在線處理和離線處理方面的應(yīng)用和探索研究。加強同信息技術(shù)企業(yè)界在關(guān)鍵技術(shù)、前沿技術(shù)等方面開展相關(guān)交流與合作,提升科學(xué)數(shù)據(jù)處理效率。
當(dāng)前我國已經(jīng)運行和正在規(guī)劃和建設(shè)的有多個光源類(包括散裂中子源和自由電子激光)重大科技基礎(chǔ)設(shè)施:如北京同步輻射裝置、合肥光源、大連自由電子激光裝置、上海光源、中國散裂中子源、高能同步輻射光源、上海自由電子激光、合肥先進(jìn)光源、南方光源(預(yù)研)等,這些設(shè)施在科學(xué)數(shù)據(jù)處理方面均面臨類似的需求和挑戰(zhàn)。在此領(lǐng)域的科學(xué)數(shù)據(jù)處理平臺、軟件等各方面具有廣泛的合作潛力。
利益沖突聲明
所有作者聲明不存在利益沖突關(guān)系。