夏正龍,鐘艷雯,朱亮,呂冠儒,周超
(湖南省氣象信息中心,長(zhǎng)沙 410118)
近年來(lái)我國(guó)大力開(kāi)展并加快氣象業(yè)務(wù)現(xiàn)代化建設(shè),隨著數(shù)值預(yù)報(bào)技術(shù)的發(fā)展,目前可用于業(yè)務(wù)的數(shù)值預(yù)報(bào)產(chǎn)品無(wú)論是種類,還是數(shù)據(jù)量都得到了大大的豐富和增加,中期預(yù)報(bào)模式、區(qū)域預(yù)報(bào)模式、臺(tái)風(fēng)路徑預(yù)報(bào)模式、海浪預(yù)報(bào)模式、環(huán)境預(yù)報(bào)模式、集合預(yù)報(bào)等數(shù)值預(yù)報(bào)產(chǎn)品相繼投入業(yè)務(wù)運(yùn)行,各種分辨率的數(shù)值預(yù)報(bào)產(chǎn)品也越來(lái)越得到各級(jí)氣象預(yù)測(cè)預(yù)報(bào)業(yè)務(wù)系統(tǒng)的重視和應(yīng)用,數(shù)值預(yù)報(bào)業(yè)務(wù)正在發(fā)揮著越來(lái)越重要的基礎(chǔ)作用,為各級(jí)氣象臺(tái)的日常公眾預(yù)報(bào)服務(wù),特別是為關(guān)鍵性、災(zāi)害性、轉(zhuǎn)折性天氣的預(yù)報(bào)服務(wù)等提供了有物理基礎(chǔ)的指導(dǎo)產(chǎn)品和定量參考信息[1-2],變成不可缺少的重要數(shù)據(jù)支撐。同時(shí)隨著氣象預(yù)報(bào)業(yè)務(wù)服務(wù)的需求不斷提高,對(duì)部門內(nèi)提供CMACast廣播文件共享[3-4]、CIMISS[5-6]、數(shù)值預(yù)報(bào)云[7]下載文件共享以及對(duì)部門外提供文件共享等,數(shù)據(jù)源和共享方式也越來(lái)越多樣,保障能力要求也越來(lái)越高,能夠?qū)崟r(shí)掌握各類數(shù)值預(yù)報(bào)產(chǎn)品在多源文件共享服務(wù)的及時(shí)性和完整性,成為數(shù)值預(yù)報(bào)產(chǎn)品文件共享服務(wù)保障工作的迫切需求。
目前氣象數(shù)值預(yù)報(bào)產(chǎn)品的收集主要通過(guò)CMACast廣播接收、國(guó)家局主站下載、外省推送、數(shù)值預(yù)報(bào)云下載等多種方式,每天收集到的數(shù)值預(yù)報(bào)產(chǎn)品多達(dá)幾十種類,收集后再通過(guò)通信系統(tǒng)分類推送到各文件共享數(shù)據(jù)源提供服務(wù),從“氣象數(shù)據(jù)傳輸命名(QX/T 129-2011)[8]”和“氣象資料分類與編碼(QX/T 102-2009)[9]”這兩項(xiàng)氣象行業(yè)標(biāo)準(zhǔn)并結(jié)合文件名定義規(guī)范和實(shí)際收集情況分析,數(shù)值預(yù)報(bào)產(chǎn)品文件一般具有:(1)文件名有固定結(jié)構(gòu),由強(qiáng)制字段、自由字段及字段分隔符組成,強(qiáng)制字段和自由字段都有定義;(2)文件名有時(shí)間定義,一般都有產(chǎn)品預(yù)報(bào)時(shí)次等定義;(3)一般都有固定時(shí)次,例如歐洲中心每天2次(00時(shí),12時(shí)),產(chǎn)品生成時(shí)間也比較集中;(4)同類產(chǎn)品每個(gè)時(shí)次生成的文件數(shù)和大小等相對(duì)也比較固定等特點(diǎn),為采用以文件名模板區(qū)分?jǐn)?shù)值預(yù)報(bào)產(chǎn)品種類、以文件數(shù)和大小判斷完整性和按資料時(shí)次進(jìn)行監(jiān)控等提供了方法策略。我省目前提供數(shù)值預(yù)報(bào)產(chǎn)品文件共享服務(wù)方式主要包括共享磁盤映射,F(xiàn)TP服務(wù)和CIMISS系統(tǒng)接口調(diào)用3種方式,共享磁盤映射和FTP服務(wù)采取開(kāi)通協(xié)議,按照類別分目錄提供固定天數(shù)的查詢?cè)L問(wèn),共享磁盤映射主要針對(duì)省局內(nèi)部直屬單位,F(xiàn)TP服務(wù)針對(duì)全省氣象部門及外部門,CIMISS系統(tǒng)以文件系統(tǒng)存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),并設(shè)計(jì)表結(jié)構(gòu)記錄文件索引信息及管理型元數(shù)據(jù)信息,提供接口調(diào)用方式供全省氣象部門使用[10-11],這幾種共享服務(wù)方式為信息采集提供了思路和方法,確認(rèn)了建立多源文件共享監(jiān)控保障系統(tǒng)的可行性。
本文結(jié)合數(shù)值預(yù)報(bào)產(chǎn)品收集特點(diǎn)和我省提供共享服務(wù)方式的分析,充分吸取前期氣象監(jiān)控系統(tǒng)[12-15]成功的設(shè)計(jì)思路,利用先進(jìn)成熟的IT技術(shù),設(shè)計(jì)了多源文件共享監(jiān)控保障系統(tǒng),系統(tǒng)整體架構(gòu)主要由數(shù)據(jù)共享源、存儲(chǔ)管理、功能應(yīng)用3部分組成,見(jiàn)圖1。

