11、利用云计算实现沙尘暴预测

利用云计算实现沙尘暴预测

1. 沙尘暴建模:背景与挑战

1.1 背景

沙尘暴是由强湍流风系将沙尘颗粒卷入空中,使能见度从数英里降至数米的现象。在过去几十年里,全球气候变化导致沙尘暴的频率和强度上升,对环境、人类健康和物质资产造成了负面影响。例如,严重的沙尘暴每年会多次影响美国西南部,引发重大交通事故、财产损失、人员受伤甚至死亡。

沙尘暴的负面影响促使科学家们开发模型,以更好地理解和预测沙尘排放、沉积和结构的分布与强度。自20世纪80年代末以来,一些研究小组已经开发出能够正确预测沙尘浓度、排放和沉积的时空模式、演变及量级的沙尘模型。除了用于天气和气候预测外,沙尘暴建模和预测在实际中还有以下用途:
- 为从公众到工业界的各方提供空气质量的重要信息。
- 协助公共卫生服务部门改进疾病监测和早期检测工作。
- 提高航空和公路安全以及事故应急管理能力。
- 作为预警和评估系统,为适应性行动提供指导,如调整规划时间、加强基础设施建设以及建造防风林和防护林带。

1.2 挑战

利用现有的沙尘模型对大地理区域进行高分辨率的沙尘暴预测面临着几个关键挑战:
- 计算复杂度高 :沙尘暴现象的模拟复杂且计算密集。周期性现象的模拟需要多次重复相同的数值计算。以非静力中尺度模型(NMM) - 沙尘模型为例,每次迭代包含21个模块计算。对于给定的区域大小,大气模型的计算复杂度是网格维度的函数,其中网格维度包括一个时间维度、两个水平维度和一个垂直维度。如果延长时间维度,需要更多的迭代。水平方向地理区域翻倍会导致计算成本增加四倍;空间分辨率翻倍(例如从10公里降至5公里)会导致计算成本增加八倍,因为为了保持模型精度,还需要将时间步长翻倍。高性能计算被用于对大地理区域进行高分辨率的沙尘暴模拟。NMM - 沙尘模型通过将区域分解为多个子区域,并将每个子区域的计算负载分配到一个CPU核心作为一个进程来实现并行化,以利用高性能计算。处理子区域的核心必须与相邻核心进行通信以实现同步。
- 时间要求严格 :沙尘暴预测是一项时间紧迫的任务,需要在有限的时间内完成。例如,为了使预测结果有用,一天的预测建议在两小时内完成计算。通常会进行有限地理区域和/或分辨率的预测,以在时间限制内完成模拟。然而,沙尘暴预测需要邮政编码级别的分辨率,以支持政府机构的应急决策,如为公共卫生准备药物。
- 事件的不连续性 :沙尘暴是具有破坏性的事件。据估计,一年中沙尘暴的总时间通常少于90小时,假设每次沙尘暴平均持续两小时,那么沙尘暴时间仅占一年的不到1%。因此,针对此类事件的预测系统在一年中的不同时间,甚至一天中的不同时段,会有不同的计算和访问需求。

为了应对这些挑战,可以利用云计算。云服务能够通过弹性和按需的计算资源来处理突发和不连续的计算需求。此外,随着云计算技术(如虚拟化)的发展和云基础设施的普遍进步,云服务已经能够支持计算密集型应用。例如,亚马逊EC2提供具有10 Gbps网络连接的集群实例。每个集群实例至少有23 GB的RAM和两个时钟速度为2.93 GHz的四核处理器。这样的硬件和网络配置远远优于具有异构计算资源和广域网(WAN)连接的网格计算环境,甚至优于大多数私有同构高性能计算集群配置。这使得云计算成为解决计算密集型科学问题的新的有利计算范式。

2. 部署与优化

2.1 一般工作流程

