分布式文件系统——GFS

大数据存储

重要手段:超大规模分布式文件系统
GFS提供了海量非结构化信息的存储平台,并提供数据的冗余备份,成千台服务器的自动负载均衡以及失效服务器检测

文件系统

文件系统时操作系统用于明确存储设备或分区上的文件的方法和数据结构,在存储设备上组织文件的方法。

GFS设计原则

1.采用大量商业PC来构建存储集群,PC的稳定性并没有很高的保障,部分错误不再被当做异常,而是将其作为常见的情况加以处理
2.存储的文件大多是大文件,对大文件的读写操作进行优化。
3.存在大量的“追加写”操作,已经写入的基本不做操作。很少有随机写。
4.绝大多数读文件操作是顺序读。往往读取较大量的数据。

GFS整体构架

唯一的主控服务器(Master),众多的chunk服务器和GFS客户端。
主控服务器:负责整体系统的管理工作。
chunk服务器:负责实际的数据存储并响应客户端的读写请求。
GFS客户端:用户操作
GFS命名空间有众多目录和GFS文件构成,一个GFS文件有众多的固定数据大小的chunk构成,每个chunk又有更小粒度的block
chunk是基本的存储单元,block是基本的读取单元。
chunk:实际存储的时候,文件会被切割成固定大小的数据块,这样的每一块就是一个chunk,每个文件就是由这样的chunk构成的。在chunk 服务器的内部又会把chunk切分为更小粒度的block.

GFS主控服务器

作用:
1.系统元数据存储管理
2.分布式系统的管理
管理的系统元数据:
1.GFS命名空间和chunk命名空间
2.从文件到所属chunk之间的映射关系(因为每个文件都要被切分成众多的chunk,因此系统需要维护这样的映射关系。)
3.chunk在chunk服务器上的映射关系:每个chunk会被复制多个备份,并存储在不同的服务器上
安全性保障:
1.将前两类管理信息记录在系统日志文件内,并且将系统日志存储在多台机器上,避免信息丢失。
2.第三类管理信息通过主控服务器定期询问chunk服务器来维护。
系统管理工作:
1.不同的chunk之间的负载均衡
2.数据备份以及迁移时要考虑chunk数据的可用性,当chunk数据不可用时,即使重新备份;
尽可能的减少网络传输压力
缺点:
系统瓶颈,单点失效。
GFS时典型的主从结构方式,可以采用增加一个影子服务器来解决单点失效的问题。

Colossus:下一代GFS

所进行的改进:
1.将单一的主控服务器改造为哦多主控服务器构成的集群,将所有管理数据进行分片后分配到不同的主控服务器中
2.采用纠删码算法,减少备份数目的情况下达到类似的高可用性要求。
3.GFS在内部管理chunk备份位置,客户端对此是不可见的。新一代增加了客户端的灵活性,使得客户端也可以管理备份数据的存储地点。

纠删码

常见做法:对于热点数据,仍然是有3个备份;而对于冷数据,只保留一个备份,通过纠删码来保证数据的可用性。
原理:通过原始数据进行校验并保留校验数据,以增加冗余的当时来保证数据的可恢复性。
基本思想:将数据文件切割为等长的n个数据块,根据n个数据块,生成m个冗余的校验信息,得到n+m个数据块,如果其中m个数据块丢失,可以通过剩下的n个数据块将其进行恢复。
Reed-Solomon编码
其中设计三个问题:1.计算原始数据的校验字
2.从数据错误中恢复原始数据
3.实现快速计算
存在的问题:如果其中一个数据块损坏,需要其他所有数据块进行共同恢复,需要大量的网络传输和磁盘io才能将其进行恢复。
LRC编码:存在“块局部性”和“最小码距”两个概念。
块局部性:对于某个纠删码来说,要对一个数据块编码,最多需要多少其他数据块,和会u某个数据块时需要的数据块的个数。
最小码距:对于切割成n块的文件,最少损毁多少块数据文件就不可恢复了。
LRC本质上时在RS编码基础上通过数据冗余来换取校验数据的局部性。
Pyramid编码
在组内有多个块失效时,LRC编码仍然需要在全局范围内进行修复,可以将数据块进行更多层次的分组。
层次分组编码:
LRC和Pyramid编码均属于层次分组编码。
思想:将所有数据分为少数几个较大且互不重叠的组,每个组再进一步分成几个若干互不重叠的子组,每组产生一个只与组内数据块相关的局部校验块,整体在产生若干与所有数据快相关的全局校验块。
分组重叠也可以。

纠删码进行数据容错的挑战

1.编码实现
再编码实现完全完成之前保证数据的可靠性。
2.数据修复
降低数据读取量和数据传输量,通过优化修复时的数据读取和数据传输过程。
3.数据更新
需要现将原始数据读取出来,重新计算相应的校验数据,然后写入,数据块关联的校验块较多,需要更新的编码快更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神仙诙谐代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值