专栏首页云计算D1net如何借助云集群打造高性能计算

如何借助云集群打造高性能计算

云计算一开始致力于为互动系统(systems of engagement)改善应用架构,而在高性能计算方面提供不了什么。而如今,领先的云服务提供商正在重构解决方案及相关的基础设施,让计算密集型应用切合实际、经济高效。

在过去,云架构是为了交付将应用程序与Dropbox、Gmail、iTunes和Evernote等存储结合起来的服务而设计的。Bright Computing公司的首席执行官Matthijs Van Leeuwen说:“集群的架构旨在暴露除了存储外的其他资源,比如在定制网络中执行厂商提供的或用户构建的应用程序所需要的那些资源。”

酷似在专用硬件上运行的传统集群,基于云的集群包括不同的分布式资源,这些资源因某个用途而结合起来。这可能包括:为可识别集群的数据库管理系统(DBMS)、高性能计算(HPC)应用或大数据分析应用交付平台。亚马逊和Rackspace之类的公有云提供商暴露资源的预定义实例,它们可以用于在云基础设施上构建集群。

OpenStack让企业组织可以定制自己的资源实例,然后使用这些资源实例在自己的私有云中构建集群。物理服务器或使用物理服务器上虚拟机管理程序的虚拟机在专用的内部部署集群中很典型。对开发人员来说,区别主要在于资源实例抽象,这是云集群与专用集群之间的主要区别。

常见的集群使用场合

Leeuwen表示,云集群可以用来取代或补充专用资源。对于运行在低配专用硬件(比如笔记本电脑)上的应用程序而言,云可以用来为集群创建实例、使用集群以及删除实例。在这种使用场合下,笔记本电脑只是访问基于云的集群的最终用户设备而已。它并不提供用来执行计算或设计网络的任何实例化资源。

在第二种常见的使用场合下,基于云的资源可以用来补充专用资源。这种情况下,内部部署的资源通过云突发流程,由云端可用的那些资源予以拓展。基于云的资源只要根据需要创建实例、使用并删除实例。可以做到内部部署资源与云端资源的这种区别对最终用户和许多类型的应用而言是透明的。

这两种使用场合都可以运用到公有云或私有云。企业组织可以设计其应用程序架构,以便直接做到这一点,或者充分利用Bright Cluster Manager之类的工具,在AWS公有云或在OpenStack私有云中构建集群,前期的开发和配置工作比较少。

弥补抽象方面的缺口

开发人员面临的最大挑战就是,用于相对专用硬件,配置云资源(比如网络、处理器和存储)的不同抽象模式。云依赖实例化资源。除了存储外,暴露基于云的处理器实例在公有云和私有云解决方案中都相当成熟。最新的云解决方案随带服务和钩子(hook),可用于指定异常需求,比如InfiniBand网络连接、GPU加速和定制的IP网络。

任何资源都需要通过这同一条路径来传输,之后才能予以暴露,以便在任何一种类型的云里面利用。由于集群通常使用低延迟高带宽的互连结构、加速器和协处理器以及其他的专门资源,这每一个在基于云的集群方面同时带来了机遇和挑战。

Leeuwen表示,企业组织完全由云服务提供商来支持存储和计算之外的资源实例化。比如说,AWS通过亚马逊VPC以及英伟达GPU实例,支持定制的IP网络。一种良好的做法就是,开发标准的配置,或者充分利用第三方云管理工具,管理存储、计算、网络和加速器等资源,无论它们驻留在企业内部,还是与AWS协同使用。

延迟对集群来说很关键

通信延迟是构建可扩展集群应用面临的最大挑战之一。一个良好的做法就是,为HPC智能化缓存数据。在数据方面,这需要认真考虑使用更具成本效益的、速度较慢的持久性存储服务(比如AWS S3)和归档服务(比如AWS Glacier),而不是成本较为高昂的RAM实例。

但是一个还要重大的网络挑战在于在运算期间,尽量缩短节点之间的通信延迟。处理期间充分利用消息传递的HPC应用最有可能出现瓶颈。大量使用消息传递接口(MPI)等接口的应用会陷入困境,除非开发人员和操作团队确保节点之间的延迟极低。

如果MPI应用在密封在私有云或公有云里面的集群中运行,这个问题比较容易解决。但如果在不同公有云或私有云基础设施上运行的不同节点之间有大量的MPI流量,这个问题就比较棘手。

这些考虑同样适用于云端运行大数据分析任务。让Hadoop分布式文件系统(HDFS)实例横跨内部部署基础设施和云基础设施没有太大意义。Leeuwen说:“但是完全在内部或完全在云端的HDFS实例实际上能取得相当好的效果。”

敏捷云整合解决方案提供商Jitterbit的首席技术官Ilan Sehayek表示,你在扩展时要保持性能的关键在于分布式架构。“让用户自行选择哪里运行API,哪里运行支持API的服务。”

另外要确保所有通信由可扩展的消息传递基础设施来支持,以便快速、有保障地处理API网关与服务之间的API请求。Sehayek补充说,面向集群的服务还需要高效的缓存技术,以便提供快速响应API这一机制。

本文分享自微信公众号 - 云计算D1net(D1Net02),作者:布加迪编译

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-08-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 按需所取、弹性分配的云计算

    云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件,服务),这些资源...

    静一
  • 谷歌推出云自然语言API

    将自然语言处理(NLP)的先进成果,从前沿研究的小世界里拿出来,送到普通的数据科学家和软件工程师手中,这已经成为一场运动。7月20日,谷歌也加入进来,发布了测试...

    静一
  • 震惊!Amazon每隔16秒调整一次云代码

    众多竞争对手声称自己能够在客户的私有数据中心内部建立起与Amazon Web Services类似的系统,对此言论Amazon公司的一位高管表示“呵呵”。 Am...

    静一
  • Linux学习笔记之Centos6.9安装Python3.6

    如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境,

    Jetpropelledsnake21
  • python中导入 train_test_split提示错误的解决

    在python3.6中sklearn已弃用train_test_split,导致导入报错

    砸漏
  • 多线程基础(四):volatile和可见性问题及happens-before原则

    有两个线程,一个线程写入,另外一个线程读取,那么写入线程的结果,每次都能被读取线程读到吗?我们执行上述代码:

    冬天里的懒猫
  • 如何使用融云地图,文件等插件--融云 Android SDK 2.8.0+ Extension 开发文档

    转载自融云 Android SDK 2.8.0+ Extension 开发文档 融云 SDK 2.8.0 后对 会话界面输入区域、+号扩展区域、语音消息、Emo...

    用户1148881
  • linux中的python3源码安装详细步骤

    2、下载python3,这里用的python3.6版本,网址: https://www.python.org/downloads/

    前端_AWhile
  • 机器学习中的交叉验证

    总第100篇 本篇讲讲机器学习中的交叉验证问题,并利用sklearn实现。 前言 在说交叉验证以前,我们先想一下我们在搭建模型时的关于数据切分的常规做法[直接利...

    张俊红
  • 基于Python的卷积神经网络和特征提取

    用户1737318

扫码关注云+社区

领取腾讯云代金券