FSO 用户指南

欢迎

欢迎

前言

FSO(Forecast sensitivity to observation)即预报对观测的敏感性,最初由MMM / NCAR开发,是一种基于伴随理论的用于评估观测对同化系统和数值预报贡献的方法,或者说,观测对预测误差减少的影响。

本手册介绍的是为中国气象局气象探测中心搭建的一套预报误差对观测的敏感性分析系统(FSO),更新至v2.0版本,产品包括全国15公里分辨率逐12小时的预报误差对观测的敏感性分析。系统采用Singularity Docker容器技术对FSO软件进行了封装,以便于系统移植与管理。同时采用Python Airflow流程管理软件对整个业务作业进行可视化管理。该系统能实时监测观测系统、数值预报和同化系统,并为观测系统的调整、观测数据来源的评估提供依据。

_images/welcome.gif

服务器要求

PHP version 7.0.15 or newer is required, with the intl extension installed.

A database is required for most web application programming. Currently supported databases are:

  • MySQL (5.1+) via the MySQLi driver
  • PostgreSQL via the Postgre driver
  • Python3 external packages: pendulum

Not all of the drivers have been converted/rewritten for FSO. The list below shows the outstanding ones.

  • MySQL (5.1+) via the pdo driver
  • Oracle via the oci8 and pdo drivers
  • PostgreSQL via the pdo driver
  • MS SQL via the mssql, sqlsrv (version 2005 and above only) and pdo drivers
  • SQLite via the sqlite (version 2), sqlite3 (version 3) and pdo drivers
  • CUBRID via the cubrid and pdo drivers
  • Interbase/Firebird via the ibase and pdo drivers
  • ODBC via the odbc and pdo drivers (you should know that ODBC is actually an abstraction layer)

可信度

该FSO最初由 MMM/NCAR 开发。该框架是为实际业务运行而编写的,其中许多原始脚本、代码和子系统都来自于 WRF Data Assimilation System 的代码库中借鉴而来的。多年来,它一直由北京朗润知天科技有限公司和一群热情的科学家和研究人员开发和维护。

FSO简介

WRF FSO 简介

WRF(Weather Research And Forecast Model) FSO系统包括预报模式(WRF)及其伴随(WRFPLUS)、变分数据同化系统(WRFDA)和诊断、绘图工具(TOOLS)。该系统框架和流程如下:

_images/WRF-FSO.png

1.观测场与背景场进入WRFDA得到分析场,从分析场和背景场出发,分别进行相同时效的非线性前向预报。

2.计算两组预报场与真实场的预报误差。根据这两组预报误差的差异定义预报准确度F(通常为干总能量)。

3.计算预报准确度对预报场(分别来自背景场和分析场)的梯度,利用伴随模式WRFPLUS分别进行两次反向积分,得到预报误差对分析变量的敏感度。

4.预报误差对分析变量的敏感性结果作为输入场,进入WRFDA的伴随模式,计算预报误差对观测的敏感性,它涉及观测算子的伴随、观测误差协方差及Hessian矩阵的逆,在最小化过程中采取Lanczos迭代方法获得。

参考网页:

<http://www2.mmm.ucar.edu/wrf/users/wrfda/Tutorials/2012_July/docs/README_FSO_v3.3.pdf>

<http://www2.mmm.ucar.edu/wrf/users/wrfda/Tutorials/2014_July/docs/WRFDA_sensitivity.pdf>

依赖软件

安装

包括以下几个部分:

@startuml

Alice -> Bob: Authentication Request Bob –> Alice: Authentication Response

Alice -> Bob: Another authentication Request Alice <– Bob: another authentication Response

@enduml

Airflow安装

Airflow是一种用编程方式编写以安排和监控工作流程的平台。

安装
>export AIRFLOW_HOME=/指定路径/airflow #设置环境变量airflow主路径
>pip install airflow #安装

安装完成后

cd  $AIRFLOW_HOME
>vim airflow.cfg

主要修改以下参数

airflow_home = /指定路径/airflow   #airflow主路径
dags_folder = /指定路径/airflow/dags #dag python文件目录
executor = LocalExecutor #先使用local模式
base_log_folder = /指定路径/airflow/logs #主日志目录
sql_alchemy_conn = postgresql+psycopg2://airflow:fso2018@localhost #指定元数据存储方式,目前采用Postgresql

