更新时间:2023-03-16 19:53
一个分布式系统包括若干通过网络互联的计算机。这些计算机互相配合以完成一个共同的目标(我们将这个共同的目标称为“项目”)。具体的过程是:将需要进行大量计算的项目数据分割成小块,由多台计算机分别计算,再上传运算结果后统一合并得出数据结论。在分布式系统上运行的计算机程序称为分布式计算程序;分布式编程就是编写上述程序的过程。简单的来说,采用分布式计算的一组计算机组成的系统,叫做分布式计算系统。
根据分布式系统的应用类型,可划分出3种分布式系统。
分布式计算系统:可以进行高性能科学计算
分布式信息系统:主要负责信息管理和事务处理
分布式普适系统:在嵌入式应用领域应用广泛。
由此可见分布式计算系统是分布式系统的一种类型。
计算机网格系统之间是异构的,是因为,在单个计算内部,各个之间的工作是分层次的,形似osi的七层模型,各层之间提供api相互进行邻层的调用,但是各层内部的构成是地外透明的;
网格协议建立在互联网协议之上,以互联网协议中的通信、路由、名字解析为基础。五层协议的网格体系结构分为光纤层、连接层、资源层、汇集层和应用层共五层。每层都可以有自己的服务、API和SDK,或者服务、APl和SDK中的部分。在这种层次结构中,上层协议的实现调用下层提供的功能。网格内的全局应用都通过协议提供的结构调用网格管理软件的功能。
光纤层(Fabric),又叫做构造层。控制局部的资源,提供所需的接口。
连接层(Connectivity),由通信协议组成,支持网格事物的处理,延伸多个资源的使用。
资源层(Resource),管理、共享单一资源。
汇集层(Collective),汇集层负责对多个资源的访问,协调各种资源。
应用层(Application)为网格上用户的应用程序层,在虚拟组织环境中存在。
沙漏形状的五层结构
五层沙漏结构是一个抽象层次结构,它的一个重要特点就是构成一个“沙漏”形状。在沙漏结构中,资源层和连接层共同组成沙漏的瓶颈部分,为网格计算提供底层的通信、安全以及局部的资源管理。不同的高层(沙漏的顶部)行为映射到它们的上面,它们自身也能被映射到不同的基本技术之上(沙漏的底部),显然瓶颈部分的核心协议的数量较少。较少的核心协议有利于移植,也比较容易地实现和得到支持。
(1)简单地,网格与传统集群的主要差别是网格是连接一组相关并不信任的计算机,它的运作更像一个计算公共设施而不是一个独立的计算机。网格通常比集群支持更多不同类型的计算机集合。
(2)网格本质上就是动态的,集群包含的处理器和资源的数量通常都是静态的。在网格上,资源则可以动态出现,资源可以根据需要添加到网格中或从网格中删除。
(3) 网格天生就是在本地网、城域网或广域网上进行分布的。网格可以分布在任何地方。而集群物理上都包含在一个位置的相同地方,通常只是局域网互连。集群互连技 术可以产生非常低的网络延时,如果集群距离很远,这可能会导致产生很多问题。物理临近和网络延时限制了集群地域分布的能力,而网格由于动态特性,可以提供 很好的高可扩展性。
(4)集群仅仅通过增加服务器满足增长的需求。然而,集群的服务器数量、以及由此导致的集群性能是有限的:互连网络容量。也就是说如果一味地想通过扩大规模来提高集群计算机的性能,它的性价比会相应下降,这意味着我们不可能无限制地扩大集群的规模。 而网格虚拟出空前的超级计算机,不受规模的限制,成为下一代Internet的发展方向。
(5)集群和网格计算是相互补充的。很多网格都在自己管理的资源中采用了集群。实际上,网格用户可能并不清楚他的工作负载是在一个远程的集群上执行的。
尽管网格与集群之间存在很多区别,但是这些区别使它们构成了一个非常重要的关系,因为集群在网格中总有一席之地—— 特定的问题通常都需要一些紧耦合的处理器来解决。然而,随着网络功能和带宽的发展,以前采用集群计算很难解决的问题可以使用网格计算技术解决了。
(1)并行计算借助并行算法和并行编程语言能够实现进程级并行(如MPI)和线程级并行(如openMP)。而分布式计算只是将任务分成小块到各个计算机分别计算各自执行。
(2)粒度方面,并行计算中,处理器间的交互一般很频繁,往往具有细粒度和低开销的特征,并且被认为是可靠的。而在分布式计算中,处理器间的交互不频繁,交互特征是粗粒度,并且被认为是不可靠的。并行计算注重短的执行时间,分布式计算则注重长的正常运行时间。
(3)联系,并行计算和分布式计算两者是密切相关的。某些特征与程度(处理器间交互频率)有关,而我们还未对这种交叉点(crossover point)进行解释。另一些特征则与侧重点有关(速度与可靠性),而且我们知道这两个特性对并行和分布两类系统都很重要。
(4)总之,这两种不同类型的计算在一个多维空间中代表不同但又相邻的点。
得到广泛使用的三大分布式计算系统是Hadoop,Spark和Storm。
由于Google没有开源Google分布式计算模型的技术实现,所以其他互联网公司只能根据Google三篇技术论文中的相关原理,搭建自己的分布式计算系统。
Yahoo的工程师Doug Cutting和Mike Cafarella在2005年合作开发了分布式计算系统Hadoop。后来,Hadoop被贡献给了Apache基金会,成为了Apache基金会的开源项目。Doug Cutting也成为Apache基金会的主席,主持Hadoop的开发工作。
Hadoop采用MapReduce分布式计算框架,并根据GFS开发了HDFS分布式文件系统,根据BigTable开发了HBase数据存储系统。尽管和Google内部使用的分布式计算系统原理相同,但是Hadoop在运算速度上依然达不到Google论文中的标准。
不过,Hadoop的开源特性使其成为分布式计算系统的事实上的国际标准。Yahoo,Facebook,Amazon以及国内的百度,阿里巴巴等众多互联网公司都以Hadoop为基础搭建自己的分布式计算系统。
Spark也是Apache基金会的开源项目,它由加州大学伯克利分校的实验室开发,是另外一种重要的分布式计算系统。它在Hadoop的基础上进行了一些架构上的改良。Spark与Hadoop最大的不同点在于,Hadoop使用硬盘来存储数据,而Spark使用内存来存储数据,因此Spark可以提供超过Hadoop100倍的运算速度。但是,由于内存断电后会丢失数据,Spark不能用于处理需要长期保存的数据。
Storm是Twitter主推的分布式计算系统,它由BackType团队开发,是Apache基金会的孵化项目。它在Hadoop的基础上提供了实时运算的特性,可以实时的处理大数据流。不同于Hadoop和Spark,Storm不进行数据的收集和存储工作,它直接通过网络实时的接受数据并且实时的处理数据,然后直接通过网络实时的传回结果。
Hadoop,Spark和Storm是最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据分析处理,Spark常用于离线的快速的大数据处理,而Storm常用于在线的实时的大数据处理。