圖1 系統(tǒng)框圖
數(shù)據(jù)共享源主要包括我省目前用于提供共享磁盤映射、FTP服務(wù)的各種服務(wù)器和接口調(diào)用的CIMISS系統(tǒng),這些數(shù)據(jù)共享源實(shí)時(shí)接收著從CMACast、省際共享、下載平臺(tái)等各處收集到的數(shù)值預(yù)報(bào)產(chǎn)品,按照既定的存儲(chǔ)管理和共享服務(wù)規(guī)則,提供給氣象部門各業(yè)務(wù)單位和業(yè)務(wù)系統(tǒng)使用。
本文設(shè)計(jì)以資料代碼為每類數(shù)值預(yù)報(bào)產(chǎn)品的唯一標(biāo)識(shí)實(shí)時(shí)采集不同類型數(shù)據(jù)共享源的文件信息和統(tǒng)計(jì)結(jié)果,集中統(tǒng)一存儲(chǔ)到實(shí)時(shí)采集數(shù)據(jù)庫(kù)中供監(jiān)控查詢統(tǒng)計(jì)使用,具體包括3個(gè)方面:(1)對(duì)接CIMISS系統(tǒng)的共享服務(wù)情況,實(shí)時(shí)同步采集CIMISS數(shù)據(jù)庫(kù)中相關(guān)文件信息記錄;(2)實(shí)時(shí)掃描各數(shù)據(jù)共享源共享目錄,采集文件信息,并實(shí)時(shí)統(tǒng)計(jì)逐類別逐資料時(shí)次的文件數(shù)、百分率等結(jié)果;(3)缺失文件及時(shí)從可下載數(shù)據(jù)源處下載,并分發(fā)到缺失文件共享數(shù)據(jù)源提供共享是保障服務(wù)完整性的一個(gè)重要手段,及時(shí)主動(dòng)掃描每個(gè)下載數(shù)據(jù)源對(duì)比從共享數(shù)據(jù)源采集到的信息記錄,獲取到缺失文件后下載推送到缺失文件的共享數(shù)據(jù)源,并存儲(chǔ)相關(guān)補(bǔ)調(diào)下載信息。
綜合對(duì)氣象數(shù)值預(yù)報(bào)產(chǎn)品文件屬性、共享服務(wù)方式的分析,主要包括各類數(shù)值預(yù)報(bào)產(chǎn)品的基本信息、監(jiān)控統(tǒng)計(jì)信息、下載和存儲(chǔ)定義等,從存儲(chǔ)信息的使用需求考慮設(shè)計(jì)為滿足較短時(shí)間查詢的實(shí)時(shí)采集數(shù)據(jù)庫(kù)和較長(zhǎng)時(shí)間統(tǒng)計(jì)分析的歷史數(shù)據(jù)存儲(chǔ)2部分組成,存儲(chǔ)內(nèi)容基本一致,為整個(gè)系統(tǒng)提供數(shù)據(jù)支撐。
(1)實(shí)時(shí)采集數(shù)據(jù)庫(kù)采用MySQL數(shù)據(jù)庫(kù)管理,存儲(chǔ)實(shí)時(shí)從多源文件共享數(shù)據(jù)源采集的文件信息和文件數(shù)、完整率等統(tǒng)計(jì)結(jié)果,在整個(gè)存儲(chǔ)表結(jié)構(gòu)設(shè)計(jì)中,資料代碼為每類數(shù)值預(yù)報(bào)產(chǎn)品的唯一標(biāo)識(shí),關(guān)聯(lián)所有的存儲(chǔ)信息,保存時(shí)間較短,一般為1-2月,保存內(nèi)容主要包括監(jiān)控信息、文件存儲(chǔ)信息、下載補(bǔ)調(diào)信息、統(tǒng)計(jì)結(jié)果以及數(shù)值預(yù)報(bào)產(chǎn)品相關(guān)配置定義(基礎(chǔ)定義、下載定義、存儲(chǔ)目錄、監(jiān)控時(shí)次定義等),見(jiàn)圖2具體表結(jié)構(gòu)設(shè)計(jì)E-R圖。