[webserver]
authenticate = True
filter_by_owner = true
base_url = http://localhost:8080
web_server_host = XXX.XXX.XXX.XXX  #web server 机器IP
base_url = http://XXX.XXX.XXX.XXX:8080  #web server 机器IP:PORT

初始化数据库

>airflow initdb
Airflow基本概念
DAG (Directed Acyclic Graph)

它展示的是任务的集合,并描述了任务之间的依赖关系,以及整个DAG的一些属性,如起止时间、执行周期、重试策略等等。通常一个.py文件就是一个DAG。也可以理解为这就是一个完整的shell脚本,只是它可以保证脚本中的命令有序执行。

task 任务

它就是DAG文件中的一个个Operator,描述了具体的操作步骤。

Operator 执行器

airflow定义了很多的 Operator,通常一个操作就是一个特定的Operator,比如调用shell命令要用BashOperator,调用python函数要用PythonOperator,发邮件要用EmailOperator,连SSH要用SSHOperator。社区还在不断地贡献新的 Operator。

ds 日期

前面的脚本里用到了{{ ds }}变量,每个DAG在执行时都会传入一个具体的时间(datetime对象),这个ds就会在 render 命令时被替换成对应的时间。

Important

这里要特别强调一下,对于周期任务,airflow传入的时间是上一个周期的时间(划重点),比如你的任务是每天执行,那么今天传入的是昨天的日期,如果是周任务,那传入的是上一周今天的值。

Macros

脚本里如果需要不同的时间格式或者不同的时间段怎么办,这时候就到Macro出场了,airflow本身提供了几种时间格式,比如ds_nodash,顾名思义就是不带短横-的时间格式,而且还会有一些相关的函数可以直接调用,比如ds_add可以对时间进行加减。

Singularity安装

实况分析系统采用Singularity容器技术进行封装,可以有效隔离依赖软件环境的搭建、环境变量的配置等细节。

安装

业务工作站推荐Linux操作系统,Ubuntu/centos发行版本,以centos为例:

#安装或更新依赖

sudo yum update && \
sudo yum groupinstall 'Development Tools' && \
sudo yum install libarchive-devel

#下载并安装最新版本

git clone https://github.com/singularityware/singularity.git
cd singularity
./autogen.sh
./configure --prefix=/usr/local --sysconfdir=/etc
make
sudo make install
导入镜像文件

工作站中应存在FSO Singularity镜像文件fso3.simg。

>ls -al fso3.simg

运行目录

FSO目录结构

/home/zwtd/FSO

├── china_FSO #FSO主目录

│ ├── be

│ ├── fc

│ ├── fsoplot

│ ├── ob

│ ├── plot

│ ├── rc

│ ├── run

├── china_static

├── china_working

├── scripts

脚本放置
cd /home/zwtd/FSO/china_FSO/be
> be.d01.dat
cd /home/zwtd/FSO/china_FSO/fsoplot
> data2pg.py
  drawfso.py
  drawlev.py
  drawmap.py
  drawvar.py
  drawvarlev.py
  sql.py
  timepath.py
  chn.ncl
  fso.ncl
  map.ncl
  var.ncl
  varmap.ncl
cd /home/zwtd/FSO/china_FSO/run
>wrapper_run_fso_v3.4.ksh\
cd /home/zwtd/FSO/china_static
> namelist.input
  namelist.wps
  namelist.obsproc
  geo_em.d01.nc
  Vtable.GFS
  Vtable.GFS_0p5
  QNWFA_QNIFA_Monthly_GFS
  obserr.txt
cd /home/zwtd/FSO/scripts
> fso_2pg.py
 fso_adj.py
 fso_check_ana.py
 fso_check_icbc.py
 fso_check_obs.py
 fso_da.py
 fso_err.py
 fso_forcing.py
 fso_impact.py
 fso_nl.py
 fso_plot.py
 china_common.py
 wrf_check_gfs.py
 wrf_obsproc.py
 wrf_prod.py
 wrf_real_ana.py
 wrf_real_icbc.py
 wrf_wps.py

FSO运行

教程

该教程包括以下几个部分:

数据准备

FSO系统所需数据有观测数据、初始数据和真实场数据。目前已有的观测数据为中国观测站点资料,初始场和真实场均来自0.25°× 0.25°全球系统预报和分析资料(GFS)。

GFS数据

