微软HPC解决方案概述与实做

HPC解决方案是微软产品历史长河中的一个砂砾,国内不多有人说起,所以老王准备把这个砂砾擦擦,为你们呈现出来node


开始以前咱们不妨先来看下HPC的概念,前面咱们花了将近50篇左右的文章,讲了微软高可用性群集,除了高可用群集,微软事实上还有负载均衡群集和高性能群集技术,负载均衡技术无非是ARR,NLB,DNS轮询,这些你们都经常使用的技术,而微软的高性能群集技术,就连专门作微软itpro的人也不多知道,所以本文咱们就来从一个入门的角度,争取让不懂HPC的微软ITpro能够看懂,也可让懂HPC但不了解微软产品的人看懂。linux


首先咱们先来看下高性能群集与其它几种群集的不一样web


高可用群集:群集全部节点,来维持一个应用的持续运做,若是当前应用所在节点失败,自动故障转移至其它节点算法

负载均衡群集:群集全部节点来平衡一个应用的访问请求,利用每一个节点的响应,以提升应用效能,同时支持故障转移sql

分布式群集:群集全部节点来共同完成一件事,一件事能够被分散成若干小事由不一样节点处理,最终汇总结果shell

高性能群集:群集全部节点来共同完成一件事,一般以计算为主,综合群集的性能来达到快速完成计算目的
数据库


分布式群集与高性能群集进一步探讨express


这两种群集模型,某些程度上存在必定类似度,但某些程度又不太同样编程


例如,一个分布式群集的节点,能够是server,pc,hpc,能够是跨机房,跨地区,跨国,能够是windows,linux,unix,能够分布式计算里面再包括多个群集,多个节点,基本上分布式群集最大的一个特色,就是对提供计算的节点没有更多的要求,只要可以提供计算能力就行,是松耦合化的,不会和某一种OS,某一种硬件绑定windows


高性能群集在这一点上则与分布式群集不一样,高性能群集强调的是高性能,所以,若是这个群集里面各个节点来自不一样国家,确定没法完成高性能的目的,所以,一个高性能群集的各个节点,确定是经过高速网络很快的链接在一组的服务器,不多是分散在不一样国家的,同时高性能群集通常不会由PC,普通server参加,起码会由相对性能高一些的server,或专门为高性能计算设计的server来组成,一个高性能群集的节点一般是标准化的,或者定制化硬件。


分布式计算一般会把一个做业分红多个小做业,而后交由各个节点,高性能计算一般是并行做业


分布式计算更加适用于在计算寻找模式的东西,分析计算,相加计算

高性能计算群集更多的会被应用于数学,工业,科研领域等,须要在短期内处理多维度的计算


高性能计算是否就是云计算?


从运做形态来说,老王把云计算分为两个角度来看

对于最终用户,我的用户,或企业使用云计算的部门而言,云计算就是一种新的IT消费模型,它自助化,自动化,只要付钱就可使用,部署快捷,弹性收费,不须要花费其它前置费用和时间

对于云提供商或企业提供云计算的部门来讲,云计算就是一种新的IT管理模型,将原来分散的架构开始集中化,经过软件定义+资源池,就能够执行大部分存储,网络工做,同时使用云后能够作一些自动化的维护操做,减轻IT维护时间,另外云计算将成本管理,SLA引入,有助于IT部门进一步体现自身价值


所以你们能够看到从运做形态上来说,云计算更加像是一种企业信息化的选择,企业选择云计算来辅助现有数据中心,提高资源申请效率


高性能计算与云计算有一点很是冲突的是,云计算主要是要求提供弹性,要快速部署,快速响应用户的请求,甚至要基于程序的性能作部署,所以后台会引入虚拟化,多租户等技术,高性能计算一般不会是虚拟化,都会是由实体的物理机承担,以得到最好的性能。


近些年来,也有些公司提出将高性能计算和云计算集合,主要仍是公有云厂商提出的概念,能够从iaas或paas层对接本地高性能计算群集,将公有云做为高性能计算的一部分,可是一些高性能计算用户仍是会对此持有怀疑态度,主要的计算仍是会在本地跑,什么场景下适用于公有云呢,多是要作一些模拟计算的时候,本地高性能群集排队已满,这时候能够临时把做业提交到公有云,最好是不产生数据,仅看结果,这类计算能够适用于公有云。


高性能群集名词与常见功能


高性能计算(Highperformance computing,缩写HPC)  最先咱们提到高性能计算一般是指某台高性能主机,经过分片等技术将做业提交到这台主机进行计算,随着信息技术不断发展,高性能计算逐渐也面向企业,如今的的高性能计算一般是指某一群集中组织的几台计算机(做为单个计算资源操做)的计算系统和环境,更多的是经过高性能群集软件+服务器实现高性能计算效果


高性能计算服务器架构选择


