二、保存文件的方式
1、保存小文件:磁盘中分块,每个block大小为1024Byte,每个文件的索引由块号+偏置组成
2、保存大文件:把block换成chunk,每个chunk为64MB.
3、保存超大数据:把chunk放在不同的chunk服务器上,有一个Master服务器存放所有chunk所在的ChunkServer编号。每个chunkserver保存每个chunk在其中的偏移量。
三、ChunkServer和Master服务器
1、如何发现数据损坏
-
每一个block都保存32bit校验信息
2、减少ChunkServer挂掉带来的损失
-
保存额外两个chunk副本
-
选择硬盘利用率低的但是不能把新的chunk都写在一个硬盘上,避免形成热点
-
2+1:跨数据中心,在一个数据中心中放在不同的机架上
3、chunkserver损坏的解决方法:
-
向master报告损坏的数据块
-
master返回其他副本的chunkserver号
-
向最近的副本请求受损chunk
4、如何发现chunkserver挂掉
心跳:定时向master报告存活
5、应对热点
四、读文件过程
五、写文件过程
-
向Master询问chunkserver位置
-
向最近的chunkserver写文件
-
chunkserver之间高速同步(只写在cache里)
-
由主chunkserver发出写命令
-
副本通知主chunkserver写成功
-
通知应用写成功