将沙尘暴模型部署到亚马逊EC2的一般步骤如下:
1. 授权网络访问 :打开端口22,以通过安全外壳(SSH)实现本地服务器与EC2实例之间的通信。
2. 启动实例 :启动一个实例作为沙尘暴模拟任务的头节点。选择一个具有八个CPU核心和23 GB内存的集群实例。
3. SSH连接到实例 :使用SSH工具访问在步骤2中创建的实例。
4. 安装软件依赖项 :沙尘暴模型的执行需要在头节点和计算节点上预先安装网络文件系统(NFS)和MPICH2。NFS使所有其他计算实例能够共享软件包和模型数据。通过使用NFS,只需在头节点上设置模型,其他计算实例可以共享该环境,而无需安装和配置模型运行环境。MPICH2是消息传递接口(MPI)最流行的实现之一。以下是在以CentOS 5.6为操作系统的亚马逊EC2实例中安装NFS和MPICH2的命令行示例:

[root@domU-head~] yum install gcc gcc-c++ autoconf automake
[root@domU-head~] yum –y install nfs-utilsnfs-utils-lib sytem-config-nfs #install NFS
[root@domU-head~] tar –zvxf mpich2–1.5.tar.gz download MPICH2 package and unzip
[root@domU-head~] mkdir /home/clouduser/mpich2-install # create an installation directory
[root@domU-head~] cd mpich2–1.5.tar.gz
[root@domU-head~] ./configure -prefix=/home/clouduser/mpich2–install
[root@domU-head~] make # Build MPICH2
[root@domU-head~] make install # Install MPICH2

安装NFS后,可以使用以下命令配置和启动NFS:

[root@domU-head ~] mkidr /headMnt # create a NFS export directory
[root@domU-head ~] echo "/headMnt *(rw) " >> /etc/exports
[root@domU-head ~] exportfs -ra
[root@domU-head ~] service nfs start #start up NFS
  1. 创建AMI和计算节点 :基于步骤4中配置的实例构建一个AMI,并使用这个新的AMI启动一个实例作为计算节点。
  2. 配置头节点和计算节点 :此步骤建立头节点和计算节点之间的网络通信。首先,使用SSH访问头节点,将计算节点的IP添加到主机列表中。然后在头节点创建一个公钥。最后,使用SSH访问每个计算节点,并将头节点的公钥复制到授权密钥列表中。
[root@domU-headMnt ~] vi /etc/hosts #access to the hosts list of the head node
[root@domU-headMnt ~] ssh-keygen -t rsa #create a public key at the head node
[root@domU-computing~] mkdir –p /root/.ssh/
[root@domU-computing ~] scp root@domU-head: /root/.ssh/id_ras.pub /root/.ssh/ #copy the public key from the head node to the computing node
[root@domU-computing ~] cat /root/.ssh/id_ras.pub >> /root/.ssh/authorized_keys
  1. 创建EBS卷并附加到头节点 :创建一个新的EBS卷并将其附加到运行中的实例。
  2. 将卷挂载到NFS导出目录 :将卷挂载到实例。
  3. 将模型部署到NFS导出目录 :将沙尘暴模型传输到NFS导出目录,在本例中为/headMnt。
  4. 将NFS目录导出到计算节点 :此步骤建立头节点和计算节点之间的NFS连接,使计算节点能够共享头节点的软件包套件。使用SSH访问计算节点,并将卷挂载到NFS目录。以下是将计算节点卷挂载到NFS目录的示例命令:
[root@domU-computing ~] mkdir //headMnt # create the directory
[root@domU-computing ~] mount -t nfs -o rw domU-head:/headMnt //headMnt #Mount the volume to the NFS export directory
  1. 配置和测试模型 :创建一个包含可以运行MPI任务的IP或域名列表的主机文件(例如mpd.hosts),并将每个计算节点的私有IP添加到该文件中。在头节点上启动MPI连接。以下是启动MPICH2服务的命令示例:
[root@domU-head~] mpdboot -n 3 -f mpd.hosts –v # start up MPICH2
[root@domU-xxx~] ./run_test.sh >& out.log & # Run the model
  1. 从运行中的实例创建AMI :最后,分别基于运行中的头节点和计算节点创建两个新的AMI。

2.2 特殊考虑事项