圖2 具體表結(jié)構(gòu)設(shè)計(jì)E-R圖
(2)歷史數(shù)據(jù)存儲(chǔ):本文采用基于Hadoop集群搭建HBase分布式數(shù)據(jù)庫(kù),用于存儲(chǔ)管理較長(zhǎng)時(shí)間的采集信息,為較長(zhǎng)時(shí)間的統(tǒng)計(jì)分析功能服務(wù)。HBase是一個(gè)面向列的分布式數(shù)據(jù)庫(kù),表中的所有行根據(jù)行的鍵值(也就是表的主鍵)排列,行中的列被分成“列族”,同一個(gè)列族的所有成員具有相同的前綴,所有對(duì)表的訪問(wèn)都要通過(guò)表的主鍵,所以主鍵的設(shè)計(jì)將直接影響查詢檢索,數(shù)值預(yù)報(bào)產(chǎn)品一般總是依照資料時(shí)次、產(chǎn)品代碼、數(shù)據(jù)源等順序進(jìn)行查詢統(tǒng)計(jì)分析,因此本文結(jié)合實(shí)時(shí)采集數(shù)據(jù)庫(kù)的表結(jié)構(gòu)設(shè)計(jì),主存儲(chǔ)信息表采用資料時(shí)次、產(chǎn)品代碼、數(shù)據(jù)源及ID構(gòu)成的組合鍵作為主鍵,列字段和實(shí)時(shí)采集數(shù)據(jù)庫(kù)對(duì)應(yīng)表的列字段相同,其他輔助表結(jié)構(gòu)則和實(shí)時(shí)采集數(shù)據(jù)庫(kù)相同,這樣極大地方便了對(duì)歷史存儲(chǔ)信息的數(shù)據(jù)導(dǎo)入(出)和統(tǒng)計(jì)分析,例如查詢一段時(shí)間的某類數(shù)值產(chǎn)品在某臺(tái)數(shù)據(jù)共享源上的文件情況,只需要將起始時(shí)間、結(jié)束時(shí)間、產(chǎn)品代碼、數(shù)據(jù)源作為行鍵過(guò)濾條件加到HBase的Scan的Filter列表中即可,同時(shí)可設(shè)置起始時(shí)間和結(jié)束時(shí)間為Scan的起始行和終止行來(lái)提高查詢速度,但需注意將時(shí)間格式轉(zhuǎn)換為行鍵中資料時(shí)次對(duì)應(yīng)格式,查詢條件代碼示例和結(jié)果(轉(zhuǎn)換輸出格式)如下:
monitorrealstatdao mrsd=new monitorrealstatdao();/*監(jiān)控統(tǒng)計(jì)結(jié)果查詢類*/
mrsd.getDataByTimeRange("20180123 15∶26∶50".getBytes()/*起始時(shí)間*/,"20180127 15∶26∶50".getBytes()/*結(jié)束時(shí)間*/,"F.0011.0002.S001".getBytes()/*資料編碼*/,"省級(jí)文件共享服務(wù)器".getBytes()/*數(shù)據(jù)源*/);

