地面气象资料统计产品是气象决策服务、气候监测业务、公共气象服务的基础数据支撑,统计产品的数据质量将对气象业务产生直接的影响。随着我国地面气象观测体系的不断完善,地面气象资料的统计处理呈现站点数量多、要素种类多、统计策略复杂等特点。截至2017年底,中国气象局已建立了超过2400个国家级地面气象站,约5.8万个区域自动气象站,根据《地面气象资料实时统计处理业务规定》①,要求针对小时观测数据实现日、候、旬、月、季、年等多种时间尺度的统计处理,涉及统计项800余个。同时,随着中国气象局实时历史地面气象资料一体化业务[1]的推进,针对观测要素实时更正信息需同步实现统计值的滚动更新,以提高统计产品的质量;根据气象决策服务和公共气象服务需求,还需实现用户自定义统计[2-3]。
① 中国气象局预报与网络司.地面气象资料实时统计处理业务规定(试行).气预函(2015)58号, 2015.
长期以来,气象资料统计处理流程由各级气象部门独立建设。数据不一致,数据更新不及时,一直困扰着全国气象业务对统计产品的应用,如在汛期气象决策服务中,各级气象部门经常发现降水等气象要素统计值不一致现象。全国气象业务缺少权威的地面气象资料统计产品。
本文通过分析地面气象资料统计计算特点,采用行业主流的大数据分布式流处理计算架构,结合分层、模块化应用组件设计和统计处理通用算法库,基于全国综合气象信息共享平台(CIMISS)[4-5]构建地面气象资料统计处理系统。
1 业务需求现代气象业务对气象资料统计处理的精细化需求日益增长,需实现多维度统计和分析,传统的统计处理系统架构已无法满足业务需求。架构灵活、功能可扩展已成为对统计处理系统的基本要求,因此,本系统采用模块化设计[6],通过算法模块组装适应统计处理的需求变化。另外,业务应用对气象资料统计产品的质量及服务时效提出了更高的要求。
1.1 高质量影响数据质量的因素主要包括算法和数据源两方面。针对地面气象资料统计,在全国气象业务中使用过多套统计算法,不同算法的统计结果存在一定差异,给业务应用带来了很大困扰。如日平均值计算存在多种算法:①使用当日24个时次小时值进行平均计算,②使用4次定时值进行平均计算。2015年中国气象局发布了《地面气象资料实时统计处理业务规定》,对我国地面气象资料的各种统计算法进行统一定义,也为本系统算法软件的开发提供了标准。算法统一并不能确定统计结果一致,如果使用的数据源不一致也会造成统计结果的差异。本系统基于标准的算法、CIMISS统一的数据源(质量控制后的地面气象观测小时数据)进行统计处理,并根据数据更正信息实现统计值的实时滚动更新,保证了国家级和省级统计产品数据的准确性、一致性。
1.2 高时效目前地面气象资料的统计时间尺度包括日、候、旬、月、季、年,参与统计的地面气象站超过6万个,气象要素16个,统计项约800个,实时计算的数据量为12 GB~3.6 TB。计算候、旬、月时间尺度数据时还需使用小时观测数据进行横向统计,而计算年最大降水量及降水起始时间需要使用一年中所有分钟降水数据,参与实时计算的数据记录条数超过13亿条(表 1)。地面气象资料统计处理的数据体量、计算复杂性具有典型大数据特征[7-8],如何选择大数据处理技术,并将成熟技术应用于气象资料统计处理中,实现高效计算,实现统计值的实时滚动更新,将正确的统计结果及时应用到气象业务中也是气象信息化平台能力的表征之一。
![]() |
表 1 统计处理数据量分析 Table 1 Data amount used for target statistics |
2 总体框架
地面气象资料统计处理系统框架遵循规范化、开放性、模块化、易扩展等设计原则,采用分层架构[9],自底向上依次是资源层、数据层、应用层、服务层,业务标准及系统设计规范贯穿每个层,同时实现对每层的业务监控。系统总体框架如图 1所示。
![]() |
|
图1 地面气象资料统计处理系统总体框架 Fig.1 Framework of Surface Meteorological Data Statistical Processing System |
资源层为上层提供运行环境保障,包括支撑分布式计算、任务调度、数据管理的4台计算服务器、2台消息服务器以及存储服务器集群,并搭载必要的系统软件,如消息中间件(Rabbit-MQ)、数据库软件等。
数据层实现对数据资源的管理,数据层中基础数据库提供统计处理所需观测资料数据源;统计产品库存储各种时间尺度统计产品, 同时也为任意时段统计提供数据支撑服务;HIVE数据仓库[10]是计算数据缓存库,避免数据计算过程中频繁的数据读写操作对基础数据库、统计产品库等业务库的影响,通过数据同步工具Sqoop实现数据同步;系统运行库存储系统运行所需的配置信息,如各种统计处理任务的启动策略等。
应用层是系统的核心,所提供的调度服务和计算服务均采用面向服务架构(SOA)的设计思想[11],应用之间采用松耦合架构,提供更加灵活的应用组件服务。应用组件服务包括任务调度、消息服务、分布式流处理、算法库。任务调度实现各统计处理任务的调度策略配置与执行;消息服务根据调度策略或数据更正信息,实现系统内部消息实时通知;数据计算采用分布式流处理框架(Storm)[12],并根据各业务逻辑设计不同的数据流拓扑结构,完成统计计算过程;算法库涵盖各类地面气象资料统计处理算法,算法按照细粒度划分,以实现算法模块的灵活调用。
服务层基于数据层的统计产品库,通过服务接口,提供日、候、旬、月、季、年等多种时间尺度的定时统计产品,以及用户自定义统计服务;同时,基于应用层的算法库,为其他资料处理系统提供通用统计处理算法调用服务。
3 主要功能地面气象资料统计处理系统的主要功能包括定时生成不同时间尺度的统计产品,为用户提供自定义实时统计服务,为其他业务应用提供统计处理通用算法库服务。
3.1 定时统计根据《地面气象资料实时统计处理业务规定》,大批量的统计值主要通过定时任务生成。统计涉及16个气象要素,800余个统计项。定时统计采用开源作业调度技术(Quartz)[13]实现,统计处理任务的定时启动时间设置主要考虑3方面因素:①统计所需数据源完整性达到业务考核要求, ②用户对统计值的应用时效需求, ③在同一时间段优先启动业务应用较多的统计项计算任务。本系统中设置的定时启动时间及各统计产品服务时间见表 2。
![]() |
表 2 定时启动时间及产品服务时间 Table 2 Timing start time and product service timeliness |
3.2 自定义统计
本系统除了可以实现多种时间尺度的定时统计,还可以根据用户需求,实现任意时间段和任意区域范围统计值的计算。其中任意时间段包括任意连续小时、任意连续日等,任意区域范围包括全国、省、市、县或任意经纬度范围等。
通过集成CIMISS气象数据统一服务接口(MUSIC),由用户输入起止时间、区域范围等参数,MUSIC接口调用本系统提供的REST服务,将参数传递至本系统,并触发相应时间段和区域范围的统计计算,统计结果通过REST服务接口返回至MUSIC接口,再由MUSIC接口将统计结果返回给用户。
3.3 算法服务气象资料的统计处理算法,包括平均值、求和、极值、日数、出现频率、最长/最大连续值、日较差等及一些常用的数学函数计算等,对其他资料的统计处理都是通用的,为提高软件复用率,本系统将统计处理算法根据处理规则进行封装,按照模块化的设计思想,将独立的算法封装为一个算法组件,形成本系统的算法库,同时,每个算法对外提供WebService算法调用服务。
目前,通过使用算法库的算法服务,已在地面气象资料统计处理系统框架上快速扩展并实现了高空、辐射、酸雨、土壤相对湿度等气象资料的统计处理,统计处理通用算法的复用率约为80%。
4 关键技术为提升地面气象资料统计产品的数据质量及时效,系统采用大数据流式计算技术提高数据处理时效;根据地面实时历史一体化业务中的数据更正信息实现对统计值的滚动更新,提升统计产品数据质量;采用大数据消息传输队列保证系统内部模块间的运行高效,采用高速缓存技术保证系统的稳定性。
4.1 大数据流式计算传统的气象基础数据处理系统一般采用单进程、串行计算设计,将数据源全部加载到服务器内存中,以实现数据的实时计算,通过测试6万余个地面气象站小时观测数据的日尺度统计处理,实现气温、降水等核心要素统计需要耗费约1.5 GB内存,平均处理时效超过60 min, 传统系统架构已不能满足海量数据计算需求。
为提高数据的统计处理时效,系统采用了大数据计算技术。批量计算和流式计算是大数据计算的主要形态[14]。其中,批量计算主要针对实时性要求不高的应用场景[15],数据需要先存储后计算;流式计算主要针对低延时的实时计算应用场景,当一个时间窗口的数据流到内存后,无需存储直接进行计算。
根据实时统计处理的特点和业务需求,系统采用分布式流处理框架(Storm)。Storm主要由一个主控节点(Nimbus)和多个工作节点(Supervisor)构成,通过分布式协调服务程序(Zookeeper)进行计算协调,Storm的技术架构见图 2。主控节点负责资源分配、计算任务的分配与调度、运行状态监控等,并将计算拓扑分配给工作节点, 同时把该任务的元信息同步至协调服务程序;此外,主控节点通过协调服务程序实时监控任务的执行情况和各从节点的心跳状态。工作节点负责监听并接受来自于主节点所分配的任务, 并启动或停止自己所管理的进程(Worker)。进程根据分配的任务信息,启动多个线程(Executor),同时实例化数据源组件(Spout)、数据处理组件(Bolt)。数据源组件负责从外部数据源不间断地读取数据,并以元组(Tuple)的形式发送给相应的数据处理组件,数据处理组件负责对接收到的数据流进行计算处理, 实现过滤、聚合、查询等具体功能。
![]() |
|
图2 分布式流处理框架(Storm)技术架构 Fig.2 Storm architecture |
数据处理组件数量直接影响统计计算的并行度,数据处理组件数量越多,并行度越高。在本系统中,首先根据硬件资源确定数据处理组件数量的上限,再根据地面气象资料统计算法类别进行划分,以日值统计处理为例,每个线程共设置6个数据处理组件,分别为平均值计算、极值计算、求和计算、频次计算、日数计算、常量计算。单站每日小时观测数据从数据源组件源源不断传递给每个数据处理组件实现不同的统计计算,最后聚合为一个站点完整的统计值记录,同时还可以实现多个数据源组件流的实时并行处理。
应用大数据流处理技术,较传统统计处理框架,处理时效提高10倍以上,日、候、旬、月尺度的统计处理时间分别从65 min,35 min,50 min,165 min降低至3.2 min,3.3 min,4.3 min,6.1 min,用户可以获取高时效的统计产品。
4.2 统计值滚动更新触发统计值滚动更新的数据源主要包括两种:一种是在定时统计启动后迟到的数据,另一种来源于观测数据的实时更正信息。在全国建立的自动气象站实时观测资料三级质量控制系统[16]基础上,省级业务根据质量控制结果实现对观测数据的实时更正,更正信息主要包括要素值和质量标识更正,数据更正信息通过消息方式从省级传至国家级CIMISS平台,对观测数据进行实时更新,提升地面观测数据质量,本系统则根据数据更正信息,实现对统计值的实时滚动更新,保证统计值的准确性。
统计值的滚动更新由迟到数据或数据更正信息实时触发,首先判断要素值或质量标识的更新是否满足统计值更新条件[17],不改变统计值的数据不触发更新,如质量标识由可疑改为正确、要素值由错误改为缺测等;再判断更新时间是否在定时统计启动时间之后,否则不触发更新;更新过程为先触发日尺度统计值更新,日尺度统计值更新完成后触发候、旬、月尺度统计值更新,月尺度统计值更新完成后触发季、年尺度统计值更新。另外,统计值滚动更新时间界限没有限制,即对历史观测数据的更正也会触发历史统计值的更新。目前,30 s左右能完成单站、单要素所有尺度统计值滚动更新计算,更新流程和计算平均耗时见图 3。
![]() |
|
图3 滚动更新流程和计算平均耗时 Fig.3 Rolling updating process and average consuming time |
地面气象资料统计产品针对迟到数据和数据更正信息实现滚动更新,大幅度提高了产品的准确性和完整性。图 4为2017年7月6万余个地面气象站的常用要素统计值更新占所有数据的比例,其中, 平均本站气压和平均相对湿度统计值的平均更正比例为2%~3%,相当于每日有1000多个站的该要素统计值实现更新,平均气温、2 min平均风速、20:00—次日20:00降水量的平均更正比例为0.5%。
![]() |
|
图4 2017年7月1—31日地面气象资料常用要素统计值更正比例 Fig.4 Correction proportion of daily elements statistics in Jul 2017 |
滚动更新后,地面气象资料统计产品中常用要素统计值实有率见图 5。国家级地面气象站常用要素统计值的实有率除年尺度统计值以外均在99.9%以上,区域自动气象站考核站常用要素统计值的实有率除季、年尺度统计值以外均在95%以上,能够满足业务和科研的应用需求。
![]() |
|
图5 地面统计值常用要素实有率 (a)国家级地面气象站, (b)区域自动气象站考核站 Fig.5 Real rate of common surface element statistics (a)national surface weather station, (b)regional automatic weather station for accessment |
统计值实有率定义为
![]() |
(1) |
式(1)中,R为实有率,E为要素实有统计值数量,E0为要素应有统计值数量,i代表站序,N代表考核站总数。实有率的计算方法为所有考核站某要素非缺测统计值与应有统计值总量的比值。
4.3 大数据消息传输与高速缓存大数据计算框架选定后,影响计算效率的瓶颈为计算系统中的数据传输问题。根据特定的业务场景选择一个合适的分布式消息队列,对于提高实时计算效率具有很大作用[18]。本系统各组件间均采用Rabbit-MQ分布式消息队列实现海量数据通信,主要消息包括数据更正消息、任务调度消息、大数据流式计算中的数据消息等。
为保证消息运行完整性及容错性,系统采用Redis数据缓存技术[19],在消息队列之外增加消息缓存,实现消息在异常情况下的缓存及后续的自动消息补传以提高消息通信机制的容错性。
图 6为分布式消息传输、数据缓存技术在本系统数据读取和写入、任务调度及大数据流式计算等关键应用组件中的技术支撑。
![]() |
|
图6 大数据消息传输和高速缓存技术的应用 Fig.6 Application of big data message transmission and cache technology |
5 业务应用效果
为保证数据的一致性,并集约使用计算资源,系统采用在国家级一级部署、各省同步应用的业务布局。国家级系统完成所有地面气象资料统计值的计算处理和存储,同时将统计产品文件通过中国气象局卫星广播系统(CMACast)[20]下发,由各省选择相关区域范围内的统计产品实时处理存储,国家级和省级系统同步时效在3 min以内。地面气象资料统计处理系统于2017年1月在国家级和31个省级CIMISS数据环境中部署并实现业务运行,替代了原有传统技术架构的地面常规要素统计处理系统,统计产品的数据质量和完整性、系统的运行效率都得到大幅度提升。
地面气象资料统计产品在气象业务中得到充分应用,成为支撑全国气象业务的权威气象统计产品,首次在国内实现实时历史一体化统计产品的实时业务应用,并通过CIMISS提供数据服务。2017年日尺度统计产品下载次数达到1951.4万次,每天下载次数超过5万次,在CIMISS所有400余种观测资料或产品中排名第三,直接支撑了中国天气网、气象服务信息系统(MESIS)、气候信息处理与分析系统(CIPAS)等50余个国家级业务系统对统计产品的应用,下载量排名前10名的业务系统及下载情况见表 3。
![]() |
表 3 国家级业务系统下载地面气象资料统计产品情况(前10名) Table 3 Download times of surface meteorological data statistics in national operational systems(Top 10) |
基于对CIMISS数据服务日志的分析结果,包括气温、气压、湿度、风向、风速、降水、云、能见度、天气现象、积雪、日照等16种要素的统计产品主要应用于天气监测预报预警、气象决策服务、气候监测和公共气象服务,实时统计产品已集成到相关气象业务系统,有效提高了气象监测预报服务效率和水平,图 7为中国地面气象资料统计产品直接支撑气象业务情况。
![]() |
|
图7 统计产品在气象业务中的应用 Fig.7 Application of statistical products to meteorological services |
在天气预报制作系统中调用上述统计产品可快速实现气温、降水、风等气象要素对比分析和预报检验,为业务人员提供参考;在气候业务中,统计产品主要应用于气候监测、气候评估,实现对气候要素、气候事件等的实时监测。图 8为气温要素日、旬、月、季、年等多尺度统计产品的气候监测应用。
![]() |
|
图8 气温多尺度统计产品的应用 Fig.8 Application of the multi-scale statistics of temperature |
相对于传统的国家级地面气象站资料统计产品, 系统增加了对区域自动气象站资料的统计处理,对气象要素实时监测的空间分辨率进一步提高。图 9为2017年全国地面极大风速超过17 m/s的大风日数分布,可见增加区域自动气象站大风统计资料后,在国家级地面气象站分布较少的西部和北部地区,对大风日数分布描述更加精细,尤其是青藏高原地区。
![]() |
|
图9 2017年全国地面极大风速超过17 m/s的大风日数分布 (a)国家级地面气象站, (b)国家级地面气象站及区域自动气象站 Fig.9 Number of surface gale(more than 17 m/s) days over China in 2017 (a)national surface weather station, (b)national surface weather station and regional automatic weather station |
6 小结
本文从地面气象资料统计产品业务需求出发,详细阐述了地面气象资料统计处理系统设计和实现,系统具有如下主要特点:
1) 系统实现了全国6万余个地面气象站所有要素统计值的快速计算、针对迟到数据和数据更正信息的统计值滚动更新、自定义统计等功能,地面气象资料统计产品的数据实有率、准确性及空间分辨率均有较大幅度提高;同时,系统采用标准的算法,以及国家级一级部署、各省同步应用的业务布局,保证了国家级和省级统计产品的数据一致性。地面气象资料统计产品已成为全国气象业务中权威的气象统计产品。
2) 系统应用大数据流式处理技术,实现了高效的统计计算,较传统串行处理框架,处理时效提高了10倍以上;采用分布式消息队列和大数据缓存等技术保证了系统高效运行及稳定性;采用模块化设计,技术架构具有较强扩展性。
基于本系统技术架构,通过扩展各类资料处理算法,已实现高空、辐射、海洋、飞机报等其他各类资料的统计、质量控制和评估功能,并在全国业务中应用。今后本系统技术框架和算法模块将全部融入气象大数据云平台的加工处理流水线,并进一步完善流计算的计算拓扑,实现对计算资源的充分利用,提高对分布式节点处理结果的汇聚时效;另外,针对目前定时统计架构不灵活等问题,将实现基于观测资料完整率触发的自动作业调度,进一步提升统计处理时效;针对后端气象业务应用,实时发送统计值更新消息,可触发后端业务的及时更新,保障统计产品的数据准确性。
[1] |
刘莹, 刘雯, 闫荞荞, 等. 气象资料业务系统(MDOS)使用手册. 北京: 气象出版社, 2017.
|
[2] |
吕终亮, 罗兵, 吴焕萍, 等. MESIS信息检索及可视化产品制作平台实现. 应用气象学报, 2012, 23(5): 631-637. DOI:10.3969/j.issn.1001-7313.2012.05.015 |
[3] |
韩宁, 苗春生. 近6年陕甘宁三省5-9月短时强降水统计特征. 应用气象学报, 2012, 23(6): 691-701. DOI:10.3969/j.issn.1001-7313.2012.06.006 |
[4] |
熊安元, 赵芳, 王颖, 等. 全国综合气象信息共享系统的设计与实现. 应用气象学报, 2015, 26(4): 500-512. |
[5] |
赵芳, 熊安元, 张小缨, 等. 全国综合气象信息共享平台架构设计技术特征. 应用气象学报, 2017, 28(6): 750-758. |
[6] |
Kirk K. Java应用架构设计:模块化模式与OSGi. 北京: 机械工业出版社, 2013.
|
[7] |
李国杰, 程学旗. 大数据研究:未来科技及经济社会发展的重大战略领域——大数据的研究现状与科学思考. 中国科学院院刊, 2012, 27(6): 647-657. DOI:10.3969/j.issn.1000-3045.2012.06.001 |
[8] |
罗敬宁, 刘立葳. 遥感大数据分布式技术研究与实现. 应用气象学报, 2017, 28(5): 621-631. |
[9] |
岳兆娟, 史劼, 李斌, 等. 一种基于SOA的可信软件体系架构模型. 中国电子科学研究院学报, 2016, 11(3): 315-318. DOI:10.3969/j.issn.1673-5692.2016.03.018 |
[10] |
卡普廖洛, 万普勒, 卢森格林, 等. Hive编程指南. 北京: 人民邮电出版社, 2013.
|
[11] |
Thomas E. SOA服务设计原则. 北京: 人民邮电出版社, 2009.
|
[12] |
Goetz P T, O'Neill B. Storm分布式实时计算模式. 北京: 机械工业出版社, 2015.
|
[13] |
王慕华, 唐卫, 丰德恩, 等. 基于消息驱动的气象图形产品加工系统. 气象, 2018, 44(5): 692-698. |
[14] |
孙大为, 张广艳, 郑纬民. 大数据流式计算:关键技术及系统实例. 软件学报, 2014, 25(4): 839-862. |
[15] |
杨润芝, 沈文海, 肖卫青. 基于MapReduce计算模型的气象资料处理调优试验. 应用气象学报, 2014, 25(5): 618-628. |
[16] |
任芝花, 张志富, 孙超, 等. 全国自动气象站实时观测资料三级质量控制系统研制. 气象, 2015, 41(10): 1268-1277. DOI:10.7519/j.issn.1000-0526.2015.10.010 |
[17] |
王妍, 孙超, 余予, 等. 全国自动气象站QC信息管理系统的设计与实现. 安徽农业科学, 2015, 43(30): 178-181. DOI:10.3969/j.issn.0517-6611.2015.30.066 |
[18] |
刘峰, 鄂海红. 基于海量数据的消息队列的性能对比与优化方案. 软件, 2016, 37(9): 33-37. DOI:10.3969/j.issn.1000-386x.2016.09.008 |
[19] |
王甫棣, 姜立鹏, 姚燕. 北京全球信息系统中心的数据缓存功能优化. 应用气象学报, 2014, 25(2): 242-248. DOI:10.3969/j.issn.1001-7313.2014.02.014 |
[20] |
王春芳, 李湘, 陈永涛, 等. 中国气象局卫星广播系统(CMACast)设计. 应用气象学报, 2012, 23(1): 113-120. DOI:10.3969/j.issn.1001-7313.2012.01.013 |