除了一般的部署步骤外,对于具有高计算能力要求的沙尘暴模型,还有一些独特的配置:
- 配置虚拟集群环境 :为了使用云服务支持沙尘暴预测,应设置虚拟集群环境。使用MPICH2作为中间件来调度模型运行任务并收集结果。为了节省配置计算节点的时间,可以基于步骤5中的头节点构建一个镜像来启动计算节点。此外,如果所有实例都在同一个数据中心内且物理上相邻的机器上启动,通信开销可以大大降低。因此,云用户应该创建一个放置组,并将多个集群实例启动到该放置组中。可以使用以下命令行创建放置组并将实例放置在同一组中:

PROMPT>ec2-create-placement-group VirtualCluster -s cluster
PROMPT>ec2-run-instances ami-xxx -n 2 --placement-group VirtualCluster
  • 松散耦合嵌套建模与云计算 :在松散耦合嵌套模型测试中,一个大的区域被划分为多个小区域,这些小区域由粗粒度模型ETA - 8bin识别。需要大量的计算资源来并发运行这些18个感兴趣区域(AOI),每个区域都需要高分辨率的预测。弹性亚马逊EC2集群实例被用于充分实现嵌套建模方法。
  • 自动扩展 :由于这不是一个Web应用程序,通过CloudFormation触发自动扩展资源的方法不适用。云用户需要编写使用EC2 API的脚本来在需要时启动更多实例以处理计算任务。

2.3 与一般部署步骤的差异总结

与一般的部署步骤相比,将沙尘暴模型部署到云服务的整个过程具有以下特点:
- 处理计算强度 :这个沙尘暴模型需要利用多个虚拟实例并发运行模拟。因此,应该设置一个虚拟集群环境,并在头节点和计算节点上正确安装和配置中间件MPICH2。
- 处理通信强度 :应该创建一个放置组,并将虚拟集群的所有实例放在同一组中,以减少通信开销。

3. 演示

3.1 凤凰城沙尘暴事件

美国亚利桑那州是一些壮观沙尘暴的发生地。危险的沙尘暴每年会多次影响该州,造成大量经济损失。其中最大的沙尘暴被称为哈布沙暴,在亚利桑那州中部沙漠的夏季最为常见,发生频率在7月下旬和8月初达到高峰。亚利桑那州凤凰城平均每年在6月至9月期间会经历约三次哈布沙暴。以2007年7月1日席卷凤凰城地区的一场典型哈布沙暴为例,展示了沙尘暴模型如何模拟沙尘暴事件以及云计算如何帮助进行此类模拟。

3.2 模拟结果

图展示了2007年7月2日凌晨3点,由ETA - 8bin(低分辨率模型)和不同空间分辨率的NMM - 沙尘模型产生的时间框架结果。模型结果显示,沙尘暴区域的模式相似,而3公里分辨率的NMM - 沙尘模型结果获取了更多关于沙尘浓度的详细信息。

3.3 性能

使用弹性亚马逊EC2集群实例充分实现了松散耦合嵌套方法。在松散耦合嵌套方法中,ETA - 8bin以低分辨率(22公里)进行快速预测,以识别潜在的高沙尘浓度热点。NMM - 沙尘模型将对这些小得多的热点进行高分辨率(3公里)的并行预测,以减少计算需求和计算时间。

在这个案例中,粗粒度模型ETA - 8bin识别出了18个AOI。大多数AOI分布在2×2度的范围内。因此,从通过步骤配置的AMI中启动了18个集群实例,每个实例负责处理一个AOI的模拟。

结果显示,大多数AOI可以在一小时内成功完成24小时的预测。然而,有两个AOI无法在两小时内成功完成。因此,需要整合更多的计算资源和优化措施,以实现24小时模拟在两小时内完成的时间限制。通过使用两个和三个集群实例对这两个子区域的可计算性进行进一步测试。结果表明,即使使用三个集群实例,系统也无法达到0.25小时的时间限制。因此,应该通过更好的并行化和调度策略(包括邻域映射和时空优化策略)对这两个实例进行优化。优化后的两个实例在使用超过64个进程时,可以在0.25小时内成功完成预测。最终,当这两个实例启动64个进程时,可以在两小时内成功完成这两个AOI的预测。

3.4 成本效益