至少需要每日UTC00时和UTC12时的GFS数据,且每个时刻至少存放该时刻分析场(*.f000)及其12、24、36、48、60(f012,f024,..,f060)时效的预报场。

GFS存放路径:/data1/raw/gfs/gfs.yyyymmddhh

 cd GFS_PATH

> gfs.2018080112  gfs.2018080200  gfs.2018080212 gfs.2018080300

 cd gfs.2018080112

> gfs.t00Z.pgrb2.0p25.f000   gfs.t00Z.pgrb2.0p25.f012  gfs.t00Z.pgrb2.0p25.f024
  gfs.t00Z.pgrb2.0p25.f036   gfs.t00Z.pgrb2.0p25.f048  gfs.t00Z.pgrb2.0p25.f060
观测数据

目前已有的观测资料包括:

_images/obs.png
1.观测资料获取

观测资料都采用crontab定时获取。

1.1 地面观测资料

> */15 * * * * bash -c "python3.6 get-metar.py --root-dir /home/data/raw/cimiss --time $(date -u +\%Y\%m\%d\%H\%M --date '-30 minute')" 1> /dev/null

资料以xml文件存储,每15分钟一个文件:

> cd SURF_CHN_MAIN_MIN

> 201810282030.xml  201810282045.xml 201810282100.xml
  201810282115.xml  201810282130.xml 201810282145.xml
  ......

1.2 探空资料

> 20 8,20 * * * bash -c "python3.6 get-sounding.py --root-dir /home/data/raw/cimiss --time $(date -u +\%Y\%m\%d\%H\%M --date '-20 minute')" 1> /dev/null

探空资料以xml文件存储,每12小时一个文件:

> cd UPAR_CHN_MUL_FTM

> 201810281200.xml  201810290000.xml 201810291200.xml
  201810300000.xml  201810301200.xml 201810310000.xml
  ......

1.3 风廓线雷达资料

> */15 * * * * bash -c "source python3.6 get-profiler.py --root-dir /home/data/raw/profiler --date $(date -u +\%Y\%m\%d\%H\%M --date '-30 minute')" 1> /dev/null

风廓线资料以txt文件存储,使用的半小时平均风廓线数据,每30分钟一个文件:

> cd profiler/20181028

> Z_RADA_59981_WPRD_MOC_NWQC_HOBS_LC_QI_20181028110000.TXT
  Z_RADA_59981_WPRD_MOC_NWQC_HOBS_LC_QI_20181028113000.TXT
  ......
2.资料转LITTLE_R格式

观测数据需存储为WRFDA可识别的little_r格式ob.ascii或prebufr格式ob.bufr。

> 0 12,00 * * * bash -c "python3.6 /home/data/raw/little_r/convert_cimiss_2_littler.py"

观测数据存放路径:/data1/input/little_r/yyyymmddhh

cd OBDATA_PATH

> 2018080112 2018082000 2018080212 2018080300

cd 2018080112

> ob.ascii

DAG加载

DAG加载
cd $AIRFLOW_HOME/dags

将DAG python脚本(fso-prod-v2.0.py,wrf-prod-v2.0.py)放入该目录下

ls -all

> fso-prod-v2.0.py   wrf-prod-v2.0.py
DAG基本构架

以wrf-prod-v2.0.py为例,DAG基本框架为:

vim wrf-prod-v2.0.py

>default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2018,8,01),  #任务开始执行的日期#
'end_date': datetime(2030, 12, 31),  #任务开始终止的日期#
 }
> dag = DAG(
'wrf-prod-v2.0', #dag_id
default_args=default_args,
user_defined_macros={ 'npe': 12 },  #运行该DAG所占节点数
schedule_interval='00 06,18 * * *') #任务启动时间:每天北京时间06时,18时
> check_gfs_command ="""
  ulimit -s unlimited  \
  && cd /home/FSO \    #FSO主目录
  && SINGULARITYENV_CURR_DATE={{ ts_nodash }} \
  singularity exec -e -B china_FSO:/FSO3.4 -B china_working:/gjx_working -B china_static:/gjx_static -B /data1/raw/gfs:/gfs fso3.simg ./scripts/wrf_check_gfs.py""" # 将主机路径与容器路径绑定,冒号前是主机目录路径,冒号后面是容器目录路径;运行wrf_check_gfs.py

Airflow启动

启动

Airflow后台运行程序包括

>airflow webserver  #启动调度器

>airflow scheduler #启动后端网页

