最近被问到分布式系统的共享方式,结合之前学过的黄铠老师的书稍微说几句。
各种分布式系统,不管是Hadoop,SMP,MPP还是其他巴拉巴拉的东西,共享资源的方式不外乎以下三种,见下图。该图最早来自黄铠老师的论文(K.Hwang,Z.Xu, Support of clustering and availability),我重新画了下,各部分含义如下:P/C处理器和缓存,M内存,D磁盘,NIC网卡,MIO内存-IO桥。当然图只是一个示意,实际构建系统的时候可能有变化。
a)不共享结构。大多数集群采用这种结构,节点间通过以太网等局域网方式简单连接。最常见的例子就是Hadoop。这种结构最大的优势就是扩容的成本非常低,只需要简单增加机器并做网络连接即可,集群的可用性也非常高。缺点也非常明显,所谓的不共享不代表不交换数据,而一旦需要交换数据,计算速度必然受影响,因此在同等节点配置下,这种集群必然是最慢的。常用Hadoop的哥们估计早就被shuffle搞得仙仙欲死了,Hadoop M/R最被诟病的一点就是shuffle的巨大开销了(外加shuffle前数据还要被写回HDFS,悲剧)。之后