夏正龍,鐘艷雯,朱亮,呂冠儒,周超
(湖南省氣象信息中心,長沙 410118)
近年來我國大力開展并加快氣象業(yè)務(wù)現(xiàn)代化建設(shè),隨著數(shù)值預(yù)報技術(shù)的發(fā)展,目前可用于業(yè)務(wù)的數(shù)值預(yù)報產(chǎn)品無論是種類,還是數(shù)據(jù)量都得到了大大的豐富和增加,中期預(yù)報模式、區(qū)域預(yù)報模式、臺風(fēng)路徑預(yù)報模式、海浪預(yù)報模式、環(huán)境預(yù)報模式、集合預(yù)報等數(shù)值預(yù)報產(chǎn)品相繼投入業(yè)務(wù)運行,各種分辨率的數(shù)值預(yù)報產(chǎn)品也越來越得到各級氣象預(yù)測預(yù)報業(yè)務(wù)系統(tǒng)的重視和應(yīng)用,數(shù)值預(yù)報業(yè)務(wù)正在發(fā)揮著越來越重要的基礎(chǔ)作用,為各級氣象臺的日常公眾預(yù)報服務(wù),特別是為關(guān)鍵性、災(zāi)害性、轉(zhuǎn)折性天氣的預(yù)報服務(wù)等提供了有物理基礎(chǔ)的指導(dǎo)產(chǎn)品和定量參考信息[1-2],變成不可缺少的重要數(shù)據(jù)支撐。同時隨著氣象預(yù)報業(yè)務(wù)服務(wù)的需求不斷提高,對部門內(nèi)提供CMACast廣播文件共享[3-4]、CIMISS[5-6]、數(shù)值預(yù)報云[7]下載文件共享以及對部門外提供文件共享等,數(shù)據(jù)源和共享方式也越來越多樣,保障能力要求也越來越高,能夠?qū)崟r掌握各類數(shù)值預(yù)報產(chǎn)品在多源文件共享服務(wù)的及時性和完整性,成為數(shù)值預(yù)報產(chǎn)品文件共享服務(wù)保障工作的迫切需求。
目前氣象數(shù)值預(yù)報產(chǎn)品的收集主要通過CMACast廣播接收、國家局主站下載、外省推送、數(shù)值預(yù)報云下載等多種方式,每天收集到的數(shù)值預(yù)報產(chǎn)品多達(dá)幾十種類,收集后再通過通信系統(tǒng)分類推送到各文件共享數(shù)據(jù)源提供服務(wù),從“氣象數(shù)據(jù)傳輸命名(QX/T 129-2011)[8]”和“氣象資料分類與編碼(QX/T 102-2009)[9]”這兩項氣象行業(yè)標(biāo)準(zhǔn)并結(jié)合文件名定義規(guī)范和實際收集情況分析,數(shù)值預(yù)報產(chǎn)品文件一般具有:(1)文件名有固定結(jié)構(gòu),由強制字段、自由字段及字段分隔符組成,強制字段和自由字段都有定義;(2)文件名有時間定義,一般都有產(chǎn)品預(yù)報時次等定義;(3)一般都有固定時次,例如歐洲中心每天2次(00時,12時),產(chǎn)品生成時間也比較集中;(4)同類產(chǎn)品每個時次生成的文件數(shù)和大小等相對也比較固定等特點,為采用以文件名模板區(qū)分?jǐn)?shù)值預(yù)報產(chǎn)品種類、以文件數(shù)和大小判斷完整性和按資料時次進(jìn)行監(jiān)控等提供了方法策略。我省目前提供數(shù)值預(yù)報產(chǎn)品文件共享服務(wù)方式主要包括共享磁盤映射,F(xiàn)TP服務(wù)和CIMISS系統(tǒng)接口調(diào)用3種方式,共享磁盤映射和FTP服務(wù)采取開通協(xié)議,按照類別分目錄提供固定天數(shù)的查詢訪問,共享磁盤映射主要針對省局內(nèi)部直屬單位,F(xiàn)TP服務(wù)針對全省氣象部門及外部門,CIMISS系統(tǒng)以文件系統(tǒng)存儲非結(jié)構(gòu)化數(shù)據(jù),并設(shè)計表結(jié)構(gòu)記錄文件索引信息及管理型元數(shù)據(jù)信息,提供接口調(diào)用方式供全省氣象部門使用[10-11],這幾種共享服務(wù)方式為信息采集提供了思路和方法,確認(rèn)了建立多源文件共享監(jiān)控保障系統(tǒng)的可行性。
本文結(jié)合數(shù)值預(yù)報產(chǎn)品收集特點和我省提供共享服務(wù)方式的分析,充分吸取前期氣象監(jiān)控系統(tǒng)[12-15]成功的設(shè)計思路,利用先進(jìn)成熟的IT技術(shù),設(shè)計了多源文件共享監(jiān)控保障系統(tǒng),系統(tǒng)整體架構(gòu)主要由數(shù)據(jù)共享源、存儲管理、功能應(yīng)用3部分組成,見圖1。
圖1 系統(tǒng)框圖
數(shù)據(jù)共享源主要包括我省目前用于提供共享磁盤映射、FTP服務(wù)的各種服務(wù)器和接口調(diào)用的CIMISS系統(tǒng),這些數(shù)據(jù)共享源實時接收著從CMACast、省際共享、下載平臺等各處收集到的數(shù)值預(yù)報產(chǎn)品,按照既定的存儲管理和共享服務(wù)規(guī)則,提供給氣象部門各業(yè)務(wù)單位和業(yè)務(wù)系統(tǒng)使用。
本文設(shè)計以資料代碼為每類數(shù)值預(yù)報產(chǎn)品的唯一標(biāo)識實時采集不同類型數(shù)據(jù)共享源的文件信息和統(tǒng)計結(jié)果,集中統(tǒng)一存儲到實時采集數(shù)據(jù)庫中供監(jiān)控查詢統(tǒng)計使用,具體包括3個方面:(1)對接CIMISS系統(tǒng)的共享服務(wù)情況,實時同步采集CIMISS數(shù)據(jù)庫中相關(guān)文件信息記錄;(2)實時掃描各數(shù)據(jù)共享源共享目錄,采集文件信息,并實時統(tǒng)計逐類別逐資料時次的文件數(shù)、百分率等結(jié)果;(3)缺失文件及時從可下載數(shù)據(jù)源處下載,并分發(fā)到缺失文件共享數(shù)據(jù)源提供共享是保障服務(wù)完整性的一個重要手段,及時主動掃描每個下載數(shù)據(jù)源對比從共享數(shù)據(jù)源采集到的信息記錄,獲取到缺失文件后下載推送到缺失文件的共享數(shù)據(jù)源,并存儲相關(guān)補調(diào)下載信息。
綜合對氣象數(shù)值預(yù)報產(chǎn)品文件屬性、共享服務(wù)方式的分析,主要包括各類數(shù)值預(yù)報產(chǎn)品的基本信息、監(jiān)控統(tǒng)計信息、下載和存儲定義等,從存儲信息的使用需求考慮設(shè)計為滿足較短時間查詢的實時采集數(shù)據(jù)庫和較長時間統(tǒng)計分析的歷史數(shù)據(jù)存儲2部分組成,存儲內(nèi)容基本一致,為整個系統(tǒng)提供數(shù)據(jù)支撐。
(1)實時采集數(shù)據(jù)庫采用MySQL數(shù)據(jù)庫管理,存儲實時從多源文件共享數(shù)據(jù)源采集的文件信息和文件數(shù)、完整率等統(tǒng)計結(jié)果,在整個存儲表結(jié)構(gòu)設(shè)計中,資料代碼為每類數(shù)值預(yù)報產(chǎn)品的唯一標(biāo)識,關(guān)聯(lián)所有的存儲信息,保存時間較短,一般為1-2月,保存內(nèi)容主要包括監(jiān)控信息、文件存儲信息、下載補調(diào)信息、統(tǒng)計結(jié)果以及數(shù)值預(yù)報產(chǎn)品相關(guān)配置定義(基礎(chǔ)定義、下載定義、存儲目錄、監(jiān)控時次定義等),見圖2具體表結(jié)構(gòu)設(shè)計E-R圖。
圖2 具體表結(jié)構(gòu)設(shè)計E-R圖
(2)歷史數(shù)據(jù)存儲:本文采用基于Hadoop集群搭建HBase分布式數(shù)據(jù)庫,用于存儲管理較長時間的采集信息,為較長時間的統(tǒng)計分析功能服務(wù)。HBase是一個面向列的分布式數(shù)據(jù)庫,表中的所有行根據(jù)行的鍵值(也就是表的主鍵)排列,行中的列被分成“列族”,同一個列族的所有成員具有相同的前綴,所有對表的訪問都要通過表的主鍵,所以主鍵的設(shè)計將直接影響查詢檢索,數(shù)值預(yù)報產(chǎn)品一般總是依照資料時次、產(chǎn)品代碼、數(shù)據(jù)源等順序進(jìn)行查詢統(tǒng)計分析,因此本文結(jié)合實時采集數(shù)據(jù)庫的表結(jié)構(gòu)設(shè)計,主存儲信息表采用資料時次、產(chǎn)品代碼、數(shù)據(jù)源及ID構(gòu)成的組合鍵作為主鍵,列字段和實時采集數(shù)據(jù)庫對應(yīng)表的列字段相同,其他輔助表結(jié)構(gòu)則和實時采集數(shù)據(jù)庫相同,這樣極大地方便了對歷史存儲信息的數(shù)據(jù)導(dǎo)入(出)和統(tǒng)計分析,例如查詢一段時間的某類數(shù)值產(chǎn)品在某臺數(shù)據(jù)共享源上的文件情況,只需要將起始時間、結(jié)束時間、產(chǎn)品代碼、數(shù)據(jù)源作為行鍵過濾條件加到HBase的Scan的Filter列表中即可,同時可設(shè)置起始時間和結(jié)束時間為Scan的起始行和終止行來提高查詢速度,但需注意將時間格式轉(zhuǎn)換為行鍵中資料時次對應(yīng)格式,查詢條件代碼示例和結(jié)果(轉(zhuǎn)換輸出格式)如下:
monitorrealstatdao mrsd=new monitorrealstatdao();/*監(jiān)控統(tǒng)計結(jié)果查詢類*/
mrsd.getDataByTimeRange("20180123 15∶26∶50".getBytes()/*起始時間*/,"20180127 15∶26∶50".getBytes()/*結(jié)束時間*/,"F.0011.0002.S001".getBytes()/*資料編碼*/,"省級文件共享服務(wù)器".getBytes()/*數(shù)據(jù)源*/);
圖3
(3)為了導(dǎo)出實時采集信息到歷史數(shù)據(jù)存儲HBase庫中,本文配合使用了Hadoop生態(tài)圈的軟件Oozie和Sqoop[16],通過“數(shù)據(jù)增量導(dǎo)入”方式實現(xiàn)從實時采集數(shù)據(jù)庫定時同步信息到歷史數(shù)據(jù)存儲中管理。Apache Sqoop是一個開源工具,允許用戶將結(jié)構(gòu)化數(shù)據(jù)抽取到Hadoop中用于進(jìn)一步處理,Sqoop擁有一個可擴展的框架,能夠從(向)任何支持批量數(shù)據(jù)傳輸?shù)耐獠看鎯ο到y(tǒng)導(dǎo)入(導(dǎo)出)數(shù)據(jù),本文通過使用Sqoop job工具,結(jié)合MySQL表結(jié)構(gòu)和HBase存儲表行鍵和列的設(shè)計,建立了從MySQL數(shù)據(jù)庫到HBase庫的增量導(dǎo)入job,完成實時采集數(shù)據(jù)庫和歷史數(shù)據(jù)存儲的數(shù)據(jù)同步功能,創(chuàng)建Sqoop job數(shù)據(jù)導(dǎo)入語句創(chuàng)建示例(監(jiān)控統(tǒng)計信息)如下:
sqoop job-- meta- connect jdbc∶hsqldb∶hsql∶//10.110.172.41∶16001/sqoop--create monitorrealstatinfo-syncjob-- import--connectjdbc∶mysql∶//10.110.172.181∶3306/modelmonitordb--table monitorrealstatinfo--username sa--password-file/user/hadoop/works/sqoop/sqoop-monitorrealstatinfo-sync-job/.password--hbase-table monitorrealstatinfo--column-family monitorstatinfo--columns"ID,Code,DTime,CollectNum,CollectPercentage,Source,collectTime,CollectTotalNum,StartDTime,EndDTime,rowtime"--hbase-row-key DTime,Code,Source,ID--incremental lastmodified--check-column rowtime--last-value"1970-01-01 00∶00∶00"-m 1
本文創(chuàng)建的Sqoop job具體任務(wù)有①下載補調(diào)文件信息導(dǎo)入②監(jiān)控信息詳情導(dǎo)入③監(jiān)控統(tǒng)計信息導(dǎo)入④文件存儲信息導(dǎo)入⑤產(chǎn)品基礎(chǔ)定義導(dǎo)入等。
圖4
Apache Oozie是一個運行工作流的系統(tǒng),工作流由相互依賴的作業(yè)組成,Oozie由兩部分組成:一個工作流引擎,負(fù)責(zé)存儲和運行由不同類型的Hadoop作業(yè)組成的工作流;一個coordinator引擎,負(fù)責(zé)基于預(yù)定義的調(diào)度策略及數(shù)據(jù)可用性運行工作流作業(yè)。在Oozie中,工作流由一個由動作節(jié)點和控制流節(jié)點組成的DAG(有向無環(huán)圖),本文通過定義Oozie工作流,定時執(zhí)行每一個Sqoop導(dǎo)入job任務(wù),實現(xiàn)數(shù)據(jù)同步作業(yè)的及時運行和管理。Oozie工作流創(chuàng)建和成功執(zhí)行DAG圖示例(監(jiān)控統(tǒng)計信息)見圖5-圖6:
圖5 Oozie工作流創(chuàng)建
圖6 成功執(zhí)行DAG圖示例
本文基于集中存儲的實時采集數(shù)據(jù)庫和歷史數(shù)據(jù)存儲,將同一共享數(shù)據(jù)源的各類數(shù)值預(yù)報產(chǎn)品進(jìn)行集中統(tǒng)一監(jiān)控,實現(xiàn)接收數(shù)、接收百分率、接收詳情以及缺失補調(diào)情況等實時監(jiān)控、歷史查詢和統(tǒng)計功能,為我省業(yè)務(wù)值班和數(shù)據(jù)服務(wù)管理人員提供及時掌握情況的重要工具,設(shè)計了具有實時監(jiān)控、補調(diào)監(jiān)視、配置管理、歷史查詢和統(tǒng)計分析等功能的3個子系統(tǒng):
(1)配置管理子系統(tǒng):根據(jù)數(shù)值預(yù)報產(chǎn)品相關(guān)文件特點,實現(xiàn)產(chǎn)品定義、存儲目錄、下載定義等配置的靈活添加、修改等功能。
(2)實時監(jiān)控子系統(tǒng):建立針對不同種類數(shù)值預(yù)報產(chǎn)品收集情況的實時監(jiān)控,以圖表兩種形式展示產(chǎn)品類型、產(chǎn)品名稱、文件接收數(shù)和完整率等信息,并支持文件收集詳情、歷史信息、補調(diào)下載記錄等任意時間段的查詢統(tǒng)計功能,見圖7。
圖7 程序運行界面
(3)歷史查詢統(tǒng)計分析子系統(tǒng):基于HBase歷史數(shù)據(jù)存儲可支持長時段的統(tǒng)計查詢分析,本文基于B/S架構(gòu)通過對HBase表數(shù)據(jù)查詢統(tǒng)計功能模塊的開發(fā),目前已實現(xiàn)了各類數(shù)值預(yù)報產(chǎn)品逐30天收集情況查詢統(tǒng)計功能,為其他長時段統(tǒng)計查詢分析功能開發(fā)提供了經(jīng)驗如圖8所示。
圖8 歷史查詢圖形顯示
本文通過對我省數(shù)值預(yù)報產(chǎn)品收集情況的分析,設(shè)計建立了以實時采集數(shù)據(jù)庫(MySQL數(shù)據(jù)庫)和歷史數(shù)據(jù)存儲(HBase庫)為核心,實時采集各數(shù)據(jù)共享源相關(guān)文件信息,建立了具有實時監(jiān)控、歷史查詢、統(tǒng)計分析等功能的數(shù)值預(yù)報產(chǎn)品多源文件共享監(jiān)控保障系統(tǒng),本文重點闡述了系統(tǒng)的整體結(jié)構(gòu)、關(guān)鍵技術(shù)和應(yīng)用功能等內(nèi)容,系統(tǒng)的建立在我省氣象資料的數(shù)據(jù)保障業(yè)務(wù)中具有重要意義。(1)改變了我省目前沒有集中統(tǒng)一的平臺實時監(jiān)控和有效掌握數(shù)值預(yù)報產(chǎn)品每天接收下載及文件共享服務(wù)的情況,為保障我省氣象預(yù)報預(yù)測與服務(wù)人員應(yīng)用數(shù)值預(yù)報產(chǎn)品資料的需求和管理人員實時掌握各類數(shù)值預(yù)報產(chǎn)品在多源文件共享服務(wù)的及時性和完整性等方面提供了重要的保障工具。(2)通過在Hadoop集群下建立HBase分布式數(shù)據(jù)庫存儲長時間序列的歷史數(shù)據(jù),開發(fā)統(tǒng)計分析功能,實現(xiàn)了我省在大數(shù)據(jù)方面研究工作的突破,為以后相似工作提供了方法經(jīng)驗。
下一步研究將以在大數(shù)據(jù)平臺下針對數(shù)值預(yù)報產(chǎn)品多源文件共享監(jiān)控保障的長時間序列統(tǒng)計分析工作為重點推進(jìn),為我省進(jìn)一步制定數(shù)值預(yù)報產(chǎn)品的數(shù)據(jù)存儲管理服務(wù)策略等工作提供分析方法和依據(jù),同時本文的設(shè)計思路與方法可以為氣象部門進(jìn)行其他氣象資料的統(tǒng)計分析提供參考與借鑒。