【大数据】分布式文件系统GFS | 纠删码 | 复习笔记
基本概念
-
首先理解一下文件系统(file system)
是一种存储设备上存储文件的方法。难理解就像自己电脑里好多盘,每个盘里下面有很多文件,这就是一种文件系统,不一样的是GFS用了很多服务器
GFS封装了集群管理细节和存储映射细节 -
主要抓四个特点:
- 海量非结构化信息存储(因为原先是google为存储网页信息的)
- 数据冗余备份
- 自动负载均衡
- 失效服务器检测
- 设计原则:
- 对部件错误习以为常,所以有特点里的2和4
- 对大文件读写进行了优化(这是针对网页的)
- “追加写”而不是”随机写“(针对大数据)
- ”顺序读“
整体架构 三个部分:
-
主控服务器Master
存储三类信息:
- GFS和chunk
- 文件和chunk
- chunk和chunk
前两类存储在系统日志里,且分别存贮在多台机器上,第三个通过主控服务器的定期询问来维护
主要职责:系统管理。要保证负载均衡,创建chunk以及回收。数据备份及迁移时注意两点:一是这个chunk是否可用,二是减少网络压力
主从结构使Master成为系统瓶颈,于是GFS增加了Shadow,后面Colossus也做了一些修改
-
chunk服务器
每个文件被划分为多个固定大小的chunk(通常一个chunk大小64MB),一个chunk被切割为更小的Block
其中,chunk使基本存储单元,block是基本读取单元(这只是GFS的办法,其他存储系统也有把block作为基本存储单元的)
换分为固定大小的块的好处:便于利用存储空间;安全;速度快 -
客户端:用户操作
偷两个老师的图~
Colossus
三个改进:
- 单一主控服务器 ->多主控服务器集群(更多内存,更多文件)
- 备份 -> 纠删码
- 增加客户端灵活性
纠删码Erasure Code
热点数据仍保留3个备份,冷数据只保留1份备份,通过纠删码保证数据的可用性
-
RS编码
m个数据块,n个校验块,最多容忍n个数据损失 -
LRC编码(层次分组编码)
RS编码的问题:需要同组所有的数据块才能恢复。LRC提出的解决方法是将所有的块分为全局校验块(Global Parity Block)和局部校验块(Local Parity Block),故障恢复时分组计算。
两个概念:块局部性、最小码距
通过LRC编码,局部校验块可以在局部完成恢复。
LRC本质上是在RS编码基础上通过增加数据冗余来换取校验数据的局部性。
LRC同时带来了一个特点:m+n个数据块中,在一定情况下,丢失大于n个的数据块也可以恢复。 -
Pyramid编码(层次分组编码)
在LRC上增加更多的分组 -
层次分组编码
分组重叠可以吗
- 纠删码进行数据容错的挑战:
- 编码实现
- 数据修复
- 数据更新
纠删码是以CPU运算和网络负载为代价的,所以这也是它应用在冷数据上的原因
- 关于纠删码的优秀总结
本文地址:https://blog.csdn.net/m0_46201214/article/details/111005356