谷歌大数据论文阅读笔记之GFS

GFS是一个面向大规模数据密集型应用、可伸缩的分布式文件系统,运行在廉价普通硬件设备上,具有灾难冗余的能力。

GFS上存储的文件通常都是大文件,而且对绝大部分文件的修改是采用在文件尾部追加的方式,而不是覆盖原有数据的方式,几乎不存在对文件的随机写入操作。

一个GFS集群包含一个单独的Master节点(逻辑上的概念,包含两台物理主机)和多台Chunk服务器。GFS存储的文件都被分割为固定大小的块,在块创建的时候,Master会为其分配一个唯一、不变的64位标识,Chunk服务器把块以Linux文件的形式保存在本地硬盘上并根据标识和指定的字节范围来读写块数据,默认情况下每个块会复制到3个Chunk服务器上。

Master节点管理所有文件系统的元数据,和系统范围内的活动,元数据包括:命名空间、控制访问信息、文件和块的映射信息、块的位置信息。Master和每个Chunk服务器之间通过心跳信息进行周期地通讯,发指令到Chunk服务器并接收其状态信息。

读写数据时客户端向Master节点询问该联系的Chunk服务器,然后直接和Chunk服务器进行数据读写操作。

块的大小为64M,选择较大尺寸的块的好处:1、减少客户端和Master节点通信的需求,只需要一次和Master的通信就能获取块的位置信息,之后可以对同一个块进行多次多次读写操作,可以和Chunk服务器保持较长时间的TCP连接来减少网络负载;2、较大的块尺寸减少了Master节点需要保存的元数据量,就可以把元数据放在内存中。较大的块尺寸的缺陷:小文件包含较少的块,当有许多客户端对同一个小文件进行多次访问时,存储这些块的Chunk服务器就会变成热点。

Master服务器不持久化保存哪个Chunk服务器保存有哪些块的副本信息,只是在启动时轮询Chunk服务器以获取这些信息

猜你喜欢

转载自blog.csdn.net/xyh1re/article/details/81662838
今日推荐