背景
前面已经提到云计算平台pangeo,很多人了解GEE、航天宏图PIE、AWS(亚马逊)、谷歌云地球科学服务等,但pangeo云还是第一听说。小编查阅网络发现,中文资料为零,说明中国的用户确实较少。然而,pangeo云在美欧已发展多年,相关分析工具和云计算已经较为成熟,在地球科学领域,特别是物理海洋领域已经取得很多研究成果。因为这是不错的小众云计算平台,所以特此介绍。今天先聊pangeo入门。
pangeo是由一群草根科学家自发组织的地学大数据云计算系统,它在2016年由美国哥伦比亚大学Ryan Abernathey 领导的一个物理海洋小组发起,最初是希望更好处理海洋科学大数据,例如MITgcm高分辨模式LLC4320的PB级别数据。通过数年时间,大批参与者通过github平台发展了一系列的大数据和云计算分析软件,搭建了pangeo云计算基础设施,形成了良好的科学生态系统(如JupyterHub、dask、xarray、intake、Zarr等)。这几年,pangeo云计算已在一定程度上改变了地球科学的研究方式,它提高了科学生产力,使研究结果可重复,也为数据密集型问题的研究打开新大门。
pangeo得到了美国NSF EarthCube计划、Anaconda、NASA、NCAR以及一些私人基金会的强力资助,使之能够持续发展。目前pangeo为全世界用户免费提供云计算服务(最大16CPU,60G内存)。
云计算和传统科研模式的区别
我们先欣赏下传统的数据下载模式,以著名的欧洲Climate Data Store (CDS) 分发ECMWF ERA5资料为例,视频是CDS数据中心的机器人插卡作业模式,如果你申请这里的数据,机器人的机械手臂会把磁带接口插入相关卡槽读取数据,完成后再提供下载服务:
云计算离不开云数据。pangeo将大量数据存储于商业云平台,并购买数据中心附近的计算机算力资源,由这些算力来计算靠近它的云数据,因此数据读相当快。而云计算的计算能力则和费用相关。由于pangeo为免费服务,因此算力不能和超算媲美,但通过结合dask集群,计算能力足够强大。
Pangeo云架构:
注册使用
因为是云计算,需要注册一个账号。
Pangeo Cloud目前包含两个不同的计算集群:
- us-central1-b.gcp.pangeo.io 谷歌云平台。
- aws-uswest2.pangeo.io AWS集群。
建议根据您要访问的数据选择集群。例如,如果您的数据主要存在于AWS中,请选择aws-uswest2。经Pangeo管理员审查同意之后,加入Pangeo的Github小组,便可以使用Pangeo云。(需要有一个Github账号,并对Git有一定的了解)
Pangeo Cloud集群为用户提供不同数量的RAM和CPU,可以在登录时进行设置。请为根据工作需要选择资源最少的设施,因为更大的内存和cpu会花费更多的钱。 是的,云计算本质上是收费服务,这部分钱由美国NSF等基金支付了。
云数据初探
几十年来,地球科学领域一直采用“下载模式”分析数据,即科学家从远程FTP服务器下载数据到个人电脑。而Pangeo的理念是将计算带到云数据中,这也就是云计算。Pangeo提供靠近高性能存储的高性能计算集群,目前许多广泛使用的数据集已经存储在这些云上。
如果对分析特定的大型数据集感兴趣,应该首先确定此数据集是否已存储在现有的云端,然后,可以请求访问该特定云数据以执行计算分析。或者,如果您的实验室或小组已经维护了一个数据存储库,也可以考虑在本地计算资源上部署Pangeo环境数据服务器(可能比较费力)。
使用云数据和云计算无需掌握很多特殊知识,但需要能够熟练使用一下基础工具:
- Jupyter Hub
- Python
- Xarray
当前,许多预存数据集目录都位于catalog.pangeo.io。此目录已预先配置,包含海洋、大气、气候和水文等不同类型数据。在大多数情况下,调取云数据很简单:
1 | from intake import open_catalog |
[‘ocean’, ‘atmosphere’, ‘climate’, ‘hydro’]
这些数据集合中包含了CESM全球气候模式、NCAR数据集、CCMP、极地数据、Landsat8数据、CMIP6、卫星测高沿轨和网格数据、MOM6/CESM、MITgcm ECCOv4、LLC4320、ESIP等资料。
此外,还可以利用fsspec
打开目录之外的数据,例如,要从Google Cloud Storage打开公共文件cmpi6,您可以执行以下操作:
1 | import pandas as pd |
物理海洋数据集
物理海洋数据集是pangeo的重点,通过命令open_catalog
可以很方便的打开它,该数据集合包含了多种常见的数据,比如卫星高度计的沿轨和网格数据、多种高分模式数据等,还有前面提到的MITgcm LLC4320模式数据。LLC4320数据由于存储巨大,它几乎只能在超级计算机或者Pangeo云端使用。
1 | cat = open_catalog("https://raw.githubusercontent.com/pangeo-data/pangeo-datastore/master/intake-catalogs/ocean.yaml") |
[‘sea_surface_height’,
‘cesm_mom6_example’,
‘ECCOv4r3’,
‘SOSE’,
‘GODAS’,
‘ECCO_layers’,
‘altimetry’,
‘LLC4320’,
‘GFDL_CM2_6’,
‘CESM_POP’,
‘channel’,
‘MEOM_NEMO’]
我们先用简单的SSH数据为例,介绍怎么读取、制图、计算和保存。
读取命令为to_dask()
,这一步为lazy计算,并未真的计算:
1 | ds = cat["sea_surface_height"].to_dask() |
SSH数据中包含了sla、adt、流速等信息。
看一下sla的数据结构和大小,超过68G:
这时候数据已经是常见的xarray格式,通过isel
选择一个时间:
1 | ds.sla.isel(time=0) |
使用xarray的.plot()
函数进行绘图,这时候数据才真正的调入内存:
1 | ds.sla.isel(time=0).plot(figsize=(15, 7)) |
1 | ds.sla.sel(time="1993-01-07",latitude=slice(-60,-20),longitude=slice(0,50)).plot() |
使用xarray的to_netcdf()
保存nc数据格式到本地。通常我们只保存数据计算结果,原始数据和中间数据的保存没有太大意义。
1 | ds.sel(time="1993-01-07",latitude=slice(-60,-20),longitude=slice(0,50)).to_netcdf("ssh.nc") |
大数据并行计算
上面仅展示单独数据文件的读取、绘图和保存,数据体积小,无需大数据的相关并行运算。如果数据量较大,比如使用全部的sla数据计算全球海平面变化,则一共需要读取68G的数据,这时候可能需要集群的并行计算配置。pangeo通过融合dask可以实现集群计算。
Dask 是 Pangeo Cloud 的重要组件,可用于并行化的大型计算。pangeo用户无需太多并行计算知识即可使用它,但由于Dask能够使用许多云计算节点,大型、长时间运行、空闲的集群将会浪费Pangeo有限的云计算资金。因此请谨慎使用此力量!
要使用Dask进行可扩展计算,您需要使用Dask Gateway创建一个集群并连接到它
1 | from dask_gateway import GatewayCluster |
完成计算后,您可以显式关闭集群
1 | cluster.close() |
海平面变化时间序列
计算全球海平面变化并不复杂,主要是均值的计算。首先沿着经纬度计算均值,并载入内存:
1 | sla_timeseries = ds.sla.mean(dim=('latitude', 'longitude')).load() |
该集群计算启动了5个worker,10个线程,大约1分半处理完数据,计算得到全球的平均海平面变化时间序列:
绘图:
1 | sla_timeseries.plot(label='full data') |
本质上,SSH数据并不算大数据,只是比较大。这里仅展示其工作流程。
纬向变化时间特征
还可以计算纬向SLA变化,即在经度方向计算均值,耗时大约2分钟:
1 | sla_hov = ds.sla.mean(dim='longitude').load() |
我们可以看到海平面变化的纬向特征:
空间变化特征
可以通过STD来计算全球海平面变化的空间特征:
1 | sla_std = ds.sla.std(dim='time').load() |
在流场较强的海域,variability是比较大的,比如西边界流、南极绕极流等:
KE计算
接下来,以南大洋绕极流为例,计算KE的长时间平均,这里的计算稍微加强一点,但也不复杂:
1 | ds_SO = ds.sel(latitude=slice(-90, -30)) |
绘图:
1 | plt.figure(figsize=(16,5)) |
1 | plt.figure(figsize=(16,5)) |
小结
通过注册,得到一个有效的云计算账户,然后初次尝试pangeo计算全球海平面变化,以及局部海域的动量特征,我们可以总结它的特色为:
- 降低大数据编程的精力投入,增强宏观科学问题的思考
- 降低集群分析门槛,无需专门的并行计算和云计算知识
- 无需数据下载,按需调取海量云数据集
- 开源支持,生态系统完备可持续
目前,GEE等云计算和大数据平台已经较为普及,但GEE等平台专注于图像遥感,无法接入物理海洋、大气科学等数据(模式和观测等)。pangeo云计算则在一定程度填补了这些空白,它发源于草根群体,在美国一步步发展壮大,获得NSF等机构数百万美元的资助,得到了美国政府和科学界的认可,小编认为这必然是未来海洋、大气科学的重点发展方向之一。国内在该领域暂时是空白的(大部分人无法访问pangeo和谷歌云服务),未来几年国内将可预见的在海洋、大气云计算领域快速增长。
下节预告
- 基于云计算的LLC4320海洋模式数据谱分析