SMP(Symmetrical Multi-Processing),是指在一个计算机上聚集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构,SMP服务器的主要特征是共享,系统中全部资源(CPU、内存、I/O等)都是共享的。也正是因为这种特征,致使了SMP服务器的主要问题,那就是它的扩展能力很是有限。对于SMP服务器而言,每个共享的环节均可能形成SMP服务器扩展时的瓶颈,而最受限制的则是内存。因为每一个CPU必须经过相同的内存总线访问相同的内存资源,所以随着CPU数量的增长,内存访问冲突将迅速增长,最终会形成CPU资源的浪费,使 CPU性能的有效性大大下降


NUMA(Non-Uniform Memory Access),因为SMP在扩展能力上的限制,人们开始探究如何进行有效地扩展从而构建大型系统的技术,NUMA就是这种努力下的结果之一,利用NUMA技术,能够把几十个CPU(甚至上百个CPU)组合在一个服务器内,NUMA服务器的基本特征是具备多个CPU模块,每一个CPU模块由多个CPU(如4个)组成,而且具备独立的本地内存、I/O槽口等。因为其节点之间能够经过互联模块(如称为Crossbar Switch)进行链接和信息交互,所以每一个CPU能够访问整个系统的内存(这是NUMA系统与MPP系统的重要差异)。显然,访问本地内存的速度将远远高于访问远地内存(系统内其它节点的内存)的速度,但NUMA技术一样有必定缺陷,因为访问远地内存的延时远远超过本地内存,所以当CPU数量增长时,系统性能没法线性增长。如HP公司发布Superdome服务器时,曾公布了它与HP其它UNIX服务器的相对性能值,结果发现,64路CPU的Superdome (NUMA结构)的相对性能值是20,而8路N4000(共享的SMP结构)的相对性能值是6.3。从这个结果能够看到,8倍数量的CPU换来的只是3倍性能的提高。


MPP(Massive Parallel Processing) 由多个SMP服务器经过必定的节点互联网络进行链接,协同工做,完成相同的任务,从用户的角度来看是一个服务器系统。其基本特征是由多个SMP服务器(每一个SMP服务器称节点)经过节点互联网络链接而成,每一个节点只访问本身的本地资源(内存、存储等),是一种彻底无共享(Share Nothing)结构,于是扩展能力最好,理论上其扩展无限制,目前的技术可实现512个节点互联,数千个CPU。目前业界对节点互联网络暂无标准,如 NCR的Bynet,IBM的SPSwitch,它们都采用了不一样的内部实现机制。但节点互联网仅供MPP服务器内部使用,对用户而言是透明的。

在MPP系统中,每一个SMP节点也能够运行本身的操做系统、数据库等。但和NUMA不一样的是,它不存在异地内存访问的问题。换言之,每一个节点内的CPU不能访问另外一个节点的内存。节点之间的信息交互是经过节点互联网络实现的,这个过程通常称为数据重分配(Data Redistribution)。

可是MPP服务器须要一种复杂的机制来调度和平衡各个节点的负载和并行处理过程。目前一些基于MPP技术的服务器每每经过系统级软件(如数据库)来屏蔽这种复杂性。举例来讲,NCR的Teradata就是基于MPP技术的一个关系数据库软件,基于此数据库来开发应用时,无论后台服务器由多少个节点组成,开发人员所面对的都是同一个数据库系统,而不须要考虑如何调度其中某几个节点的负载


一般状况下SMP和NUMA是过去人们实现高性能计算的选择,实现高性能计算的一个关键标准,是可以让做业程序在多个节点并行执行,以得到最快的计算结果,如今你们更多的是选择经过MPP架构或普通服务器组成的群集,以实现高性能计算,针对于并行,从原来单独的硬件层面,延伸到软件层面,经过并行程序和高性能群集系统的结合,以达到高性能计算。



高性能计算群集常见指标


GFLOPS 就是 Giga Floating-point Operations Per Second,即每秒10亿次的浮点运算数


一个 MFLOPS (megaFLOPS) 等于每秒1百万 (=10^6) 次的浮点运算

一个 GFLOPS (gigaFLOPS) 等于每秒10亿 (=10^9) 次的浮点运算

一个 TFLOPS (teraFLOPS) 等于每秒1万亿 (=10^12) 次的浮点运算

一个 PFLOPS (petaFLOPS) 等于每秒1千万亿 (=10^15) 次的浮点运算


Linpack理论峰值计算 = CPU主频 X CPU每一个时钟周期执行浮点计算的次数 X 系统中CPU核心数 


是否支持GPU高性能计算,在浮点运算、并行计算等部分计算方面,GPU能够提供数十倍乃至于上百倍于CPU的性能


高性能计算常见角色


管理节点:负责整个高性能群集的监控,资源分组,资源调度,做业调度,受权控制,系统推送(一般会在头节点安装DHCP,WDS等PXE部署组件,当进行大规模部署的时候,直接pxe引导部署其它计算节点,或结合BMC实现唤醒部署)

