NameNode详解
- 管理DataNode和记录元数据Meta
- 元数据包含:
a. 记录数据的虚拟存储路径
b. 记录文件的切块数量
c. 记录数据块的存储位置
d. 记录数据块的复本数量
e. 记录文件权限
- 元数据的大小是在150B左右
- NameNode将元数据维系在内存以及磁盘中
- 元数据维系在内存中的目的是为了快速查询
- 元数据维系在磁盘中的目的是为了崩溃恢复
- 元数据的存储位置是由hadoop.tmp.dir属性决定,如果不配置则默认使用/tmp
- 元数据在磁盘中是以edits文件和fsimage文件的形式存在
a. edits:记录写操作
b. fsimage:记录元数据。fsimage中的元数据和内存中的元数据并不是同步的
NameNode的运行流程
- 当NameNode接收到写请求之后,会先将该请求记录到edits_inprogess文件中,如果记录成功,则将该请求同步更新到内存中,修改内存中的元数据,内存修改完成之后会给客户端返回一个ack表示成功
- 在HDFS中,会给每一次的写操作分配一个编号 - 事务id - txid
- 当edits文件达到条件的时候会将操作更新到fsimage文件中,即修改fsimage文件中的元数据:
a. 空间维度:当edits_inprogress文件达到指定大小的时候就会触发更新,默认是64M&