圖3
(3)為了導(dǎo)出實(shí)時(shí)采集信息到歷史數(shù)據(jù)存儲(chǔ)HBase庫(kù)中,本文配合使用了Hadoop生態(tài)圈的軟件Oozie和Sqoop[16],通過(guò)“數(shù)據(jù)增量導(dǎo)入”方式實(shí)現(xiàn)從實(shí)時(shí)采集數(shù)據(jù)庫(kù)定時(shí)同步信息到歷史數(shù)據(jù)存儲(chǔ)中管理。Apache Sqoop是一個(gè)開(kāi)源工具,允許用戶將結(jié)構(gòu)化數(shù)據(jù)抽取到Hadoop中用于進(jìn)一步處理,Sqoop擁有一個(gè)可擴(kuò)展的框架,能夠從(向)任何支持批量數(shù)據(jù)傳輸?shù)耐獠看鎯?chǔ)系統(tǒng)導(dǎo)入(導(dǎo)出)數(shù)據(jù),本文通過(guò)使用Sqoop job工具,結(jié)合MySQL表結(jié)構(gòu)和HBase存儲(chǔ)表行鍵和列的設(shè)計(jì),建立了從MySQL數(shù)據(jù)庫(kù)到HBase庫(kù)的增量導(dǎo)入job,完成實(shí)時(shí)采集數(shù)據(jù)庫(kù)和歷史數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)同步功能,創(chuàng)建Sqoop job數(shù)據(jù)導(dǎo)入語(yǔ)句創(chuàng)建示例(監(jiān)控統(tǒng)計(jì)信息)如下:
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ù)有①下載補(bǔ)調(diào)文件信息導(dǎo)入②監(jiān)控信息詳情導(dǎo)入③監(jiān)控統(tǒng)計(jì)信息導(dǎo)入④文件存儲(chǔ)信息導(dǎo)入⑤產(chǎn)品基礎(chǔ)定義導(dǎo)入等。

圖4
Apache Oozie是一個(gè)運(yùn)行工作流的系統(tǒng),工作流由相互依賴的作業(yè)組成,Oozie由兩部分組成:一個(gè)工作流引擎,負(fù)責(zé)存儲(chǔ)和運(yùn)行由不同類型的Hadoop作業(yè)組成的工作流;一個(gè)coordinator引擎,負(fù)責(zé)基于預(yù)定義的調(diào)度策略及數(shù)據(jù)可用性運(yùn)行工作流作業(yè)。在Oozie中,工作流由一個(gè)由動(dòng)作節(jié)點(diǎn)和控制流節(jié)點(diǎn)組成的DAG(有向無(wú)環(huán)圖),本文通過(guò)定義Oozie工作流,定時(shí)執(zhí)行每一個(gè)Sqoop導(dǎo)入job任務(wù),實(shí)現(xiàn)數(shù)據(jù)同步作業(yè)的及時(shí)運(yùn)行和管理。Oozie工作流創(chuàng)建和成功執(zhí)行DAG圖示例(監(jiān)控統(tǒng)計(jì)信息)見(jiàn)圖5-圖6:

圖5 Oozie工作流創(chuàng)建

圖6 成功執(zhí)行DAG圖示例
本文基于集中存儲(chǔ)的實(shí)時(shí)采集數(shù)據(jù)庫(kù)和歷史數(shù)據(jù)存儲(chǔ),將同一共享數(shù)據(jù)源的各類數(shù)值預(yù)報(bào)產(chǎn)品進(jìn)行集中統(tǒng)一監(jiān)控,實(shí)現(xiàn)接收數(shù)、接收百分率、接收詳情以及缺失補(bǔ)調(diào)情況等實(shí)時(shí)監(jiān)控、歷史查詢和統(tǒng)計(jì)功能,為我省業(yè)務(wù)值班和數(shù)據(jù)服務(wù)管理人員提供及時(shí)掌握情況的重要工具,設(shè)計(jì)了具有實(shí)時(shí)監(jiān)控、補(bǔ)調(diào)監(jiān)視、配置管理、歷史查詢和統(tǒng)計(jì)分析等功能的3個(gè)子系統(tǒng):
(1)配置管理子系統(tǒng):根據(jù)數(shù)值預(yù)報(bào)產(chǎn)品相關(guān)文件特點(diǎn),實(shí)現(xiàn)產(chǎn)品定義、存儲(chǔ)目錄、下載定義等配置的靈活添加、修改等功能。
(2)實(shí)時(shí)監(jiān)控子系統(tǒng):建立針對(duì)不同種類數(shù)值預(yù)報(bào)產(chǎn)品收集情況的實(shí)時(shí)監(jiān)控,以圖表兩種形式展示產(chǎn)品類型、產(chǎn)品名稱、文件接收數(shù)和完整率等信息,并支持文件收集詳情、歷史信息、補(bǔ)調(diào)下載記錄等任意時(shí)間段的查詢統(tǒng)計(jì)功能,見(jiàn)圖7。