计算节点:用于运行做业,这种类型的节点一般不能成为不一样类型的节点(即更改角色)

用户访问节点:做为高性能群集对外的入口,用户登陆到这个节点提交做业,一般会有Web,console,api,脚本等接口

存储节点:存储高性能群集产生的数据,或存储高性能群集须要的数据,一般会映射这个节点的NFS,SMB至其它计算节点上

数据库节点:高性能计算群集一般会有一套数据库系统,用于存放群集做业调度,报告,诊断等数据,一般会直接使用头节点,或部署远程数据库节点


整个架构中最关键的是管理节点,数据库节点,实际环境中一般会把高性能与高可用结合,针对于管理节点和数据库节点实现高可用。

若是是计算节点坏了,一般状况下管理节点会把它标记为失败,下次分发计算任务排除该节点,理想状况下计算节点应该是无状态的,坏了直接新加,计算所需数据来自存储节点。

用户访问节点,若是实现了门户访问,能够搭建多台,结合负载均衡群集实现高可用


高性能计算常见术语


做业:高性能群集最终会提供给用户门户,控制台,或接口,以供用户向高性能计算群集提供请求,做业就是你但愿让高性能群集执行的计算任务,一般一个做业里面能够包含多个任务,能够设计做业里面不一样任务之间的优先顺序与关联性

队列:成功提交的做业,会提交到HPC群集头节点,再由头节点根据调度器规则,调度到合适的资源分组执行做业,若是当前高性能群集全部资源正在使用,或者有优先级更高的计算正在进行,则新提交的做业将被排队进入队列,直到有计算资源释放

资源分组:经过管理节点能够针对于当前群集内全部的计算节点进行资源分组,将资源由服务器,转换为计算能力,转换后按照分组计算能力,对使用方进行交付,用户使用时能够选择,要将做业放到什么样计算能力的资源分组执行,若是该资源分组正忙,则用户做业也会进入队列。


MPI是什么


MPI并非一种新的开发语言,它是一个定义了能够被C、C++和Fortran程序调用的函数库。这些函数库里面主要涉及的是两个进程之间通讯的函数,采用分布式内存模型,MPI是一种消息传递编程模型,驻留在不一样节点上的进程能够经过网络传递消息相互通讯,实现进程之间的信息交换。


简单来讲,MPI是一种能够用于不一样节点进程之间传递消息的编程模型,透过MPI咱们能够实现进程级别的跨节点通讯,进而实现并行计算


一个MPI应用程序的执行以下

  1. MPI初始化

  2. 由管理节点将消息分发给计算节点并行执行

  3. 计算节点执行完成后通过通讯将结果返回给应用程序


除了MPI,还有其它实现并行计算的方法,例如OpenMP,OpenMP经过在节点间共享变量,已达到并行计算效果,以线程做为并行计算粒度,采用共享内存模型


当咱们要将做业提交到高性能群集时,虽然群集具有实现高性能计算的能力,可是若是咱们提交的做业不是并行的,依然不能实现高性能计算效果,所以也须要考虑如何让做业并行执行。


经过上面的介绍老王简单为你们介绍了下高性能计算的一些术语,以及实际运做的形态,我并无一味介绍高性能计算概念,而是经过对比,举例的方式使你们更便于理解,构建本身脑中的模型


下面咱们将专一于微软对于HPC的解决方案,微软进入HPC领域大概是在2003的时候,那时微软第一次推出windows computer cluster server解决方案,进入高性能计算领域,整个解决方案当时有两部分 ,Windows Server 2003 Compute Cluster Edition和Microsoft Compute Cluster Pack,一个系统版本和一个组件包,事实上核心的高性能计算功能,例如资源分区,做业调度,都是在cluster pack中,Computer Cluster edition仅是一个通过优化的操做系统版本,到了2008时代也是如此,2008时代改叫HPC server和hpc pack。从2012开始,微软已经再也不发行hpc server系统版本,hpc pack能够直接在标准版,数据中心版OS运行,最后发行computer cluster版本缘由当时的OS还不能和硬件很好的感知,例如RDMA,ODX等功能,2012开始这些都已经完美的内嵌在Server版本中。


最新的hpc pack版本是 hpc pack 2016 ,经过hpc pack能够帮助咱们配置hpc解决方案所须要的角色,提供管理hpc群集的工具


微软HPC解决方案的角色以下,以最新hpc 2016为例


头节点:负责整个高性能群集的监控,资源分组,资源调度,做业调度,系统推送(hpc pack将自动为头点安装dhcp,wds)

计算节点:用于运行做业,这种类型的节点一般不能成为不一样类型的节点(即更改角色)

代理节点:Windows Communication Foundation(WCF)代理节点用于将WCF调用从面向服务的体系结构(SOA)客户端路由到在群集中的节点上运行的SOA服务,这种类型的节点能够在不从新部署的状况下将角色更改成计算节点