对于一个运行中的沙尘暴预测系统,通常会预留一个EC2实例用于长期预测,其价格比按需实例低得多。对于一般公众用户访问和低分辨率预测,每小时仅需0.16美元。当沙尘暴事件发生时,会启动大量实例以响应并发用户访问和高分辨率预测。观察发现,当没有沙尘暴事件发生且只需要一个预留实例时,集群的每小时成本比EC2云服务高得多。在这种情况下,集群的每小时成本是单个预留实例的896倍以上。

通常,美国每年总共约有45次沙尘暴事件。如果使用28个EC2实例(具有400个CPU核心)来处理48小时的高分辨率和并发计算需求,本地集群的年度成本约为EC2云服务的12.7倍。云服务以更低的成本在更短的时间内提供与本地集群相同的计算能力,以响应沙尘暴事件。这些成本比较结果表明,使用云计算是经济的,可以在保持低访问和低分辨率预测的同时,在需要时调用大规模的计算能力对大地理区域进行高分辨率预测。

4. 结论

沙尘暴事件具有年际变化性,是典型的破坏性事件。用于运行沙尘暴预测系统的计算池应支持这种破坏性,即在沙尘暴事件发生时扩展以响应潜在的高分辨率和并发计算请求,在没有沙尘暴事件发生时缩小规模以节省成本和能源。云计算用于支持沙尘暴预测的方式如下:
- 能够在几分钟内提供大量的计算能力,以满足沙尘暴预测的突发计算需求。
- 在经济上维持低访问率和低分辨率模型,同时在需要时仍能调用大量计算能力,为大量公众访问进行高分辨率预测。

更高级的配置,如更好的文件系统设计以减少I/O开销,可以更好地支持大规模模拟,如沙尘暴预测。在集群计算架构中,每个计算节点通常被设计为访问相同的远程数据存储以并行执行任务。在这个例子中,使用NFS来共享存储并确保数据访问的同步。然而,不同的文件系统可能会对I/O和数据密集型应用的性能产生重大影响。因此,云用户可以探索其他解决方案,如并行虚拟文件系统版本2(PVFS2)。

5. 总结

本文讨论了如何使用云计算服务支持对沙尘暴等破坏性事件的预测,以亚马逊EC2为例。介绍了进行沙尘暴预测的背景和动机,以及执行沙尘暴预测的主要挑战。详细描述了将沙尘暴模型配置和部署到EC2云服务的过程。通过凤凰城沙尘暴事件展示了云服务如何支持沙尘暴预测。最后得出结论,云计算能够满足沙尘暴预测的突发计算需求,并在经济上具有优势。同时,还提出了进一步优化的方向,如更好的文件系统设计。

6. 问题探讨

  • 沙尘暴预测面临哪些计算挑战?
  • 将沙尘暴模拟部署到云的一般步骤是什么?
  • 哪种实例类型更适合沙尘暴预测,普通实例还是HPC实例?为什么?
  • 如何配置虚拟高性能计算(HPC)集群以支持计算密集型应用?
  • 弹性块存储(EBS)服务在支持沙尘暴模型部署到云的过程中是如何使用的?
  • 如何使用亚马逊Web控制台管理和命令行工具为HPC实例创建放置组?为什么需要这一步骤?
  • 与一般应用程序的部署工作流程相比,沙尘暴模型有哪些特殊考虑事项?
  • 为什么云计算能够实现成本效益?
  • 为什么云计算为支持破坏性事件(如沙尘暴)的模拟提供了一个很好的解决方案?

6. 问题探讨解答

6.1 沙尘暴预测面临哪些计算挑战?
  • 计算复杂度高 :沙尘暴现象模拟复杂且计算密集,周期性模拟需多次重复数值计算。以NMM - 沙尘模型为例,每次迭代含21个模块计算,计算复杂度与网格维度相关,地理区域和空间分辨率变化会大幅增加计算成本。处理子区域的核心还需与相邻核心通信同步。
  • 时间要求严格 :预测需在有限时间内完成,如一天的预测建议两小时内完成计算。但实际需要邮政编码级别的分辨率支持应急决策,有限区域和分辨率的预测难以满足需求。
  • 事件的不连续性 :沙尘暴是破坏性事件,一年中总时间短,占比不到1%,预测系统在不同时段有不同计算和访问需求。