调度器(Scheduler),负责在指定时间运行作业。

管理页面后端服务器(Webserver),负责向前端(浏览器)提供HTML服务。

Airflow基础命令

airflow的所有执行操作都需要在命令行下完成,界面只能看任务的依赖,包括任务执行状态,但如果任务失败了,还是要在命令行下执行。 airflow的命令总的来说很符合直觉,常用的有如下几个:

  • test: 用于测试特定的某个task,不需要依赖满足
  • run: 用于执行特定的某个task,需要依赖满足
  • backfill: 执行某个DAG,会自动解析依赖关系,按依赖顺序执行
  • unpause: 将一个DAG启动为例行任务,默认是关的,所以编写完DAG文件后一定要执行这和要命令,相反命令为pause
  • scheduler: 这是整个 airflow 的调度程序,一般是在后台启动
  • clear: 清除一些任务的状态,这样会让scheduler来执行重跑

从上面的命令顺序也可以看出,通常的执行顺序是这样:编写完DAG文件,直接用backfill命令测试整个DAG是否有问题,如果单个任务出错,查看log解决错误,这时可以用test来单独执行,如果有依赖关系就用run执行,问题解决后就用unpause打开周期执行, scheduler 是在后台默认打开的。之后运行过程中发现需要重跑则用clear命令。

举例
>airflow test dag_id task_id execution_date

用于测试该dag_id中的task_id这一任务,并给定测试时间 例如:

>airflow test fso-prod-00Z-v2.0 2-3-adj-backward 2018-08-16T08:00:00
>airflow backfill dag_id -s start_date -e end_date

用于反算和补充某个时刻或某段时间的dag流程,注意的是start_date和end_date之间必须要相差一天,例如:

>airflow backfill fso-prod-00Z-v2.0 -s 2018-08-16 -e 2018-08-17

FSO运行流程

FSO由两个DAG共同完成:wrf-prod-v2.0与fso-prod-v2.0。

wrf-prod-v2.0:为fso-prod-v2.0准备初始场、真实场及观测数据,由wrf-prod-v2.0.py脚本控制。

fso-prod-v2.0:执行FSO、结果输出及绘图,由fso-prod-v2.0.py脚本控制。

二者关系
_images/FSO-workflow.png
wrf-prod-v2.0

每天运行2次,分别准备UTC00时和UTC12时的背景场及观测数据。每一步骤对应一个外部python脚本。

  • wrf_check-gfs

检测运行时刻GFS资料是否到位(gfs.*.f012,gfs.*.f024,…,gfs.*.f060)

  • wrf_obsproc

检测观测资料是否已到位;进行观测资料前处理,得到WRFDA可以读取的观测文件ob.ascii,存放在/china_FSO/ob/路径下。

  • wps-prod

运行wps,解码数据,提供地形等。

  • real-ana-prod

由该时刻GFS分析场(gfs.*.f000)得到wrfinput_d01.ana,用作计算预报误差的真实场,存放在/china_FSO/rc/路径下。

  • real-icbc-prod

将GFS-36小时预报场(gfs.*.f036)用作同化系统的背景场wrfinput_d01,存放于/china_FSO/rc/。

  • wrf-prod

以real-icbc-prod得到的wrfinput_d01作为初始场,向前预报24小时,长时间的计算结果可用于统计背景误差协方差等

fso-prod-v2.0
  • check-obs, check-icbc, check-ana

检查观测ob.ascii、同化背景场wrfinput_d01、真实场wrfinput_d01.ana是否生成。

  • 1-data-assimialtion

三维变分同化,得到分析场wrfvar_output,保存为/china_FSO/fc/wrfinput_d01。

  • 2-1-nl-forecast

分别从Xa,Xb开始进行非线性积分12小时得到预报场Xfa,Xfb

  • 2-2-comp-forcing

计算预报误差以及预报误差对预报变量的梯度

  • 2-3-adj-backward

将预报误差对预报变量的梯度作为伴随模式的初值,反向积分得到预报误差对Xa、Xb的梯度。

  • 3-fcst-err

根据两次伴随结果,计算预报误差对分析变量的敏感性。

  • 4-fso-impact

把预报误差对分析变量的敏感性作为输入,利用WRFDA伴随求得预报误差对观测的敏感性。

  • 5-fso-plot

采用数据库方式存储和分类统计观测贡献率,并用于绘图。

FSO系统网页监控