工做站节点和非托管服务器节点 :工做站节点和非托管服务器节点是组织中的计算机,它们也能够运行做业,但它们不是专用的群集资源。他们能够安排在特定时间运行工做,也能够按需提供。这种类型的节点不能更改角色

Microsoft Azure Paas节点: 若是您有Microsoft Azure订阅,则能够根据须要添加Azure节点,以便在须要时增长群集容量。与计算节点,工做站节点和非托管服务器节点同样,Azure节点也能够运行做业。添加Azure节点时,还能够在Azure部署中配置固定或可变数量的代理节点,以便实现本地头节点和Azure节点之间的通讯。

Microsoft Azure IaaS节点:若是您拥有Microsoft Azure订阅,则能够根据须要添加Microsoft Azure IaaS节点,以便在须要时增长群集容量


hpc pack 2012 - 2016重要功能更新


1.HPC Pack 2016支持计算节点工做组部署

2.HPC Pack 2012 R2 Update 2支持Azure linux计算节点部署

3.HPC Pack 2012 R2 Update 3支持本地linux计算节点部署

4.HPC Pack 2012 R2 Update 3 支持Windows计算节点的GPU

5.HPC Pack 2012 R2 Update 3 中Linux节点的管理和调度体验相似于咱们已经支持的Windows节点,能够看到Linux节点的热图,使用特定于Linux节点的cmdlet建立做业,监视做业,任务和节点状态等,Linux节点开始支持便利的工具clusrun


hpc pack头节点部署要求


操做系统:Windows Server 2016,Windows Server 2012 R2,头节点必须加入域

SQL Server:默认状况下hpc pack会直接在头节点本机安装一个sql express,并自动配置数据库,也可使用远程数据库实例,支持数据库群集或alwayson

.net framework:要求4.6.1或更高版本,Windows Server 2016自带,Windows Server 2012 R2需单独安装,在HPC pack安装文件DotNetFramework目录有安装包,2012R2安装前还需按顺序安装KB2919442,KB2919355补丁

其它必备组件会由hpc pack自动安装


hpc pack 数据库列表


HPCManagement : 群集管理信息

HPCScheduler:做业调度

HPCReporting:群集报告

HPCDiagnostics:群集诊断

HPCMonitoring:群集监控数据


如需进行数据库优化请参考连接,适用于hpc pack 2012 2012R2 2016

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/hh407109(v=ws.11)



微软HPC群集网络角色以下

企业网络 企业组织网络,用于链接到企业内部基础架构服务器,如AD,并须要接入用户网络,用户会将做业经过该网络提交至头节点,而且在某些状况下链接到群集中的其余节点,除非专用网络和应用网络也链接群集节点,不然全部群集内管理和部署流量都将在企业网络中进行
专用网络 承载节点间群集内通讯的专用网络。若是不存在应用网络,则专用网络包含管理,部署和应用程序通讯
应用网络
专用网络,最好具备高带宽和低延迟。此网络一般仅用于群集节点之间的并行消息传递接口(MPI)应用程序通讯。


详细HPC网络拓扑规划请参考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/ff919486(v=ws.11)



实做环境介绍


08dc :10.0.0.2 255.0.0.0

hpc-headnode

企业网络10.0.0.9 255.0.0.0 

专用网络18.0.0.1 255.0.0.0


hpc pack 2016下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=56360


下载完成后在头节点打开以下,点击新建安装或将新功能添加到现有安装 

2018-04-19_220342.png

选择安装类型,咱们第一次安装选择 建立头节点,并建立新的HPC群集

2018-04-19_220947.png

若是针对头节点进行了高可用部署,这里能够选择高可用,咱们这里只有一台,因此选择单头

2018-04-19_221006.png

评估安装规则

2018-04-19_221023.png

须要注意的是千万不要自做聪明提早安装WDS,不然这里会报错

2018-04-19_220753.png

选择数据库部署模型,默认hpc pack 2016安装的是sql server 2016 express,若是远程部署则至少SQL 2008R2标准版或企业版

远程部署SQL server参考 https://docs.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/ee783551(v=ws.10)

2018-04-19_221038.png

证书这里,能够从导入设置中选择新建一个自签名证书

2018-04-19_221919.png

或者直接向AD申请一张容许导出密钥的计算机证书,点击浏览 hpc pack会识别到这张证书,这张证书被用作HPC pack各节点间通讯安全,所以需导出一份带密钥的PFX,后期添加计算节点时需导入此证书

2018-04-19_222024.png

最后hpc pack会根据自带的离线安装包为头节点安装必备组件,这时候能够泡杯绿茶,等待全部选项变成绿勾

2018-04-19_222101.png

安装完成必备组件后,提示输入HPC群集链接串,这是HPC群集和高可用群集不同的地方,高可用群集咱们是给一个逻辑的名称,而HPC群集的对外链接始终是头节点

2018-04-19_230126.png

点击完成后会自动打开HPC Pack 2016群集管理器,在开始执行管理以前要完成部署任务

