■ 王琦 郭曉軍 倪學磊
針對不同數據源在格式和時效上的差異,建立了支撐CIPAS2.0系統(氣候與氣候變化監(jiān)測預測系統)的數據支撐環(huán)境,該環(huán)境能夠提供靈活、智能的數據處理和產品生成任務調度策略,并對可能出現的數據缺測、異常延遲等情況建立合理的容錯和重算機制,輔以實時的數據產品監(jiān)控系統,形成完整統一的氣候資源數據環(huán)境,保證了相關業(yè)務正常開展運行。
CIPAS2.0(氣候與氣候變化近側預測系統)是在CIPAS1.0系統基礎上進行了多項升級改進,全面、客觀地揭示地球氣候系統主要圈層中的正在發(fā)生或曾經發(fā)生基本事實,實現我國氣候監(jiān)測的業(yè)務對象和范疇,從傳統的海氣系統監(jiān)測,向整個氣候系統各大圈層監(jiān)測的跨越。CIPAS2.0系統平臺面向監(jiān)測預測基本業(yè)務,多模式氣候預測分系統的建立實現了我國主要氣候預測業(yè)務的客觀化預報。在預報對象上,實現從常規(guī)溫度、降水要素拓展至月內強降水、強降溫過程、氣候現象、氣候災害和極端事件、面向行業(yè)的預測;時間尺度上實現延伸期-季節(jié)的無縫隙鏈接,涵蓋資料檢索、交互顯示、統計與診斷分析、產品制作等業(yè)務功能。
為充分發(fā)揮CIPAS2.0的業(yè)務作用,底層的基礎數據支撐至關重要;為此,國家氣象信息中心和國家氣候中心共同成立工作組,建設支撐CIPAS2.0系統的氣候資源數據環(huán)境。硬件方面,在云樺服務器集群上搭建虛擬環(huán)境,建立了可以根據軟件負載任務需求彈性調度的硬件計算和存儲資源;軟件方面,數據獲取采用Java語言,通過氣象數據統一服務接口MUSIC(Meteorological Uni fied Service Interface Community)獲取在線的氣象數據,并建立了基于Java語言的數據統計加工處理流程,考慮到氣象業(yè)務的特點和慣性,部分數值預報、衛(wèi)星等數據的處理,仍保留原有的NCL、C++等語言處理方式,為保證監(jiān)控和調度,采用Java對該部分計算流程進行調度,同時基于Apache Tomcat建立數據展示環(huán)境,基于Web形式對產品進行可視化展示以及用戶交互操作;網絡方面,打通與數據環(huán)境和用戶組的網絡溝通,數據環(huán)境與服務器間采用雙備份的萬兆交換網絡,與用戶組間以千兆網絡相連。通過對數據環(huán)境軟硬件的建設,確保了氣候業(yè)務的高效穩(wěn)定運行,同時保證了業(yè)務人員得到最優(yōu)的用戶體驗。
氣候業(yè)務由于其本身的學科特征,對數據的有較為特殊的需求,歸納起來,主要可以分為以下四點。
1)時間序列長
氣候科學的研究,常常需要幾十年、上百年甚至是年代紀的完整的長時間序列資料,以總結歸納其變化發(fā)展規(guī)律。CIPAS2.0系統中所用到的要素常年值統計,需要對過去所有發(fā)生年份的情況進行統計分析,這就要求基礎數據環(huán)境必須保證各類數據在時間序列上的完整性,盡量避免中斷、缺失等現象。
2)空間范圍廣
CIPAS2.0系統對數據不僅有時間序列的完整性需求,對數據的空間分布也很高。目前,CIPAS2.0所使用的數據中,全球使用的站點數約為8000多個,國內部分使用的站點數為2000多個,由于各臺站的觀測設備,以及中間的通信網絡、存儲系統異常等多種原因,很難保證實時氣象數據在空間上的完整性。
3)時間尺度多
CIPAS2.0系統,對不同氣象要素的統計分析,按照時間尺度,可以分為日值、候值、旬值、月值、季值、年值和常年值等。其中,日統計值資料以小時值資料或日值資料為基礎進行統計分析得到,之后,隨著時間尺度的增長,依次根據低一級時間尺度的結果進行統計分析或對實際觀測值進行對應處理,形成相應的產品。
4)要素種類多
氣候科學,尤其是對氣候狀態(tài)進行診斷分析和監(jiān)測預測,對氣象要素的需求幾乎是無限制的,目前氣象業(yè)務中所有觀測的項目,從常規(guī)的溫度、濕度、風速等到輻射、海溫、海水鹽度等,幾乎所有的觀測要素均可作為氣候業(yè)務的適用對象。CIPAS2.0系統目前使用的氣象要素不區(qū)分觀測或模式產品輸出,共計約為20大類。
氣象數據按照觀測的方式不同,可分為站點數據、衛(wèi)星數據、雷達數據、數值模式數據等,每種數據因各自的觀測和存儲特點,均有各自的存儲格式,加之觀測設備的升級更新,數據存儲的格式也隨之變化。這樣的變化,對于長時間序列氣象數據的統一管理和應用,勢必會造成諸多困難,因此,為便于統一的管理和服務,在CIPAS2.0系統建設中,對所有類型的氣象數據,統一使用了UCAR開發(fā)的NetCDF格式作為存儲系統的統一標準格式。其自帶的自描述性,保證了在不同平臺和環(huán)境中數據的一致性,CIPAS2.0數據描述標準(經緯度順序,高度描述等),由國家氣象信息中心和氣候中心聯合工作組共同制定。
CIPAS2.0系統是一個以日尺度為基本時間單位的實時系統,同時要兼顧大量長時間歷史數據。其業(yè)務流程基本為:每天定時啟動數據獲取進程,獲取最新觀測時間的氣象數據并寫入到NetCDF文件中,數據獲取成功后隨即啟動統計任務,將新增數據納入各時間尺度的統計產品中,落地形成文件后提供服務。由于每天數據均會有更新和變化,且因通信、觀測等系統的影響,完整獲取所需數據的時間并不確定,需要不斷調取,直到數據完整性要求得到滿足。當某一要素產品有更新成功后啟動重算策略,對受到影響的數據進行大量的算工作,進而對計算資源和存儲效率提出了較高要求。為此,國家氣象信息中心進行了大量基礎環(huán)境的準備工作,利用虛擬環(huán)境下集群資源可動態(tài)彈性擴展的特點,搭建了相應的軟硬件環(huán)境,保證了CIPAS2.0系統的穩(wěn)定運行。
氣候資源數據環(huán)境主要由調度系統、數據加工分系統、監(jiān)控分系統以及產品存儲分系統四個部分組成(圖1)。其中,調度系統負責對加工處理流程的啟動、終止、重新執(zhí)行等進行控制,以保證數據加工分系統生產得到的產品完整;統計加工分系統負責對采集自基礎數據環(huán)境(CIMISS)以及從國外機構獲取的氣象數據進行統計分析和加工處理,并最終生成CIPAS2.0系統所需的氣候數據產品;監(jiān)控分系統對數據處理和產品生成流程進行全流程的監(jiān)控,以保證處理流程的穩(wěn)定和數據產品在時間和空間上的連續(xù)、完整;產品存儲分系統承
圖1 總體框架
氣候資源數據環(huán)境按照功能,可以分成四個分系統。
2.2.1調度系統
氣象數據的觀測是實時進行的,收集來自全國、全球的從秒級資料到小時資料,通過通信系統,到加工處理系統,最終形成標準格式的數據或數據集,提供業(yè)務人員使用,或作為其他業(yè)務系統的原始資料。
由于臺站、網絡等系統等多方面原因,經常會出現數據錯誤、缺失或遲到等現象,無法滿足氣候業(yè)務的需求,為保證實時業(yè)務,通常做法是將當前現有的數據進行加工處理,做到“物盡其用”,待故障解除,數據恢復后,再進行訂正和補錄。此外,針對我國紙質氣象數據數字化進程的推進,很多的歷史數據會不斷補充到業(yè)務數據環(huán)境,還需要完善各類重算機制,確保數字化后的氣象數據能夠納入該系統。
對于CIPAS2.0系統,若在規(guī)定時間生成的數據產品未達到執(zhí)行標準,就需要重新啟動統計加工流程,對未滿足時間、空間完整性的數據進行重算,但由于數據補齊的時間無法確定,加之數據種類多而繁,單純靠人工進行調度作業(yè)是不現實的,因此,建立了一套調度和監(jiān)控系統,以保證數據產品的完整性。
根據不同資料的業(yè)務需求和執(zhí)行標準,為每一種資料制定配置文件,包括產品完整性定義(站點數、文件數等)、啟動時間、重算間隔時間、重算次數上限等,以判斷在加工處理過程中資料的完整性和正確性是否符合標準,若不符合標準,為保證時效,仍然按照當前情況進行處理,并將具體錯誤信息的DI發(fā)送給監(jiān)控系統,并在規(guī)定的時間間隔之后,再次對該時次的數據產品進行重算,并覆蓋上一次生成的數據產品,繼續(xù)判斷重算過程中的數據產品是否達標,如果達標,則此時刻的任務結束;若仍未達標,規(guī)定的間隔時間后,繼續(xù)執(zhí)行重算,直到重算次數達到人為設定的上限,如果此時仍未按標準完成數據產品的加工處理,則向監(jiān)控系統發(fā)出信息,需要進行人工干預。具體流程如圖2所示。
圖2 調度系統工作流程
為便于對預警信息的人工干預,利用angularJS技術,建立了一個基于WEB界面的任務管理配置系統,管理員可以通過界面,對每一種產品的執(zhí)行詳細信息進行查看,并修改其重算間隔、重試次數等配置信息,并根據監(jiān)控系統的提示,進行計劃外的任務提交。極大地簡化了運行維護的人力成本。
2.2.2監(jiān)控系統
監(jiān)控系統是保證業(yè)務流程穩(wěn)定健康運行的有力工具。為保證系統所需數據產品加工處理和存儲流程的穩(wěn)定,對CIPAS2.0系統所需數據的加工處理過程和產品存儲過程進行了全流程的監(jiān)控,從底層的數據環(huán)境獲取數據到最終將處理的產品保存到文件庫,每一個環(huán)節(jié)的DI和EI信息,均會發(fā)送到統一的監(jiān)控平臺,并以顏色表征各類數據產品的制作情況,包括按標準完成、產品生成但未達標,產品未生成以及告警等。
對于未達標以及未生成的產品,監(jiān)控系統會詳細列出未達標或失敗的原因、缺失數據的站號、缺失樣本清單等信息,便于技術人員準確定位問題所在,及時處理。
2.2.3統計加工系統
CIPAS2.0涉及到多種氣象資料的多時間尺度的產品,其中一些統計產品和統計方法,是該系統特有的。通過對統計算法進行論證后,開發(fā)了相應的統計加工分系統,對這部分統計項進行處理,以服務系統應用。
統計加工分系統在目前的業(yè)務環(huán)境基礎上搭建,其底層為基礎數據存儲,中間為包含數據處理過程必要功能組件的功能組件層,上層為最主要的應用層,由氣象數據資料統計加工模塊、氣象數據資料質量控制模塊、氣象數據質量評估模塊組成,其中,統計加工模塊主要負責對歷史和實時氣象數據進行各時間、空間尺度的統計分析處理,形成相應的統計產品;氣象數據質量控制模塊只要負責對質量控制算法的落地,對實時、歷史氣象數據的數據質量進行分析,確定每個氣象數據的可信度;質量評估模塊,負責對質量控制的算法和結果進行分析評估,以便更好的改進質量控制的方法。系統結構如圖3所示。
統計加工分系統按照業(yè)務需求,增加或調整算法,對相關要素進行不同時間尺度的統計,其統計結果被保存到業(yè)務系統(CIMISS)中,作為CIPAS2.0的源數據,由加工處理程序生成為NetCDF產品文件,提供業(yè)務系統使用。
2.2.4數據存儲系統
較之于調度分系統和統計加工分系統,數據存儲分系統的邏輯結構較為簡單:按照CIPAS2.0數據存儲規(guī)范,將不同尺度的統計產品存到存儲系統的相應路徑,并確保CIPAS2.0系統能夠正常訪問,為保證數據訪問的高效可靠,系統采用分布式NAS作為CIPAS2.0的存儲文件系統。
此外,為最大限度利用統一格式的氣候數據資源,同時開發(fā)了支持NetCDF格式的數據訪問接口以及基于網頁的TDS服務,使得氣候資源數據不僅能為CIPAS2.0系統提供服務,同時可以為更多的應用提供數據支持。
根據前序用戶對業(yè)務系統CIPAS1.0的反饋,使用中最大的問題是用戶獲取到的數據在時間和空間尺度的不完整、不及時。經分析,該問題主要發(fā)生在數據處理環(huán)節(jié),具體原因包括:1)數據源不完整,統計加工進程制作的產品不滿足業(yè)務需求;2)數據處理進程異常,沒有相應數據產生;3)針對以上兩個主要問題,在調度系統和監(jiān)控系統中,進行了針對CIPAS2.0的特殊設計優(yōu)化,以滿足業(yè)務需求。
圖3 統計加工處理功能架構圖
根據前文的概述,數據處理模塊主要實現不同數據的統計和處理,因CIPAS2.0系統所用的數據種類繁多頻率高,再加上由于數據獲取和處理失敗導致的作業(yè)重做,使得系統的作業(yè)處理量大,所以設計合理、高效的作業(yè)調度是數據采集處理子系統的核心。經過分析,項目組決定采用OpenSymphony開源組織提供的Quartz作業(yè)調度框架來實現數據采集處理作業(yè)的調度。
3.1.1數據統計加工進程觸發(fā)
Quartz作業(yè)調度框架由調度器與作業(yè)兩部分組成,調度器是Quartz框架的核心,負責管理Quartz應用運行時環(huán)境;作業(yè)是能夠調度的可執(zhí)行任務,即CIPAS2.0所需的各類統計加工算法,觸發(fā)器提供了對作業(yè)的調度,有效的將業(yè)務邏輯與調度分離。Quartz作業(yè)調度框架有如下優(yōu)點:1)能建立運行十個、百個、甚至是幾萬個作業(yè)的復雜應用;2)采用了基于多線程的架構,能并發(fā)地運行多個作業(yè);3)基于Cron 表達式靈活的時間觸發(fā)器;4)通過作業(yè)配置文件實現作業(yè)的可配置化。
依據Quartz作業(yè)調度框架的特點,結合系統的功能設計,數據加工處理子系統在Quartz框架中配置一個生成數據處理作業(yè)的Quartz作業(yè),和多個調度數據采集處理作業(yè)的Quartz作業(yè)。
1)數據統計處理作業(yè)生成Quartz作業(yè)
作業(yè)生成Quartz作業(yè)每天定時(如,23時40分)由調度器觸發(fā)執(zhí)行,依據數據獲取、數據處理的作業(yè)策略,生成未來一天內所有需要執(zhí)行的數據采集、處理作業(yè),保存在作業(yè)實例表。
2)作業(yè)調度Quartz作業(yè)
作業(yè)調度Quartz作業(yè)數可進行配置,每隔一段時間(如,一分鐘)由調度器觸發(fā)執(zhí)行,在作業(yè)實例表中查詢滿足執(zhí)行條件的多條數據統計、處理作業(yè)實例記錄并進行提取,然后通過Java類反射機制構建作業(yè)的處理類,并調用處理類的數據統計、處理方法,從而實現業(yè)務數據的生產。
作業(yè)生成Quartz作業(yè)和作業(yè)調度Quartz作業(yè)共同在Quartz框架提供的線程池中觸發(fā)執(zhí)行,實現作業(yè)的多線程并發(fā),進而實現數據處理業(yè)務作業(yè)的多線程并發(fā)執(zhí)行。
數據處理是CIPAS2.0數據環(huán)境的核心業(yè)務功能,具體實現各類數據的統計和處理方法。不同的業(yè)務需求,統計的資料種類、資料要素不同,數據的組織方式、處理方法也不同,因此各業(yè)務數據的采集、處理方法以類的形式存在,共同構成CIPAS2.0數據環(huán)境的統計加工處理方法庫。作業(yè)調度Quartz作業(yè)通過Java的類反射機制來調用執(zhí)行業(yè)務數據的統計和處理方法,統計和處理方法類名在作業(yè)策略中進行配置。
數據統計和處理方法都包含了數據檢索。對于結構化的基礎氣象數據,數據檢索單元從CIMISS系統中檢索數據,采用MUSIC接口來實現。對于非機構化類的模式、衛(wèi)星資料,通過FTP方式,從相應服務器獲取或接收推送
3)依數據需求調用相應的MUSIC接口檢索要素,如按時間檢索要素、按時間段檢索數據,調用MUSIC接口檢索數據步驟如下:①初始化MUSIC接口客戶端:設置資料代碼、資料時間、資料要素、要素值范圍等參數;②通過MUSIC接口,執(zhí)行數據獲取任務,對于結構化數據,數據保存在內存中,對于非結構化數據,數據會被寫入制定路徑中;③將內存中的數據寫入指定文件,釋放內存,關閉MUSIC服務;
3.1.2數據補做
CIPAS2.0數據環(huán)境在進行各類業(yè)務數據的采集或加工處理時,不可避免地因各種突發(fā)原因導致數據統計加工流程失敗,如通信系統異常造成的數據延遲、缺失,數據庫連接失敗等,為了保證采集和處理數據的完整性,同時也提高系統的容錯性,數據采集處理子系統增加數據補做功能,提供數據統計加工自動補做和手動補做兩種方式。
1)自動補做方式
數據統計加工失敗作業(yè)的自動補做建立在Quartz調度框架的基礎上,通過添加數據統計加工作業(yè)的失敗重試次數與重試時間間隔構成補做機制。當作業(yè)執(zhí)行失敗后,在作業(yè)實例表中記錄數據作業(yè)的執(zhí)行狀態(tài)(ERROR,錯誤、可重做狀態(tài))及已重做次數。作業(yè)調度Quartz作業(yè)定時檢索補做狀態(tài)的作業(yè),并根據初次觸發(fā)時間、已重做次數及重試時間間隔決定是否已達到失敗重試次數上限和計算失敗作業(yè)的下一次重做時間,當下一次重做時間達到時,失敗作業(yè)將觸發(fā)進行補做。當失敗作業(yè)已重做次數達到作業(yè)策略設定的失敗重試次數上限時,作業(yè)的執(zhí)行狀態(tài)將標記為失敗(FAILURE),停止重做。
2)手動補做方式
統計加工失敗作業(yè)的手動補做是對自動補做功能的有效補充。當統計加工作業(yè)在自動補做機制下處理仍然失敗時,系統管理或值班人員可以在任意時間對失敗作業(yè)手動的進行啟動重做。系統管理或值班人員在監(jiān)控界面手動地勾選需要補做的一個或多個失敗作業(yè),提交補做請求,后臺接收到請求后更改作業(yè)實例表中對應作業(yè)的執(zhí)行狀態(tài)為觸發(fā)狀態(tài)(TRIGGERING,觸發(fā)重做)。作業(yè)調度Quartz作業(yè)定時檢索需手動補做(觸發(fā)狀態(tài))的作業(yè)實例,進行調度執(zhí)行。
為了便于業(yè)務部署和擴展,同時減少后期維護工作量,監(jiān)控子系統采用B/S結構,使用Java編程語言,結合當前主流成熟的Tomcat + Java EE的部署環(huán)境,開發(fā)基于Web的前臺界面。
監(jiān)控子系統包含數據環(huán)境的監(jiān)控和配置管理兩部分。數據環(huán)境的監(jiān)控主要是對數據統計加工業(yè)務流程和數據產品的監(jiān)控。配置管理則是系統運行相關配置的管理,如系統用戶管理以及數據統計加工作業(yè)策略的管理。
3.2.1監(jiān)控系統設計
數據統計加工流程監(jiān)控是對CIPAS2.0數據環(huán)境加工作業(yè)運行情況的監(jiān)視,具體包含作業(yè)名稱、作業(yè)執(zhí)行狀態(tài)、作業(yè)執(zhí)行詳情、作業(yè)首次執(zhí)行時間,作業(yè)執(zhí)行次數,作業(yè)執(zhí)行耗時等監(jiān)視項。監(jiān)控界面將提供作業(yè)查詢功能,可根據作業(yè)名稱、作業(yè)執(zhí)行狀態(tài)、作業(yè)首次執(zhí)行時間等條件查詢相應的數據統計加工作業(yè)。此外,系統管理或值班人員還能選擇失敗的數據統計加工作業(yè)進行重做。
3.2.2作業(yè)管理
作業(yè)管理模塊是對CIPAS2.0數據環(huán)境的數據采集或處理作業(yè)進行管理,包含數據統計加工作業(yè)的新增、作業(yè)的詳情查看、作業(yè)的修改和作業(yè)的刪除功能。數據統計加工作業(yè)的新增包含作業(yè)的名稱、作業(yè)的執(zhí)行時間、作業(yè)的處理類、作業(yè)的失敗重做次數、作業(yè)的重做時間間隔等信息,還包含作業(yè)采集數據的資料代碼、要素名稱、檢索接口ID、存儲數據表名等屬性信息。
深入閱讀
馮琳, 付勇, 陳康, 等, 2013. TDDS:基于虛擬集群系統的任務部署與調度. 計算機研究與發(fā)展, 50(5): 1118-1124.
李清泉, 孫丞虎, 袁媛, 等, 2013. 近20年我國氣候監(jiān)測診斷業(yè)務技術的主要進展. 應用氣象學報, 24(6): 666-676.
裴翀, 宋連春, 吳可軍, 等, 2011. 我國綜合氣象觀測運行監(jiān)控系統的設計與實踐. 氣象, 37(2): 213-218.
王若曈, 黃向東, 張博, 等, 2015. 海量氣象數據實時解析與存儲系統的設計與實現. 計算機工程與科學, 37(11): 2045-2054.
熊安元, 趙芳, 王穎, 等, 2015. 全國綜合氣象信息共享系統的設計與實現. 應用氣象學報, 26(4): 500-512.
曾樂, 陳東輝, 肖衛(wèi)青, 等, 2014. 基于Hadoop的氣象數據存儲檢索應用研究. 信息系統工程, (8): 138-140.
Advances in Meteorological Science and Technology2018年1期