6.2 将沙尘暴模拟部署到云的一般步骤是什么?

部署到亚马逊EC2的一般步骤如下:
1. 授权网络访问:打开端口22,通过SSH实现本地服务器与EC2实例通信。
2. 启动实例:选具有八个CPU核心和23 GB内存的集群实例作为头节点。
3. SSH连接到实例:用SSH工具访问头节点。
4. 安装软件依赖项:在头节点和计算节点安装NFS和MPICH2,安装后配置和启动NFS。
bash [root@domU-head~] yum install gcc gcc-c++ autoconf automake [root@domU-head~] yum –y install nfs-utilsnfs-utils-lib sytem-config-nfs #install NFS [root@domU-head~] tar –zvxf mpich2–1.5.tar.gz download MPICH2 package and unzip [root@domU-head~] mkdir /home/clouduser/mpich2-install # create an installation directory [root@domU-head~] cd mpich2–1.5.tar.gz [root@domU-head~] ./configure -prefix=/home/clouduser/mpich2–install [root@domU-head~] make # Build MPICH2 [root@domU-head~] make install # Install MPICH2 [root@domU-head ~] mkidr /headMnt # create a NFS export directory [root@domU-head ~] echo "/headMnt *(rw) " >> /etc/exports [root@domU-head ~] exportfs -ra [root@domU-head ~] service nfs start #start up NFS
5. 创建AMI和计算节点:基于配置好的头节点构建AMI,启动计算节点。
6. 配置头节点和计算节点:建立网络通信,添加计算节点IP到主机列表,创建公钥并复制到计算节点授权密钥列表。
bash [root@domU-headMnt ~] vi /etc/hosts #access to the hosts list of the head node [root@domU-headMnt ~] ssh-keygen -t rsa #create a public key at the head node [root@domU-computing~] mkdir –p /root/.ssh/ [root@domU-computing ~] scp root@domU-head: /root/.ssh/id_ras.pub /root/.ssh/ #copy the public key from the head node to the computing node [root@domU-computing ~] cat /root/.ssh/id_ras.pub >> /root/.ssh/authorized_keys
7. 创建EBS卷并附加到头节点:创建新EBS卷并附加到运行实例。
8. 将卷挂载到NFS导出目录:将卷挂载到实例。
9. 将模型部署到NFS导出目录:传输模型到NFS导出目录。
10. 将NFS目录导出到计算节点:建立NFS连接,使计算节点共享软件包套件。
bash [root@domU-computing ~] mkdir //headMnt # create the directory [root@domU-computing ~] mount -t nfs -o rw domU-head:/headMnt //headMnt #Mount the volume to the NFS export directory
11. 配置和测试模型:创建主机文件,添加计算节点私有IP,启动MPI连接并运行模型。
bash [root@domU-head~] mpdboot -n 3 -f mpd.hosts –v # start up MPICH2 [root@domU-xxx~] ./run_test.sh >& out.log & # Run the model
12. 从运行中的实例创建AMI:分别基于头节点和计算节点创建新AMI。

6.3 哪种实例类型更适合沙尘暴预测,普通实例还是HPC实例?为什么?

HPC实例更适合沙尘暴预测。原因如下:
- 计算能力 :沙尘暴预测计算复杂、密集,HPC实例通常具有更高的计算性能,如多核处理器、大内存等,能满足高分辨率和大规模模拟的计算需求。
- 并行处理 :模拟中涉及大量并行计算任务,HPC实例支持更好的并行处理能力,可提高计算效率,缩短预测时间。
- 网络性能 :HPC实例的网络配置较好,能保证计算节点间的高效通信,减少数据传输延迟,提高整体性能。

6.4 如何配置虚拟高性能计算(HPC)集群以支持计算密集型应用?
  • 选择中间件 :如使用MPICH2作为中间件调度模型运行任务和收集结果。
  • 创建镜像 :为节省配置计算节点时间,基于头节点构建镜像启动计算节点。
  • 降低通信开销 :将所有实例在同一数据中心内且物理相邻的机器上启动,创建放置组并将实例放入其中。
    bash PROMPT>ec2-create-placement-group VirtualCluster -s cluster PROMPT>ec2-run-instances ami-xxx -n 2 --placement-group VirtualCluster
