• 沒有找到結果。

实际应用中的集群

在文檔中 Alex && OpenCould 又一个 (頁 33-36)

5. 容错和诊断

6.2 实际应用中的集群

我们现在来仔细评估一下Google内部正在使用的两个集群,它们具有一定的代表性。集群A通常被上百个

工程师用于研究和开发。典型的任务是被人工初始化后连续运行数个小时。它通常读取数MB到数TB的数 据,之后进行转化或者分析,最后把结果写回到集群中。集群B主要用于处理当前的生产数据。集群B的任 务持续的时间更长,在很少人工干预的情况下,持续的生成和处理数TB的数据集。在这两个案例中,一个 单独的”任务”都是指运行在多个机器上的多个进程,它们同时读取和写入多个文件。

6.2.1 存储

如上表前五行所描述的,两个集群都由上百台Chunk服务器组成,支持数TB的硬盘空间;两个集群虽然都 存储了大量的数据,但是还有剩余的空间。“已用空间”包含了所有的Chunk副本。实际上所有的文件都复 制了三份。因此,集群实际上各存储了18TB和52TB的文件数据。

两个集群存储的文件数量都差不多,但是集群B上有大量的死文件。所谓“死文件”是指文件被删除了或者 是被新版本的文件替换了,但是存储空间还没有来得及被回收。由于集群B存储的文件较大,因此它的 Chunk数量也比较多。

6.2.2 元数据

Chunk服务器总共保存了十几GB的元数据,大多数是来自用户数据的、64KB大小的块的Checksum。保 存在Chunk服务器上其它的元数据是Chunk的版本号信息,我们在4.5节描述过。

在Master服务器上保存的元数据就小的多了,大约只有数十MB,或者说平均每个文件100字节的元数 据。这和我们设想的是一样的,Master服务器的内存大小在实际应用中并不会成为GFS系统容量的瓶颈。

大多数文件的元数据都是以前缀压缩模式存放的文件名。Master服务器上存放的其它元数据包括了文件的 所有者和权限、文件到Chunk的映射关系,以及每一个Chunk的当前版本号。此外,针对每一个

Chunk,我们都保存了当前的副本位置以及对它的引用计数,这个引用计数用于实现写时拷贝(alex注:

即COW,copy-on-write)。

对于每一个单独的服务器,无论是Chunk服务器还是Master服务器,都只保存了50MB到100MB的元数 据。因此,恢复服务器是非常快速的:在服务器响应客户请求之前,只需要花几秒钟时间从磁盘上读取这 些数据就可以了。不过,Master服务器会持续颠簸一段时间–通常是30到60秒–直到它完成轮询所有的 Chunk服务器,并获取到所有Chunk的位置信息。

6.2.3 读写速率

表三显示了不同时段的读写速率。在测试的时候,这两个集群都运行了一周左右的时间。(这两个集群最 近都因为升级新版本的GFS重新启动过了)。

集群重新启动后,平均写入速率小于30MB/s。当我们提取性能数据的时候,集群B正进行大量的写入操 作,写入速度达到了100MB/s,并且因为每个Chunk都有三个副本的原因,网络负载达到了300MB/s。

读取速率要比写入速率高的多。正如我们设想的那样,总的工作负载中,读取的比例远远高于写入的比 例。两个集群都进行着繁重的读取操作。特别是,集群A在一周时间内都维持了580MB/s的读取速度。集 群A的网络配置可以支持750MB/s的速度,显然,它有效的利用了资源。集群B支持的峰值读取速度是 1300MB/s,但是它的应用只用到了380MB/s。

6.2.4 Master服务器的负载

表3的数据显示了发送到Master服务器的操作请求大概是每秒钟200到500个。Master服务器可以轻松的 应付这个请求速度,所以Master服务器的处理能力不是系统的瓶颈。

在早期版本的GFS中,Master服务器偶尔会成为瓶颈。它大多数时间里都在顺序扫描某个很大的目录(包 含数万个文件)去查找某个特定的文件。因此我们修改了Master服务器的数据结构,通过对名字空间进行 二分查找来提高效率。现在Master服务器可以轻松的每秒钟进行数千次文件访问。如果有需要的话,我们 可以通过在名称空间数据结构之前设置名称查询缓冲的方式进一步提高速度。

6.2.5 恢复时间

当某个Chunk服务器失效了,一些Chunk副本的数量可能会低于复制因子指定的数量,我们必须通过克隆 副本使Chunk副本数量达到复制因子指定的数量。恢复所有Chunk副本所花费的时间取决于资源的数量。

在我们的试验中,我们把集群B上的一个Chunk服务器Kill掉。这个Chunk服务器上大约有15000个 Chunk,共计600GB的数据。为了减小克隆操作对正在运行的应用程序的影响,以及为GFS调度决策提 供修正空间,我们缺省的把集群中并发克隆操作的数量设置为91个(Chunk服务器的数量的40%),每 个克隆操作最多允许使用的带宽是6.25MB/s(50mbps)。所有的Chunk在23.2分钟内恢复了,复制的 速度高达440MB/s。

在另外一个测试中,我们Kill掉了两个Chunk服务器,每个Chunk服务器大约有16000个Chunk,共计 660GB的数据。这两个故障导致了266个Chunk只有单个副本。这266个Chunk被GFS优先调度进行复 制,在2分钟内恢复到至少有两个副本;现在集群被带入到另外一个状态,在这个状态下,系统可以容忍 另外一个Chunk服务器失效而不丢失数据。

在文檔中 Alex && OpenCould 又一个 (頁 33-36)

相關文件