?
二、保存文件的方式
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寫成功
-
通知應用寫成功
?
?
?