【系统设计】笔记10 GFS

funblogs12152023 / 2024-02-27 / 原文

分布式系统

谷歌三剑客

Distributed File System(Google FIle System)

  如何有效存储数据? Nosql底层需要一个文件系统

Bigtable = Nosql database

  怎么链接底层存储和上层数据

Map Reduce

  怎么快速处理数据

 

GFS C++ Google

HDFS Java Yahoo

 

scenario

用户写入一个文件,用户读取一个文件。 >1000T

多台机器存储

 

service

client + server

社会主义: client找任何一个机器,平级

peer 2 peer: 优势,一台机器挂了还可以工作。劣势,多台机器需要经常通信保持数据一致

资本主义: master + slave ✅

优势,simple design,数据容易一直。劣势, 单master挂(重启)

 

storage

大文件存在哪?硬盘,内存存不下

怎么设计GFS?

  metadata访问常常多余内容的访问。

  ✅文件metadata....(反应速度快) + 实际内容... or 穿插(找metadata寻轨时间长)

  机械硬盘,磁头到某一轨道需要寻轨时间

  

  文件内容1+2+3... or ✅文件内容1-1 + 1-2 + 2-1 + 2-2 + 1-3... (方便修改,顺次写)

  频繁修改文件,要删掉重新找位置。

metadata 

file info: name = xx.mp4, createdTime = xxx, size = xx, index block11 ->diskOffset1, block12 -> diskOffset2...

blocks 1block = 4kb = 4096 bytes  

 

100T文件,block数量太多了

增加block大小 1chunk = 64M = 64*1024k    (4k -> 64k)

pros: reduce size of metadata, cons: waste space for small files

 

10P文件

1台服务器最多插10个硬盘, 10 * 10T = 100T = 0.1P

100台

master - slave通讯模式 one master + many slave servers(chunk servers)

master: 

  meta data: name, createTime, size

  index: chunk01 -> cs5 chunk02 -> cs5 chunk03 -> cs5 ...(节省master存储空间)

slaveServer5: 

  index: xx.mp4-chunk-01-offset3, xx.mp4-chunk-01-offset5 (节省通讯成本)

  offset1.. offset3: xx.mp4-chunck-01

 

master存储10P文件的metadata需要多少容量: 1 chunk = 64MB needs 64B 的meta data, 10 P needs 10G meta data(内存存的下)

 

How to write a file?

一次写入 or ✅拆分成多份多次写入(写入过程出错,可以重新传一下一小部分)

每一份传输大小单位是chunk

 

chunk怎么写入server?

直接写到chunk server or ✅先和master沟通,再写入chunk server