NameNode(主)
就是是Master,它相当于是一个主管(管理者)
- 管理HDFSD的名称空间
- 配置副本策略
- 管理数据块(Block)映射信息(存储一些块信息)
- 处理客户端的读写操作 NameNode就是维护着HDFS的目录树结构,NameNode(基于内内存),不会和磁盘发生交互操作,只在内 存中完成
每次Namenode启动都会加载metadata信息到内存中以便提供访问操作 NameNode中会存储着metadata有 文件权限,所属人,文件大小 ,时间,Block列表信息, Block的偏移量,位 置信息
因为NameNode为了方便操作提高效率.NameNode是基于内存的,所以会出现一个通病"掉电易失"
Namenode会记录client对Datanode的操作信息和Datanode中快信息,如果"掉电易失",无法完成对当前 信息的记录工作了
SecondaryNameNode --> 帮组NameNode做磁盘操作
存储在次磁盘中东西
metadata存储早磁盘中名字是"fsimage" 对Datanode进行擦做,增删改查操作以日志的形式记录 edits(edit log对DataNode操作日志)
DataNode(从)
是slaveNamoNode下达的命令,DataNode来进行实际的执行操作(即具体文件数据的存储) Hadoop 2.x 版本 --> 存储文件块信息都是128MB
- 存储实际的数据块
- 执行数据块的读写操作
BdataNode就是Block真正存储的地方,DataNode就是就是一个本地磁盘以文件形式存储了Block块的信 息,同时还存储Block的原数据信息文件
HDFS启动的时候 DataNode会想NameNode汇报Block块信息
DataNode通过向NameNode发送心跳信息与其保持联系(3秒),如果NameNode10分钟没有收到 DataNode的心跳信息,则认为当前DataNode已经宕机(lost),启动其他dataNode去复制当前宕机的 DataNode中所有块信息
工作机制
SecondaryNameNode
ps:SecondaryNameName并不是NameNode的备份
SecondaryNameNode主要是负责对NameNode中fsimage和edits文件尽心合并操作,并将合并好的文 件推还给NameNode
fsimage的产生有两种情况
第一种:当NameNode格式化成功后,并且启动成功会产生第一个fsimage文件(只产生一次)
第二种.已经存在fsimage文件并且NameNode启动的时候 会产生一个空的日志文件,Edits文件,这个文件 会记录着客户端对dataNode所有操作日志,SecondaryNameNode会对NameNode中产生fsimage和 Edits进行合并从操作,并产生新的fsimage文件推还给NameNode做备份使用
相关配置
第一个就是间隔时间 默认时间 3600秒 SecondaryNameNode就会想Namenode发送CheckPoint请求
第二个就是当前edits文件大小达到 64MB SecondaryNameNode就会想Namenode发送CheckPoint 请求
满足一个即可
可以在hdfs-site.xml 进行修改 name --> fs.checkpooint.period --> 可以修改 默认是3600
name --> fs.checkpoint.size --> 可以修改 默认是 64
Fsimage & Edits
Namenode在格式化之后,会在配置的目录下产生文件
默认配置是:在hadoop根目录下的data/dfs/name/current fimage_00000000000000000000
fsimage_00000000000000000000.md5
edits_00000000000000000000 seen_txid
VERSION
- Fsimage:HDFS文件系统中元数据的一个永久性的检查点(备份),启动包含了HDFS文件系统的suoyo9u 目录和文件inode的序列化信息,md5是fsimage的验证信息码
- edits:HDFS系统对datanode的所有的增删改查操作,就是客户端对datanode的操作记录 3.seen_txid: 文件保存的一个数字,后一个edits_的数字值 4.VERSION 版本内信息号, 相当于是当前 edits和fsimage的 版本信息