圖7 程序運(yùn)行界面
(3)歷史查詢統(tǒng)計(jì)分析子系統(tǒng):基于HBase歷史數(shù)據(jù)存儲(chǔ)可支持長(zhǎng)時(shí)段的統(tǒng)計(jì)查詢分析,本文基于B/S架構(gòu)通過(guò)對(duì)HBase表數(shù)據(jù)查詢統(tǒng)計(jì)功能模塊的開(kāi)發(fā),目前已實(shí)現(xiàn)了各類數(shù)值預(yù)報(bào)產(chǎn)品逐30天收集情況查詢統(tǒng)計(jì)功能,為其他長(zhǎng)時(shí)段統(tǒng)計(jì)查詢分析功能開(kāi)發(fā)提供了經(jīng)驗(yàn)如圖8所示。

圖8 歷史查詢圖形顯示
本文通過(guò)對(duì)我省數(shù)值預(yù)報(bào)產(chǎn)品收集情況的分析,設(shè)計(jì)建立了以實(shí)時(shí)采集數(shù)據(jù)庫(kù)(MySQL數(shù)據(jù)庫(kù))和歷史數(shù)據(jù)存儲(chǔ)(HBase庫(kù))為核心,實(shí)時(shí)采集各數(shù)據(jù)共享源相關(guān)文件信息,建立了具有實(shí)時(shí)監(jiān)控、歷史查詢、統(tǒng)計(jì)分析等功能的數(shù)值預(yù)報(bào)產(chǎn)品多源文件共享監(jiān)控保障系統(tǒng),本文重點(diǎn)闡述了系統(tǒng)的整體結(jié)構(gòu)、關(guān)鍵技術(shù)和應(yīng)用功能等內(nèi)容,系統(tǒng)的建立在我省氣象資料的數(shù)據(jù)保障業(yè)務(wù)中具有重要意義。(1)改變了我省目前沒(méi)有集中統(tǒng)一的平臺(tái)實(shí)時(shí)監(jiān)控和有效掌握數(shù)值預(yù)報(bào)產(chǎn)品每天接收下載及文件共享服務(wù)的情況,為保障我省氣象預(yù)報(bào)預(yù)測(cè)與服務(wù)人員應(yīng)用數(shù)值預(yù)報(bào)產(chǎn)品資料的需求和管理人員實(shí)時(shí)掌握各類數(shù)值預(yù)報(bào)產(chǎn)品在多源文件共享服務(wù)的及時(shí)性和完整性等方面提供了重要的保障工具。(2)通過(guò)在Hadoop集群下建立HBase分布式數(shù)據(jù)庫(kù)存儲(chǔ)長(zhǎng)時(shí)間序列的歷史數(shù)據(jù),開(kāi)發(fā)統(tǒng)計(jì)分析功能,實(shí)現(xiàn)了我省在大數(shù)據(jù)方面研究工作的突破,為以后相似工作提供了方法經(jīng)驗(yàn)。
下一步研究將以在大數(shù)據(jù)平臺(tái)下針對(duì)數(shù)值預(yù)報(bào)產(chǎn)品多源文件共享監(jiān)控保障的長(zhǎng)時(shí)間序列統(tǒng)計(jì)分析工作為重點(diǎn)推進(jìn),為我省進(jìn)一步制定數(shù)值預(yù)報(bào)產(chǎn)品的數(shù)據(jù)存儲(chǔ)管理服務(wù)策略等工作提供分析方法和依據(jù),同時(shí)本文的設(shè)計(jì)思路與方法可以為氣象部門進(jìn)行其他氣象資料的統(tǒng)計(jì)分析提供參考與借鑒。