GFS chunk 64M 每个chunk 以64kb的块进行划分 ,每块对应一个32位的校验和,放到chunkserver的内存中。
每个chunkserver必须通过维护一个检验和来独立的验证它自己的拷贝的完整性。
为何64M?
1.减少master存储的元数据信息,因为元数据要放到内存以提供快速访问。例如,GFS系统中每个chunk大小为64MB,默认存储3份,每个chunk的元数据小于64字节。那么1PB数据的chunk元信息大小不超过1PB * 3 / 64MB * 64 = 3GB。
2.减少客户端与master的交互。
3.用户可能在一个块上执行操作,客户端与chunkserver保存较长的TCP连接,减少网络带宽。
64kb?
好计算,64M/64kb(这里不清楚)
文件读、 append的校验过程:
1.读文件
客户端向chunkserver发送读数据请求,chunkserver先通过其存储的校验和判断数据是否损坏,如果损坏,则向master报告,master将发出指令将其他节点的正确副本替换掉出错的副本;否则,chunkserver给用户返回正确的数据。
2.append
该操作主要存在数据覆盖的错误,所以在进行append时只增加最后一块的校验值。对于跨chunk边界的记录,边界前后的块都需要校验。
参考:
http://duanple.blog.163.com/blog/static/7097176720109151211526/
1224

被折叠的 条评论
为什么被折叠?