6.5 弹性块存储(EBS)服务在支持沙尘暴模型部署到云的过程中是如何使用的?
  • 创建EBS卷并附加到头节点,为模型运行提供存储支持。
  • 将EBS卷挂载到NFS导出目录,使计算节点能通过NFS共享存储,确保数据访问同步。
6.6 如何使用亚马逊Web控制台管理和命令行工具为HPC实例创建放置组?为什么需要这一步骤?
  • 命令行创建
    bash PROMPT>ec2-create-placement-group VirtualCluster -s cluster PROMPT>ec2-run-instances ami-xxx -n 2 --placement-group VirtualCluster
  • 原因 :将实例放在同一放置组中,可使实例在物理上更接近,降低通信延迟,提高数据传输速度,从而减少计算节点间的通信开销,提高整个集群的性能。
6.7 与一般应用程序的部署工作流程相比,沙尘暴模型有哪些特殊考虑事项?
  • 处理计算强度 :需利用多个虚拟实例并发运行模拟,设置虚拟集群环境,安装和配置MPICH2中间件。
  • 处理通信强度 :创建放置组,将虚拟集群所有实例放在同一组,减少通信开销。
6.8 为什么云计算能够实现成本效益?
  • 按需使用 :在没有沙尘暴事件时,只需保留低访问和低分辨率预测的预留实例,成本低。当事件发生时,按需启动大量实例进行高分辨率预测,避免了长期维护大规模计算资源的高成本。
  • 快速响应 :能在短时间内提供与本地集群相同的计算能力,响应沙尘暴事件,提高资源利用效率,降低总体成本。
6.9 为什么云计算为支持破坏性事件(如沙尘暴)的模拟提供了一个很好的解决方案?
  • 弹性扩展 :沙尘暴事件具有不连续性和突发计算需求,云计算可在事件发生时快速扩展计算资源,满足高分辨率和并发计算请求;事件结束后缩小规模,节省成本和能源。
  • 经济高效 :能以较低成本维持低访问率和低分辨率模型,在需要时调用大规模计算能力进行高分辨率预测,实现成本效益。

7. 未来展望

虽然云计算在沙尘暴预测中展现出诸多优势,但仍有提升空间。未来可在以下方面进行深入研究和改进:
- 文件系统优化 :进一步探索和应用更高效的文件系统,如PVFS2,以减少I/O开销,提高数据处理速度。
- 模型优化 :不断改进沙尘暴预测模型,提高预测的准确性和可靠性,结合更多数据和算法进行优化。
- 自动化管理 :开发更智能的自动化管理系统,实现计算资源的自动调度和优化,减少人工干预。

通过不断的技术创新和优化,云计算将在沙尘暴预测及其他破坏性事件模拟中发挥更大的作用,为保障人类生命财产安全和环境可持续发展提供更有力的支持。

8. 总结与回顾

本文围绕沙尘暴预测展开,详细介绍了沙尘暴预测面临的挑战、云计算在其中的应用、部署流程、性能和成本效益等方面。通过分析可知,云计算凭借其弹性扩展、经济高效等特点,为沙尘暴预测提供了有效的解决方案。同时,也指出了未来的发展方向,为进一步提升沙尘暴预测能力提供了思路。

以下是整个部署流程的mermaid流程图:

graph LR
    A[授权网络访问] --> B[启动实例]
    B --> C[SSH连接到实例]
    C --> D[安装软件依赖项]
    D --> E[创建AMI和计算节点]
    E --> F[配置头节点和计算节点]
    F --> G[创建EBS卷并附加到头节点]
    G --> H[将卷挂载到NFS导出目录]
    H --> I[将模型部署到NFS导出目录]
    I --> J[将NFS目录导出到计算节点]
    J --> K[配置和测试模型]
    K --> L[从运行中的实例创建AMI]

通过以上内容,我们对沙尘暴预测及云计算的应用有了更全面的了解,希望能为相关领域的研究和实践提供有价值的参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值