HDFS NAMENODE 安全模式

一、安全模式现象探究

1.1 关闭所有服务,使用命令单独启动服务

使用hdfs --daemon命令逐个进程启动集群,观察现象
1.首先启动namenode
stop-all.sh 
jps
hdfs --daemon start namenode
jps
hadoop fs -ls /           #使用ls浏览时正常显示
hadoop fs -cat /test.txt  #使用cat查看数据或创建目录等写操作时报错,提示现在是安全模式
hadoop fs -mkdir /hello 
mkdir: Cannot create directory /hello. Name node is in safe mode.

1.2 访问控制台

注意summary信息   The reported blocks 0 needs additional 2 blocks to reach the threshold 0.9990 of total blocks 3

 

1.3 启动一台datanode

hdfs --daemon start datanode  #第一台启动datanode,刷新访问控制台

根据提示,安全模式已经关闭

hadoop fs -mkdir /hello #再次创建目录没有异常

二、安全模式概述

1.在NameNode主节点启动时,HDFS会首先进入安全模式。检查包括文件副本的数量、可用的datanode数量、集群可用block比例等参数。
2.在安全模式下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。
3.在NameNode启动过程中,首先会从fsimage和edits日志文件加载文件系统状态。然后,等待DataNodes汇报可用的block信息。在此期间,NameNode保持在安全模式。随着DataNode的block汇报持续进行,当整个系统达到安全标准时,HDFS自动离开安全模式。在NameNode Web主页上会显示安全模式是打开还是关闭。 

三、安全模式自动离开

相关参数(hdfs-site.xml):
dfs.replication      #hdfs block的副本数据,默认3
dfs.replication.max   #最大块副本数,默认512
dfs.namenode.replication.min   #最小块副本数,默认1
dfs.namenode.safemode.threshold-pct  #已汇报可用数据块数量占整体块数量的百分比阈值。默认0.999f,小于或等于0,则表示退出安全模式之前,不要等待特定百分比的块。大于1的值将使安全模式永久生效。
dfs.namenode.safemode.min.datanodes  #指在退出安全模式之前必须存活的DataNode数量,默认0
dfs.namenode.safemode.extension  #达到阈值条件后持续扩展的时间。倒计时结束如果依然满足阈值条件,自动离开安全模式。默认30000毫秒 

四、安全模式手动进入、离开

hdfs dfsadmin -safemode get		查看安全模式的状态
hdfs dfsadmin -safemode enter	进入安全模式
hdfs dfsadmin -safemode wait	进入安全模式
hdfs dfsadmin -safemode leave	离开安全模式
enter和wait都是进入安全模式,区别是enter是一定进入安全模式的,wait是等待HDFS进入安全模式 

  

  

  

posted @ 2023-02-17 15:11  百衲本  阅读(347)  评论(0编辑  收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码