2018-04-19_230714.png

配置网络拓扑,这里老王选择企业和私有网络上的全部节点,考虑到节点中可能会有加入域节点,所以老王设计每一个节点两个网络,企业网络,和专用的HPC网络,但最终对外只发布管理节点企业网络地址

2018-04-20_154448.png

配置完成以下,若是检测到网卡支持RDMA Direct这里会显示出来,建议为HPC网络启用RDMA,同时私有网络配置部分,会在管理节点建立一个DHCP做用域,用于部署计算机节点时使用,该做用域为HPC网段

2018-04-20_154623.png

设置安装节点帐户,本地管理员权限便可

2018-04-20_162030.png

配置新节点命名规则,主要适用于经过HPC管理节点 批量部署时的计算节点名称

2018-04-20_162517.png

三个必备任务完成后便可看到HPC群集完整内容,像极了SystemCenter 2007 2012时的UI

2018-04-20_162747.png

接下来还有一些可选配置的内容

为HPC群集添加管理员权限,一般建议在AD里面建立一个安全组,这个安全组的用户能够对HPC群集具有资源管理,群集配置,报表查看,做业调度等权限

2018-04-20_163053.png

添加用户权限,被添加的用户,有权限经过客户端应用程序,cmd,api,powershell,webportal向hpc群集提交做业,一般也建议使用组进行管理

2018-04-20_163333.png

配置做业调度器策略

2018-04-20_163723.png

配置做业电子邮件通知,实现做业开始结束使用邮件通知做业全部者

2018-04-20_163742.png

建立不一样级别的节点组

2018-04-20_164105.png

建立做业模板,做业模板会做为用户提交做业预定时显示

2018-04-20_164638.png

限制做业运行时间,若是某一类型做业执行有时限限制,能够经过此处进行配置

2018-04-20_164651.png

设置该做业模板优先级,凡是经过这个做业模板建立的做业,做业优先级默认及最大可调整范围

2018-04-20_164711.png

限制节点组,能够配置透过此模板建立的做业,仅容许在那些节点组运行

2018-04-20_164823.png

也能够针对于做业模板限定使用权限

2018-04-21_153258.png

为HPC群集开启Web门户,进入安装bin目录,输入如下命令便可,脚本会自动帮助咱们安装IIS,配置HPC门户所需内容

2018-04-20_170632.png

若是配置无误,接下来能够经过访问头节点名称/hpcportal路径,打开HPC portal,打开网页前会须要身份验证,通过身份验证的HPC用户或管理员能够在portal上面在线提交做业,目前只有英文版

2018-04-21_122935.png


添加Windows计算节点


Windows计算节点系统要求


操做系统:Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2 SP1,支持域或工做组

.net framework:要求4.6.1或更高版本,Windows Server 2016自带,Windows Server 2012 R2需单独安装,在HPC pack安装文件DotNetFramework目录有安装包,2012R2安装前还需按顺序安装KB2919442,KB2919355补丁


拷贝头节点证书带密钥的pfx版本至计算节点

2018-04-21_143900.png

在windows计算节点上开启HPC pack安装向导,选择建立新计算节点加入现有HPC群集

2018-04-21_143943.png

加入群集处输入头节点名称,若是有多个头节点,能够按照逗号隔开输入

2018-04-21_144011.png

添加证书,并输入证书密码

2018-04-21_144047.png

向导自动为计算节点安装必备组件

2018-04-21_144105.png

安装完成后在头节点群集管理器能够看到节点,当前为未批准状态,在HPC群集中出于安全考虑,防止恶意添加的计算节点进来拷贝群集数据,每一个被添加的计算节点,都必须通过管理员批准后方可加入群集


批准方法能够经过添加节点向导,或分配节点模板,节点模板的概念是指一组规范,凡是添加进来的节点,要选择一种节点模板套入规范,才能够正常加入HPC群集

2018-04-21_145018.png

选择节点模板后,HPC会自动根据咱们的设置,为计算节点套入规范

2018-04-21_145109.png

当全部规范和设定都已经执行完毕,节点变成联机状态,这时候计算节点就能够正常运行做业

2018-04-21_145138.png

咱们能够经过修改节点模板,配置当新加入节点时,须要执行那些操做

2018-04-21_145331.png

2018-04-21_145338.png


2018-04-21_145347.png


2018-04-21_145357.png

将计算节点添加到节点组

2018-04-21_150141.png


微软HPC群集调度模型


在微软HPC群集调度模型中分为做业和任务两个概念,其中做业主要是指对高性能群集资源的预定,一般包括申请的处理器数目,运行做业所须要的节点组,计划运行的时间


做业调度算法


在使用过程当中咱们能够经过API,CMD,Powershell,门户,控制台,对HPC群集提交做业,做业会被记录至HPCScheduler数据库,同时由头节点将做业进行调度,提交做业至关于预约一个资源窗口,在做业包括的时间内能够完成所须要的任务,HPC群集头节点负责维护一个做业队列,若是调度器发现现有资源能够知足队列中的第一个做业最小需求,则将其取出投入运行,不然调度器不作任何工做


