淘先锋技术网

首页 1 2 3 4 5 6 7

nameNode

1、完全基于内存存储文件元数据、目录结构、文件block的映射

2、需要持久化方案保证可靠性

3、提供副本放置策略

dataNode

1、基于本地磁盘存储block(文件的形式)

2、并保存block的校验和来保证block数据的可靠性

3、与nameNode保持心跳,汇报block列表状态

SecondaryNameNode

1、在非Ha模式下,SNN一般是独立的节点,周期完成对NN的EditLog向FsImage合并,减少EditLog大小,减少NN启动时间

2、根据配置文件设置的时间间隔fs.checkpoint.period 默认3600秒

3、根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB

元数据持久化

1、任何文件系统元数据产生修改的操作,NameNode都会使用一种称为EditLog的事务日志记录下来

2、使用FsImage存储保存所有的元数据状态

3、使用本地磁盘保存EditLog和FsImage

4、EditLog具有完整性,数据丢失少,但恢复速度慢,并有体积膨胀风险

5、FsImage具有恢复速度快,体积与内存数据相当,但不能实时保存,数据丢失多

6、NameNode使用了FsImage+EditLog整合的方案

7、滚动将增量的EditLog更新到FsImage,以保证更近时点额FsImage和更小的EditLog体积

安全模式

1、HDFS搭建时会格式化操作,格式化操作会产生一个新的FsImage

2、当NameNode启动时,它从硬盘中读取EditLog和FsImage

3、当所有的EditLog中的事务作用在内存的FsImage上,并将这个新版本的FsImage从内存中保存到本地磁盘上

4、然后删除旧的EditLog,因为这个旧的EditLog的事务都已经作用在FsImage上了

NameNode启动后会进入一个称为安全模式的特殊状态,客户端只能对hdfs的文件进行读操作,不能进行修改,删除,移动,重命名等操作。每当NameNode检测确认某个数据块的副本数目达到这个最小值,那么该数据块就会被认为是副本安全(safely replicated)的。在一定百分比(这个参数可配置)的数据块被Namenode检测确认是安全之后(加上一个额外的30秒等待时间),Namenode将退出安全模式状态。接下来它会确定还有哪些数据块的副本没有达到指定数目,并将这些数据块复制到其他Datanode上

Block的副本放置策略

第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点

第二个副本:放置在于第一个副本不同的机架的节点上

第三个副本:与第二个副本相同机架的节点

更多副本:随机节点