HDFS的NN、DN、SNN的知识点积累
【NN】
NN是namenode的简写,namenode被格式化以后将在/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp/dfs/name/current下产生文件
参数:core-site.xml : hadoop.tmp.dir 指定hadoop运行时产生文件的存储目录
参数: hdfs-site.xml : dfs.namenode.name.dir 指定namenode产生的文件存放的目录
dfs.datanode.data.dir 指定datanode产生的文件存放的目录
【fsimage文件】
是hadoop文件文件系统元数据一个永久性的
fsimage文件其实是Hadoop文件系统元数据的一个永久性的检查点,其中包含Hadoop文件系统中的所有目录和文件idnode的序列化信息;
【edits 文件】
edits文件存放的是Hadoop文件系统的所有更新操作的路径,文件系统客户端执行的所以写操作首先会被记录到edits文件中
fsimage和edits文件都是经过序列化的,在NameNode启动的时候,它会将fsimage文件中的内容加载到内存中,之后再执行edits文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
每次NameNode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信
息是最新的、同步的,NameNode启动的时候就将fsimage和edits文件进行了合并。
【checkpoint时间设置】
hdfs-site.xml:
dfs.namenode.checkpoint.period 每隔多久做一次checkpoint ,默认3600s
dfs.namenode.checkpoint.txns 每隔多少操作次数做一次checkpoint,默认1000000次
dfs.namenode.checkpoint.check.period 每个多久检查一次操作次数,默认60s
安全模式
NN启动时,首先将fsimage载入内存,并执行edits中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个新的
edits_progress。此时,NameNode开始监听DataNode请求,NameNode运行在安全模式,即NameNode的文件系统对于客户端来说是只读的。
集群处于安全模式,不能执行重要操作(写操作)。
在安全模式下,各个DataNode会向NameNode发送最新的块列表信息,NameNode了解到足够多的块位置信息之后,即可高效运行文件系统。
如果满足“最小副本条件”,NameNode会在30秒钟之后就退出安全模式。所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别。
对应参数:
hdfs-site.xml :
dfs.namenode.replication.min 块满足最小副本级别 (默认为1)
dfs.namenode.safemode.threshold-pct 集群中满足正常配置的数据块比例 (默认为0.999f)
命令:
bin/hdfs dfsadmin -safemode get 查看安全模式状态
bin/hdfs dfsadmin -safemode enter 进入安全模式状态
bin/hdfs dfsadmin -safemode leave 离开安全模式状态
bin/hdfs dfsadmin -safemode wait 等待安全模式状态
DN工作机制
1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件:一个是数据本身,一个是元数据(数据块的长度,块数据的校验和,以及时间戳)。
2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。
参数(hdfs-site.xml):dfs.blockreport.intervalMsec 多久周期做一次blockreport, 默认21600000s
3)DN每3秒发送一次心跳信息。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
参数(hdfs-site.xml):dfs.heartbeat.interval 多久发送一次心跳信息 ,默认为3s
dfs.namenode.stale.datanode.interval 将数据节点标记为“过时”的时间间隔, 默认为300000ms
注:“过时”的节点不一定“死亡“。默认五分钟没有心跳就过时,十分钟没有心跳死亡。
4)当DataNode读取block的时候,它会进行校验,如果计算后的校验和,与block创建时值不一样,说明block已经损坏。client读取其他DataNode上的block。
datanode在其文件创建后周期(三周)验证校验和。
5)集群运行中可以安全加入和退出一些机器
seen_txid:保存最后一个edits_的数字
参考博客:https://blog.csdn.net/weixin_44591209/article/details/87919822