做业调度算法例外:当全部正在运行的做业代表了计划运行时间,而当前的空余资源不够队列的第一个做业之最小需求时,能够从队列找出最靠前的一个做业进行调度(backfill),其必须知足

backfill做业也代表了计划运行时间

backfill做业能够置入当前的空余资源

根据当前正在运行的做业能够计算出什么时候才能有足够多的资源供队列中第一个做业运行,该时间距如今的距离必须大于backfill的计划运行时间


任务是描述须要完成的具体工做


HPC群集支持提交空做业,随后为做业附加任务,但任务必须依赖于做业运行

每一个任务只能使用该做业所分配到的资源来完成本身的工做

虽然做业是对应单个程序,但有些程序须要跨多个节点并行运行,所需在任务定义也须要指明最小和最大的资源需求

任务能够明确代表本身须要各节点组,若是有权限也能够直接指定专属节点

任务须要提供程序在计算节点的启动地址,工做目录(工做目录一般会选择一台存储服务器映射至各计算节点相同网盘,用于存放程序文件),及启动该程序所须要的参数

任务定义中能够指定对程序运行过程当中的标准输入,输入出和错误流进行重定向

同一做业中的任务之间能够定义依赖关系


任务调度算法


若是某个任务所依赖的任务都已经被执行完毕或没有任何依赖任务,则该任务进入无依赖状态(调度器内部状态)

每一个做业中都维护一个任务队列,当出现资源空余时,调度器将选择最靠前的一个无依赖状态并可以被容纳在该资源中的任务进行调度



微软HPC群集功能支持


  1. 支持资源分组,默认采用节点组方式进行分组,也能够采用资源池方式进行资源分组

  2. 支持群集节点状态,性能,日志监控

  3. 支持做业调度,任务调度,支持手动控制任务或做业执行

  4. 支持工做组节点做为计算能力

  5. 支持经过API/CMD/Powershell/Console/portal等方式提交做业

  6. 支持执行MPI,MS-MPI是为Windows开发的消息传递接口(MPI)的Microsoft实现,它容许MPI应用程序在HPC群集上做为任务运行

  7. 采用做业模板做为高性能计算群集服务质量限定,能够在做业模板中限定经过此模板执行的做业优先级,可以使用的处理器,节点组,内存,以及可以利用此做业模板申请做业的权限,管理员能够经过建立不一样的做业模板,结合节点组,用户组来对须要不一样质量服务的用户进行分类

  8. 采用节点模板做为添加节点基线,经过配置节点模板,让各新添加的节点符合基线后加入高性能群集,也能够经过在节点模板中封装操做系统 驱动 软件,实现经过头节点PXE批量引导部署计算节点

  9. 和微软其它组件整合,利用Exchange服务器做为邮件通知,利用SCOM,OMS做为群集监控,利用×××S/SSAS/PowerBI配置分析报表,头节点支持WSFC部署,数据库支持Always On或WSFC部署,计算节点支持Azure Paas或Iaas方式部署,受权可使用AD或AzureAD,任务工做目录能够是映射到各结算节点的NFS/SMB网盘,背后能够来自于S2D,传统文件服务器群集或通过2016存储复制的UNC路径。


微软HPC群集能够提交的做业类型


MPI做业:能够选择新建做业新建单任务做业来建立MPI做业,对于运行MPI应用程序的任务,任务命令必须以mpiexec开头:所以,并行任务命令必须采用如下格式:mpiexec [mpi_options] <myapp.exe> [arguments],其中myapp.exe是要运行的应用程序的名称,对于并行任务,Windows HPC Server 2008开始包含基于阿贡国家实验室MPICH2标准的MPI软件包。微软的MPI实现(称为MS-MPI)包括启动程序mpiexec,每一个节点的MPI服务以及用于开发用户应用程序的软件开发工具包(SDK)


参数扫描做业:

参数化扫描做业由同一应用程序的多个实例组成,一般是串行应用程序,并行运行,输入由输入文件提供,输出指向输出文件。输入和输出一般是一组索引文件(例如,input1,input2,input3 ...,output1,output2,output3 ...),它们设置为位于单个公用文件夹或单独的公用文件夹中。任务之间没有沟通或相互依存关系。这些任务可能并行也可能不会并行运行,具体取决于做业运行时群集上可用的资源。


任务流程做业


在任务流做业中,一组不一样的任务按照规定的顺序运行,一般是由于一个任务取决于另外一个任务的结果。做业能够包含许多任务,其中一些是参数化的,一些是串行的,还有一些是并行的。例如,您能够建立一个由MPI和参数化任务组成的任务流做业。您能够经过定义任务之间的依赖关系来肯定运行任务的顺序。


下图说明了任务流做业:

2018-04-21_215144.png