采用基于Python语言的Airflow流程管理软件,对实时运行的FSO作业进行管理。针对每个作业编写DAG(定向非循环图)配置脚本,设置各个任务以及任务间的执行依赖关系。通过在运行机器上访问10.36.4.44:8080/admin链接可以查看当前运行的作业列表。其中DAG列显示的是作业名称,如fso-prod-00Z-v2.0,点击可以进入作业详情页面;Schedule列显示的是作业运行时间,如``00 06 * * *``表示每天06时的00分启动作业运行,Recent Tasks列显示作业运行状态,以不同颜色表示不同运行状态,如深绿色表示已经完成的作业数,浅绿色是正在运行的任务数,灰色是等待执行的任务数,红色表示出错的任务数,通过点击相应颜色的按钮可以进入查看任务;Last Run列可以查看最近运行时间;Links列提供一些快捷的操作按钮。

_images/dags.png

FSO系统作业管理页面

在上一页面中通过点击DAG列中的某一作业名称,可以进入该作业的详细信息查看页面。默认显示Tree View,左侧是展开的子任务,右侧每列小方块是不同时间运行的状态,可以看到最近运行的任务,深绿色表示作业正常结束,浅绿色表示正在运行,红色表示出错,黄色表示遇到问题准备重试,灰色表示在队列中。

_images/treeview.png

作业流程的树状结构图

点击上图中的Graph View视图,可以显示作业中各个任务间的依赖关系图,可以清晰地看出任务流程,其中任务框的颜色同前表明任务的运行状态。通过点击某一任务框,显示进一步的操作选项对话框,如点击View Log按钮可以查看该任务的运行日志。当出现错误时可以查看错误原因,主要的错误是数据未就位。

_images/graphview.png

作业流程依赖关系图

_images/taskdetails.png

任务监控界面

_images/tasklog.png

任务运行日志

FSO结果后处理

gts_omb_oma_01

FSO系统计算得到的预报误差对观测敏感性结果位于/home/zwtd/FSO/china_FSO/run/ccyymmddhh/obsimpact/gts_omb_oma_01文件中。以下图为例对当前gts_omb_oma_01数据结构作简要说明。

>vim gts_omb_oma_01
_images/gts_omb_oma.png
metar
metar  站点个数  # 2个

第一个站点提供的数据个数  #  1 地面自动站仅探测地面层数据,所以每个时刻都每个站点只有一个数据

数据序号 类型标识 纬度 经度 气压 观测变量u的观测值 u新息增量(O-B) 质控码(qc) u观测误差 u的贡献率 观测变量v的观测值 v新息增量(O-B) 质控码(qc) v观测误差 v的贡献率 观测变量t的观测值 t新息增量(O-B) 质控码(qc) t观测误差 t的贡献率 观测变量p的观测值 p新息增量(O-B) 质控码(qc) p观测误差 p的贡献率 观测变量q的观测值 q新息增量(O-B) 质控码(qc) q观测误差 q的贡献率  \# 一个站点的一个高度层数据为一行

1     1SURF_   22.47   111.36  -888888.0000000       -1.0840874        0.0000000     -88        1.1000000        0.0000000        0.1864257        0.0000000     -88        1.1000000        0.0000000      299.2500000        0.0000000     -88        2.0000000        0.0000000  -888888.0000000        0.0000000     -88      100.0000000        0.0000000  -888888.0000000        0.0000000     -88  -888888.0000000        0.0000000

第二个站点提供的数据个数  # 1

....

注:synop、ships 、buoy 、surface(包括metar) 、sonde_sfc、tamdar_sfc 数据格式相同

sound
sound 站点个数  # 1个

第一个站点提供的数据个数  #5个 探测到5个不同高度层上的数据

站点序号 同一站点数据序号 类型标识 纬度 经度 u的观测值  u的贡献率 质控码(qc)  u观测误差  分析增量   v的观测值  v的贡献率 质控码(qc) v观测误差 分析增量  t的观测值  t的贡献率  质控码(qc)  t观测误差 分析增量  q的观测值  q的贡献率 质控码(qc) q观测误差 分析增量   # 一个站点的一个高度层数据为一行 探空数据观测变量为u、v、t、q

 1       1  UPA    36.73   101.75    77100.0000000       -1.6704050        0.0000000     -88        1.2200000        0.0000000       -1.0998851        0.0000000     -88        1.2200000        0.0000000      287.3500000        0.0000000     -88        1.0000000        0.0000000        0.0071498        0.0000000     -88        0.0018132        0.0000000

