扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共3页)
二、 大规模集群计算与网络架构
集群计算很早就广泛应用了,只是在不同的领域有着不同的表现形式,或者说有不同的术语,如在科学计算领域的并行计算或高性能计算当前主要以集群计算的方式实现。集群通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作,在某种意义上,集群可以被看作是一台计算机。
人们使用集群的目的是为了获得强大的计算能力,虽然这可以通过购买具备超级计算能力的大型机来实现,但是在成本投入上是巨大的。对于一般计算机,计算能力是有限的,虽然摩尔定律说计算能力每18个月可以翻一番,但要达到大型机的性能,很长一段时间内是难以实现的(摩尔定律被普遍认为在过去30年相当有效,未来10~15年应依然适用)。因此,为突破摩尔定律的限制,将多台低成本计算机通过集群方式,以并行计算来获取更大的计算能力,成为各种追求高性能计算领域的主流方向(如图8所示)。
图8 以集群架构超越摩尔定律
以互联网应用为例,有的计算服务要求提供超级计算能力,如大型搜索引擎的构建,就是大量服务器群共同协作实现的巨量计算。
科研领域并行计算的主流技术是MPI(Message Passing Interface),但以支持Fortran、C语言的科学计算为优势。云计算领域的代表性技术是Hadoop(还有其它类似的分布式计算技术),突出商用的扩展性架构、大数据量处理,大大简化开发难度,屏蔽系统底层的复杂性。
Hdoop是目前在互联网使用广泛的一种云计算支撑架构,借助于Hadoop, 程序员可以轻松地编写分布式并行程序,将其运行于大型计算机集群上,完成海量数据的计算。图9是当前广为流传的Hadoop分布式文件系统体系架构模型,这一类的集群架构将服务器按群分置不同角色群,角色协同完成大规模计算任务。
图9 Hadoop分布式文件系统体系架构
这些角色包括NameNode,它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。DataNode 响应来自 HDFS 客户机的读写请求。NameNode 与每个 DataNode 有定期心跳(heartbeat)消息检查健康性。
分布式文件系统的设计需求对应到网络的架构上主要有:并发吞吐性能、可伸缩性、容错需求等。
HDFS的目标就是构建在大规模廉价机器上的分布式文件系统集群,一个文件可以表示为其内容在不同位置的多个拷贝。这样做带来了两个好处:访问同个文件时可以从多个服务器中获取从而改善服务的伸缩性,另外就是提高了容错能力,某个副本损坏了,仍然可以从其他服务器节点获取该文件。同时集群内部还通过心跳检测、集群的负载均衡等特性提升容错性。
传统HDFS采用一种称为rack-aware的策略来改进数据的可靠性、有效性和网络带宽的利用,典型的组网逻辑如图10所示(也是流传比较广泛的一张图,笔者未加修改)。
图10 经典的Hadoop组网结构
图10中每个交换及所接服务器被安装在数据中心的同一个机架(rack)内,该交换机称为Top of rack switch,典型情况下每个机架内部署40台服务器(国外比较流行,国内当前达到这样密度的IDC很少),一般采用48千兆端口的交换机,传统设计中会采用4个到8个千兆上行,因此每个机架上行的带宽收敛比一般在5:1~10:1。
不同机架间的两台机器的通讯需要通过交换机,显然通常情况下,同一个机架内的两个节点间的带宽会比不同机架间的两台机器的带宽大。因此Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。
通过一个称为Rack Awareness的过程,Namenode决定了每个Datanode所属的rack id。一个简单但没有优化的策略就是将副本存放在单独的机架上。这样可以防止整个机架(非副本存放)失效的情况,并且允许读数据的时候可以从多个机架读取。这个简单策略设置可以将副本分布在集群中,有利于组件失败情况下的负载均衡。但是,这个简单策略加大了写的代价,因为一个写操作需要传输block到多个机架。
为了降低整体的带宽消耗和读延时,HDFS会尽量让reader读最近的副本。如果在reader的同一个机架上有一个副本,那么就读该副本。如果一个HDFS集群跨越多个数据中心,那么reader也将首先尝试读本地数据中心的副本。
HDFS支持数据的均衡分布处理,如果某个Datanode节点上的空闲空间低于特定的临界点,那么就会启动一个计划自动地将数据从一个Datanode搬移到空闲的Datanode。当对某个文件的请求突然增加,那么也可能启动一个计划创建该文件新的副本,并分布到集群中以满足应用的要求。
我们可以看到,Hadoop系统在开发过程中关注了数据交换对象(计算节点)之间的距离,实际上是考虑了网络构建模型中带宽不匹配因素。这种因素的引入,不仅编程人员需要关心,业务部署人员、网络维护人员也都要关心,在小规模环境下还能够勉强运行,但是如果要支持全互联网级的大规模应用,集群可能达到数千台、数万台,业务的部署、扩展、运行、支撑都会存在很多问题。如图11是一种高扩展要求的集群模型,这类集群应用自身是分层架构,每一层应用都是一个大规模集群,采用传统方式构建交换网络,必将存在诸多限制,无法发挥云计算巨型计算的服务能力。
图11 大规模集群架构
随着网络交换万兆技术的发展和设备成本的不断降低,目前大规模集群的构建也发展到新的阶段,需要新的网络结构来支持和运行:
l 无阻塞网络架构:满足集群环境中所有服务器的对等通信要求,任意节点之间可以达到相等带宽(当前是以千兆为主),服务器应用程序不再关注数据交互节点是在一个机架内还是在其它机架。
l 大规模集群能力:当前2千台规模的服务器集群已经在互联网行业广泛部署,随着云计算业务的开发提供,更大规模的集群(5000-1万台)将成为支持云计算的主流网络结构,无阻塞架构是这种网络的基本要求。
l 足够扁平化的架构:所谓扁平化就是极大减少组网结构层次,目前数据中心扁平化结构以两层物理网络为主流。在还是千兆为主的服务器端口条件下,接入交换机的用户端口数一般为48个千兆,要满足无阻塞的跨机架带宽,则上行带宽需要5个万兆(当然也可以只使用40个千兆接入,4个万兆上行),而核心交换则需要高密的万兆(>120)全线速能力。
图12是一种新的无阻塞网络模型,也被称为CLOS组网结构。在接入层交换机当前可达到50个千兆端口(常规是48,可用两个万兆自适应千兆),无阻塞上行5个万兆到5台高密万兆核心设备,当核心万兆密度超过140端口,则整个集群规模可达到7000台服务器。网络规划上将二层终结在接入层,使用等价路由将接入交换机的上行链路带宽进行负载分担,从而可以实现整个网络的无阻塞交换,任意服务器端口之间可以具有千兆线速的能力,完全消除了云计算集群内部的带宽限制因素。
图12 大规模无阻塞集群网络
消除了带宽限制的无阻塞集群,应用内部交换数据变得足够灵活,数据访问不再受限于服务器的物理位置,将使得数据中心的流量在大范围内流动(如图13所示)。以无阻塞网络构建的大规模计算群,更有利于云计算性能的充分发挥。
图13 大规模集群的大范围流量交换
三、 结束语
云计算的大规模运营,给传统网络架构和传用应用部署经验都带来了挑战,新一代网络支撑这种巨型的计算服务,不论是技术革新还是架构变化,都需要服务于云计算的核心要求,动态、弹性、灵活,并实现网络部署的简捷化。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。