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

原文地址:https://www.cnblogs.com/xuziyu/p/10697070.html