任务1首先运行。请注意,只有任务2和3能够并行运行,由于二者都不依赖于另外一个。任务4在任务2和3都完成后运行。



SOA工做做业

面向服务的体系结构(SOA)是构建分布式,松散耦合系统的一种方法。在SOA系统中,不一样的计算功能被打包为称为服务的软件模块。服务能够分布在整个网络上并由其余应用程序访问。例如,若是应用程序执行重复的并行计算,则核心计算能够打包为服务并部署到群集。这使开发人员可以解决使人尴尬的并行问题,而无需重写低级代码并快速扩展应用程序。经过在多个服务主机(计算节点)之间分配核心计算,应用程序能够更快运行 最终用户在他们的计算机上运行应用程序,群集节点执行计算。


甲客户端应用程序提供了一种用于最终用户访问的一个或多个服务的功能的接口。开发人员能够建立群集SOA客户端应用程序,以提供对部署到Windows HPC群集的服务的访问。在后端,客户端应用程序向群集提交包含服务任务的做业,启动与代理节点的会话,并发送服务请求并接收响应(计算结果)。根据做业调度策略,头节点上的做业调度器将资源分配给服务做业。服务任务的一个实例在每一个分配的资源上运行并加载SOA服务。做业调度程序尝试根据服务请求的数量调整资源分配。


若是客户端建立了持久会话,则代理使用MSMQ存储全部消息。客户端随时能够检索代理存储的回复,即便在有意或无心断开链接后


下图说明了SOA做业在微软HPC群集上的运行方式:

2018-04-21_215412.png


Microsoft Excel计算卸载


包含在HPC Pack的某些版本中的HPC Services for Excel支持许多用于将Excel计算卸载到HPC Pack群集的模型。适用于群集加速的工做簿包括能够并行运行的独立计算。许多复杂和长时间运行的工做簿都是迭代运行的 - 也就是说,它们在不一样的输入数据集上屡次执行单个计算。这些工做簿可能包含复杂的Microsoft Visual Basic for Applications(VBA)函数或计算密集型XLL加载项。HPC Services for Excel支持将工做簿卸载到群集,或将UDF卸载到群集。


经过使Excel 2010 UDF可以在Windows HPC群集中运行,Microsoft Excel 2010将UDF模型扩展到群集。当受支持的群集可用时,用户能够经过选择群集链接器并在“ Excel选项”对话框的“ 高级”选项中指定群集名称来指示Excel 2010使用该群集。在群集中,UDF的工做方式与传统UDF很是类似,只是计算由一台或多台服务器执行。关键的好处是并行化。若是工做簿包含对长时间运行的UDF的调用,则可使用多个服务器同时评估函数。为了在群集上运行,UDF必须包含在群集安全的XLL文件中



微软HPC群集能够提交的任务类型


基本:运行串行应用程序或消息传递接口(MPI)应用程序的单个实例。MPI应用程序一般在多个核心上并发运行,而且能够跨越多个节点

参数扫描:一般在索引输入和输出文件中运行指定次数的命令(以开始,结束和增量值表示)。扫描的步骤可能并行也可能不一样步,具体取决于任务运行时群集上可用的资源。

节点准备:即便在动态添加节点(增加策略)时,也会在每一个计算节点分配给做业时运行命令或脚本。该节点准备任务在工做的任何其余任务前的节点上运行。

若是节点准备任务没法在节点上运行,那么该节点将不会添加到做业中。

节点释放:

即便在节点被动态删除(收缩策略)时,也能够在每一个节点计算每一个节点时运行命令或脚本,由于它是从做业中释放的。

节点发布任务的最长运行时间(以秒为单位)由具备NodeReleaseTaskTimeout群集参数的群集管理员定义。您没法覆盖此运行时间限制。默认状况下,超时设置为15秒。要查看此群集参数的值,能够运行如下命令(搜索字符串区分大小写):cluscfg listparams | find“NodeReleaseTaskTimeout”

节点发布任务在做业被取消时运行。强制取消做业时节点发布任务不运行。

若是做业有最大运行时间和节点发布任务,则做业计划程序将在做业的运行时间到期(做业运行时间减去节点发布任务运行时间)以前取消做业中的其余任务。这容许节点发布任务在分配的做业时间内运行。

服务:

在分配给做业的全部资源上运行命令或服务。将新资源添加到做业时,或者若是先前正在运行的实例退出而且运行的资源仍然分配给做业,则该命令的新实例会运行。服务任务将继续启动实例,直到做业被取消或中止,最大运行时间到期或达到最大实例数(子任务)为止。

经过面向服务的体系结构(SOA)客户端提交的任务做为服务任务运行。

您不能将基本任务或参数扫描任务添加到包含服务任务的做业


定义做业或任务后,能够将做业或任务规范导出到XML文件,下次能够直接从XML导入做业或任务


微软HPC群集做业及任务状态

(实际显示中文,使用英文解释名称更为准确)

