失效链接处理 |
google file system论文阅读 PDF 下载
本站整理下载:
相关截图:
![]()
主要内容:
1 GFS概述
GFS(全称Google File System),它是Google为了满足迅速增长的数据处理需求而设计并实现的分布式文件系统。
GFS用于大型的、分布式的、对大量数据进行访问的应用。虽然运行于廉价的普通硬件上,但可以提供容错功能,并给大量的用户提供总体性能较高的服务。
2设计方向
1.由于机器种类繁杂且不可靠,组件错误不应该再被当作异常,而是将其作为常见的情况加以处理。持续监控、错误检测、容错和自动恢复必须是系统的一部分。
2.设计中操作的参数、块的大小必须要重新考虑。对大型的文件的管理一定要能做到高效,对小型的文件也必须支持,但不必优化。
3.大部分文件的更新是通过添加新数据完成,而不是改变已存在的数据。
4.工作量主要由两种读操作构成:对大量数据的流方式的读操作和对少量数据的随机方式的读操作。
5.工作量还包含许多对大量数据进行的、连续的、向文件添加数据的写操作。所写的数据的规模和读相似。一旦写完,文件很少改动。 在随机位置对少量数据的写操作也支持,但不必非常高效。
6.系统必须高效地实现定义完好的大量客户同时向同一个文件的添加操作的语义。
7.当需要做出取舍时,应该选择高数据吞吐量而不是低延时。
3整体架构
GFS集群由单个master和多个chunkservers组成,并由多个客户端访问,如图1所示。只要在机器资源允许的情况下,可以同时在同一台机器上运行块服务器和客户端。
通信步骤:
1.客户端通过文件名、块索引向master发送查询请求
2.master返回块句柄和块所在的位置(chunkservers)
3.客户端缓存信息,一般而言向最近的chunkservers发送请求
4.chunkservers返回数据
5.期间master和chunkservers一直交互
4几点思想总结
1.文件以块形式存储,用全局唯一的64位块句柄标志,每个块都被复制到多个块服务器上,默认三个副本,每个块大小为 64MB 。
2.主服务器维护所有文件系统元数据。包括命名空间、访问控制信息、从文件到块的映射以及块的当前位置。它还控制整个系统的活动,如块租赁管理、孤立块的垃圾收集以及块服务器之间的块迁移。主服务器在心跳消息中定期与每个块服务器通信,给其指令并收集其状态。所有元数据都保存在主服务器的内存中。
3.应用程序通过GFS客户端与master和chunkservers通信。客户端与master交互修改元数据,与chunkservers交互来进行承载实际数据的通信。客户端询问master应该联系哪个chunkservers,并缓存相关信息,后续直接与chunkservers交互。
4.客户端和chunkservers都不缓存文件数据。客户端有元数据缓存。
5.master的内存容量会限制整个系统的容量,不过扩容master的内存相对而言代价并不高
6.master不持久化块位置信息,而是在启动时从chunkservers上获取。
7.master通过重放操作日志来恢复其文件系统状态。创建checkpoint需要时间,此时可以在新线程新日志继续创建checkpoint。
8.通过master与chunkservers的握手拉检测chunkservers的失效,通过检测校验和判断数据是否损坏
9.使用租约维持跨副本一致性。master授予块租约给其中一个副本,成为主副本,主副本再指定串行的变更顺序,所有其他副本遵循相同的顺序。流程举例如下:
|