1 初始化操作
bin/hdfs namenode -format
初始化作用:
-
会生成namenode的文件目录结构 in_use.lock是在使用的时候生成 和edits相关的也是在使用之后生成
-
确定了三个id namespace cluster blockpool
namespaceID:是系统文件的唯一标识符,格式化文件系统之后会生成
clusterID :生成的集群的ID
blockpoolID:针对每一个namespace对应的blockpool的ID 包含储存节点IP等信息 -
生成了fsimage_00000
只启动namenode
1. 会生成锁文件 in_use.lock
2. 会生成edits相关的文件,并且seen_txid会改变成和edits_inprogress文件后面的编号id一样
启动datanano
1. 会生成datanode文件目录
current文件和锁文件是一起生成的
2.会生成块池id对应的文件夹和VERSION文件
hadoop的从节点类型不止一种
hdfs的从节点 datanode
yarn的从节点 nodemanager
3.三个配对id的位置
namespace BP...下面的current文件夹下的VERSION文件里面
blockpool BP...下面的current文件夹下的VERSION文件里面
cluster BP...下面的VERSION文件里面
fsimage :
系统镜像文件 把文件某一时刻的状态持久化到磁盘
secondarynamenode 帮助namenode 进行更新fsimage
edits :
编辑操作记录
根据操作记录,可以推断出namenode的内存保存的元数据信息
secondarynamenode 和 namenode 的关系
1 初始化之后 会生成文件fsimage_0 不是namenode把内存写入磁盘
2 edits是启动namenode 之后会创建
3 日志的记录 一定要有hdfs 有增删改的操作
流程
1 sn 提醒 nn 需要更新fsimage
2 日志记录滚动 ,edits_inprogress 截止记录
3 拷贝相关文件到sn
fsimage :只会在第一次的时候拷贝
edits:(除了inprogress) 只会拷贝sn上 fsimage编号以后的edits
4 把这些文件加载进入内存 把fsimage 内容进行更新
5 写到磁盘fsimage_000X
6 把新的fsimage 给到nn (nn只会保存最新的两个版本)
重点 :
1. fsimage里面保存的信息是完整的内存结构吗?
fsimage是内存信息镜像,包括所有的元数据信息,除了每个块所在的节点信息
所以每次启动之后,namenode再重构了元数据之后,他会接受每个datanode的汇报信息
汇报的信息就是自己上面有哪些块 需要时间把块和节点的映射补充完整,在补充完整之前,namenode不会对外提供服务,这一段时间就是安全模式
在安全模式下,只能做查询的操作,不能增删改
退出安全模式的条件:所有hdfs上的块的信息,跟主机的映射达到了99.999%之后会退出安全模式
-
fsimage : 第一次的时候会拷贝 (第一次指的是初始化集群的第一次)
-
在hdfs上做一些增删改操作 然后关闭服务器
namenode 内存中的信息变化了 ,edits记录了 fsimage没有同步更新
启动服务
单独启动namenode 可以提供提供正常服务 所以namenode 在启动的时候做了checkpoint
namenode工作目录下不会有新的fsimage生成
启动sn之后 sn会立刻进行checkpoint