Configuring:做业或任务在系统中,但还没有提交到队列中。

Submitted:做业或任务已经提交而且正在等待验证,而后才能排队

Validating:HPC做业计划程序服务正在验证做业或任务。在验证过程当中,HPC做业计划程序服务确认权限,为做业全部者未指定的任何属性应用默认设置,并根据约束验证每一个属性。默认设置和约束由做业模板定义。HPC做业计划程序服务还确认做业属性包含全部任务属性(例如,没有任务的运行时间的值大于做业的运行时间)。

在验证过程当中,做业也可能会经过群集管理员定义的自定义提交筛选器应用程序。

若是做业经过验证,则会移至队列状态。若是做业未经过验证,则做业显示错误消息,做业将转至失败状态。

Queued:做业或任务已经过验证,正在等待安排并激活(运行),当正在运行的做业,基本任务或参数扫描子任务被HPC做业计划程序服务抢占时,它将移回队列状态(除非该任务不可从新运行,在这种状况下,它将标记为失败)。

Dispatching:此状态仅适用于任务。HPC做业计划程序服务已将资源分配给该任务,并正在联系分配的节点以开始运行该任务。当任务开始时,它将转到运行状态。

Running:做业或任务正在一个或多个节点上运行

Finishing:工做或任务已完成,工做或任务清理正在进行中

Finished:工做或任务已成功完成。

Failed:工做或任务已成功完成。做业或任务未能完成,中止运行或返回指示失败的退出代码(默认状况下为非零退出代码)。此外,正在运行的任务在如下状况下标记为失败:

  • 做业全部者或群集管理员取消该任务。

  • HPC做业计划程序服务取消了一项任务,由于它已超过其最大运行时间。

  • HPC做业计划程序服务抢占未标记为可从新运行的任务。

  • HPC做业计划程序服务抢先启动以每一个资源为基础启动的子任务(节点准备,节点发布和服务子任务)。

若是某个做业或任务因为群集故障而没法启动,则该做业或任务会在标记为失败以前自动重试指定次数。

Canceling:工做或任务被取消,清理工做正在进行中

Canceled:做业已被做业全部者,群集管理员或HPC做业计划程序服务取消。例如,HPC做业计划程序服务能够取消做业,若是超过其运行时或做业被抢占。做业全部者或群集管理员在开始运行以前已取消该任务。若是正在运行的任务被取消,则该任务被标记为失败。



用户经过客户端提交做业


HPC pack 2016 客户端安装需求

操做系统:Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2 SP1,Windows 10,Windows 8.1,Windows 8,Windows 7 SP1,支持加入域客户端或工做组

.net framework:要求4.6.1或更高版本,Windows Server 2016,Windows 10 自带,其它操做系统需单独安装,在HPC pack安装文件DotNetFramework目录有安装包,win8,2012R2安装前还需按顺序安装KB2919442,KB2919355补丁,win7sp1,2008R2sp1不须要安装补丁


拷贝安装文件包至客户端,或放在网络路径,开启安装向导,选择仅安装客户端实用工具

2018-04-21_160741.png

安装完成后能够在客户端看到hpc powershell ,hpc 群集管理器, hpc job manager,点击job manager链接到头节点

2018-04-21_161342.png

打开做业管理界面,用户能够在这里将做业提交到高性能群集

权限断定以当前登陆用户,或runas用户为准

通过老王测试,目前HPC pack的客户端若是但愿链接到服务器需加入域才能够,客户端若是未加入域,打开job manager链接到头节点不会成功,若是实在不想每台做业客户端都加入域,能够考虑将一台Server做为网关节点,安装RDSH与HPC pack客户端,把这台机器上面的hpc pack console做为app发布到remoteapp或xenapp解决方案,或工做组客户端直接使用portal,cmd,powershell,api等方式提交做业

2018-04-21_163013.png

本文篇幅有限,老王这里仅作抛砖引玉,并不为你们进行各个做业的建立演示,感兴趣的朋友能够参考连接,本身动手建立做业和任务

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/ff919653(v%3dws.11)



HPC群集管理器实用功能


批量选择节点,运行命令,按照节点输出结果

2018-04-21_222939.png


2018-04-21_223000.png

批量选择节点运行诊断,诊断包含SOA,MPI,Azure节点等自带测试项目

2018-04-21_223047.png

总结:经过本文老王为你们介绍了高性能计算概念,微软对于高性能计算的解决方案,产品的介绍,概念,群集建立,以及群集经常使用设置,一遍走下来看,老王认为微软的HPC群集虽然可能在业界并非性能最好的,可是它也有它的优点,例如和自身产品整合密切,不须要安装多个功能实现HPC,只须要安装一个hpc pack便可,HPC该有的功能相对完备,若是不擅长linux命令的朋友,也能够尝试下使用微软GUI的方式构建HPC群集,但愿能够为感兴趣的朋友带来收获,若是有问题欢迎与老王交流

相关文章
相关标签/搜索