存储模型:字节
文件线性切割-block:偏移量 offset(理解为到存储起点的距离)
fig.1
以上图为例,假设第一个块的起始地址为0,块大小为20,那么第二个块的偏移量为20,除了最后一个块,块的大小是一致的。
block分散存储在集群节点中
单一文件block大小一致,文件与文件可以不一致
block可以设置副本数,副本无需分散在不同节点中(副本数不超过节点数量),但最好分散到不同节点中。副本的作用是保证数据的完整性、可靠性。副本数越多对于计算型数据的成功率越大。
文件上传可以设置block大小和副本数
已上传的文件block副本数可以调整,大小不变。
只支持一次写入多次读取,同一时刻只有一个写入者。
可以append追加数据。
block的副本放置策略
fig.2第一个副本:放置在上传文件的DN;如果集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点。
第二个副本:放置于第一个副本不同的机架上的节点上。
第三个副本:与第二个副本相同机架的节点
更多副本:随机节点
架构模型
文件元数据MetaData,文件数据
元数据(例如文件的大小,修改时间),描述数据时所使用的数据。
数据本身
(主)NameNode节点保存文件元数据:单节点, posix
(从)DataNode节点保存文件Block数据:多节点
DataNode与NameNode保持心跳,提交Block列表
HdfsClient与NameNode交互元数据信息
HdfsClient与DataNode交互文件Block数据(cs)
DataNode利用服务器本地文件系统存储数据块
网友评论