云计算最初侧重于改进交互系统的应用架构,但在高性能计算方面做得很少。然而,如今,领先的云服务提供商正在重新设计解决方案和相关基础架构,以使计算密集型应用程序实用且具有成本效益。过去,云架构旨在提供将应用程序与存储相结合的服务,例如Dropbox、Gmail、iTunes和Evernote。BrightComputing首席执行官MatthijsVanLeeuwen表示:“集群的架构旨在公开存储以外的资源,例如在自定义网络中执行供应商提供或用户构建的应用程序所需的资源。”与在专用硬件上运行的传统集群非常相似,基于云的集群包括不同的分布式资源,这些资源为一个目的而组合在一起。这可能包括为集群感知数据库管理系统(DBMS)、高性能计算(HPC)应用程序或大数据分析应用程序提供平台。Amazon和Rackspace等公共云提供商公开了可用于在云基础设施之上构建集群的预定义资源实例。OpenStack允许组织定制自己的资源实例,然后使用这些资源实例在自己的私有云中构建集群。物理服务器或在物理服务器上使用管理程序的虚拟机在专用本地集群中很典型。对于开发者来说,区别主要在于资源实例抽象,这是云集群和私有集群的主要区别。常见的集群用例Leeuwen表示,云集群可以用来替代或补充专用资源。对于运行在笔记本电脑等低端、专用硬件上的应用,可以通过云为集群创建实例、使用集群和删除实例。在此用例中,笔记本电脑只是访问基于云的集群的最终用户设备。它不提供任何实例化资源来执行计算或设计网络。在第二种常见用例中,可以使用基于云的资源来补充专用资源。在这种情况下,本地资源通过云爆发过程在云中可用的资源得到增强。基于云的资源只需创建实例、使用它们并根据需要删除实例。内部部署和云资源之间的这种区别可以对最终用户和许多类型的应用程序透明。这两个用例都可以应用于公共或私有云。组织可以构建他们的应用程序来直接执行此操作,或者利用BrightClusterManager等工具在AWS公共云或OpenStack私有云中构建集群,而前期开发和配置最少。缩小抽象差距开发人员面临的最大挑战是配置云资源(例如网络、处理器和存储)与专用硬件的不同抽象模式。云依赖于实例化资源。除了存储之外,公开基于云的处理器实例在公共云和私有云解决方案中都相当成熟。最好的云解决方案带有可用于指定不寻常要求的服务和挂钩,例如InfiniBand网络、GPU加速和自定义IP网络。任何资源都需要经过相同的路径才能在任一类型的云中公开使用。当涉及到基于云的集群时,这些中的每一个都带来了机遇和挑战,因为集群通常使用低延迟高带宽互连结构、加速器和协处理器以及其他专用资源。Leeuwen说,企业组织得到云服务提供商的全力支持,可以实例化存储和计算以外的资源。例如,AWS通过AmazonVPC和NVIDIAGPU实例支持自定义IP网络。一个好的做法是开发标准配置或利用第三方云管理工具来管理存储、计算、网络和加速器等资源,无论它们位于本地还是与AWS结合使用。延迟对集群至关重要通信延迟是构建可扩展集群应用程序的最大挑战之一。一个好的做法是为HPC智能缓存数据。在数据方面,这需要认真考虑使用更具成本效益、速度更慢的持久性存储服务(例如AWSS3)和归档服务(例如AWSGlacier),而不是更昂贵的RAM实例。但一个更重要的网络挑战是在计算过程中最大限度地减少节点之间的通信延迟。在处理过程中充分利用消息传递的HPC应用程序最有可能遇到瓶颈。除非开发人员和运营团队确保节点之间的延迟极低,否则大量使用消息传递接口(MPI)等接口的应用程序将难以为继。如果MPI应用程序运行在一个密封在私有云或公共云中的集群中,这个问题就更容易解决。但是,如果在不同的公共或私有云基础设施上运行的不同节点之间存在大量MPI流量,则问题会更加棘手。这些注意事项也适用于在云中运行大数据分析任务。让Hadoop分布式文件系统(HDFS)实例跨越本地和云基础架构没有多大意义。“但完全在本地或完全在云端的HDFS实例实际上可以取得相当不错的结果,”Leeuwen说。关键在于分布式架构。“让用户选择在哪里运行API,以及在哪里运行支持API的服务。”还要确保所有通信都由可扩展的消息传递基础架构支持,以快速安全地处理API网关和服务之间的API请求。Sehayek补充说,面向集群的服务还需要高效的缓存技术,以便为快速响应API提供机制。原标题:高性能计算与云集群