注:sound、tamdar、airep数据格式相同

profiler
profiler 站点个数  # 1个

第一个站点提供的数据个数  #2个 探测到2个不同高度层上的数据

站点序号 同一站点数据序号 类型标识 纬度 经度 u的观测值  u的贡献率 质控码(qc)  u观测误差  分析增量   v的观测值  v的贡献率 质控码(qc) v观测误差 分析增量   \#风廓线探测仅有u、v两种观测变量

1       1  WND    20.00   110.15     1415.0000000       -9.0069802     -708.2427394       0        2.2000000       -6.3706098       10.1899120    -1873.6202283       0        2.2000000        9.7260098

Note:pilot、profiler、geoamv、qscat、polaramv数据格式一致

数据库

为了便于FSO运行结果的统计与绘图,采用pythonPostgreSQL数据库的方式对数据进行存储与管理.可参考 /home/zwtd/FSO/fso_2pg.py和/home/zwtd/FSO/china_FSO/fsoplot/data2pg.ncl脚本。

数据库连接

前台查看

>psql -U fso -d fso

>\dt    #列举所有数据表

>\d tb_sound #列举tb_sound数据表结构

>select * from tb_sound; #查看tb_sound数据表的具体内容,注意“;”不能少

>drop table tb_sound;  #删除数据表,注意“;”不能少
_images/tb.png

从其他电脑登录数据库

psql -U fso -d fso -h 10.36.4.44 -p 5432 -w

后台连接

#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database="fso",user="fso",password="fSO@2018",host="10.36.4.44",port="5432")
数据表说明
tb_*

* 代表观测类型,如tb_surface。tb_surface中每条数据依次存放:

id time(时间) stnid(类型标识) lon(经度) 纬度(lat)

_images/tb_surface.png
tb_*data

* 代表观测类型,如tb_surfacedata。tb_surfacedata存放gts_omb_oma_01中各点具体数据,tb_*data与tb_*的id一致。每条数据依次存放:

id var(观测变量) lev(高度层) pres(气压) obs(观测值) inv(新息增量) qc(质控码) error(观测误差) inv(贡献率)

_images/tb_surfacedata.png
绘图产品

有了数据库对结果的管理,可直接读取数据库数据进行结果的统计,并传递到NCL绘图脚本中进行绘图。可参考/china_FSO/fsoplot/drawfso.py/等脚本。 绘图产品最终存放于/china_FSO/run/ccyymmddhh/fsoplot/目录中。

Note

负值代表该观测减小预报误差;正值代表该观测增加预报误差

_images/map_sound_all.png

探空观测对12小时预报误差的贡献

_images/map_surface_all.png

地面观测对12小时预报误差的贡献

_images/fso_all.png

观测类型对12小时预报误差的贡献

_images/var_all.png

变量类型对12小时预报误差的贡献

_images/lev_all.png

不同层次观测对12小时预报误差的贡献

_images/var_sound.png

探空观测的不同观测变量对12小时预报误差的贡献

_images/var_surface.png

地面观测的不同观测变量对12小时预报误差的贡献

故障处理

常见故障处理

当遇到问题时,首先检查任务的log,通过点击出错任务(tree view下的红色块)。以下是可能出现的问题:

观测数据与模式背景场数据的实时获取

地面台站数据取自CIMISS中的SURF_CHN_MAIN_MIN,目前从FTP上获取。如果发现任务出现错误,如下图所示的是地面观测数据未就位,需要检查数据源。

图1:作业出现问题,如上图中的红色块,其余黄色块是由于红色块的失败而无法进行。 如果要重新运行某个任务,可以点击对应的色块,然后选择Clean按钮即可。

图2:通过点击红色块,然后点击弹框中的View Log按钮,查看日志以判断具体错误。

磁盘空间不足问题

Airflow业务流程中已经添加了clean-data任务,会定期清理中间历史数据,如GFS背景场、CIMISS地面台站观测、分析中间文件等,留存的文件是转换后的NetCDF数据。目前一个时次是33MB大小,一天24⨉4=96次,共3.2GB左右,工作站磁盘空间为7.3TB,刨除其它文件占用,可以存放约5年的数据。如果考虑后续三维分析,可以存放越1至2个月的产品数据。