安全模式下的Namenode

时间:2020-01-09 10:34:31  来源:igfitidea点击:

这篇文章显示了Namenode中的安全模式以及Hadoop中的安全模式的配置。我们还将看到可用于显式进入和退出安全模式的命令。

启动Namenode时,它首先将文件系统状态从fsimage加载到内存中,然后使用编辑日志文件应用最近的编辑。

然后,Namenode等待Datanode报告其块。请注意,有关块位置的信息由Namenode保留在内存中,不会存储在任何文件中。因此,Namenode需要时间才能从Datanodes获取块位置。在使用fsimage和编辑日志加载文件系统的过程中,Datanode发送其块列表,Namenode保持在安全模式。

Hadoop中的安全模式

NameNode的安全模式本质上是HDFS群集的只读模式,该模式不允许对文件系统或者块进行任何修改。

对于Namenode来说,在整个过程中保持安全模式非常重要,因为没有足够的时间从Datanode获取块列表会导致Namenode开始过早地复制块,尽管集群中已经存在足够的副本。

通常,在DataNode报告大多数文件系统块可用之后,NameNode会自动离开安全模式。

Namenode如何知道何时有足够的阻止报告退出安全模式。为此,我们需要在hdfs-site.xml中配置属性(如果未配置,则使用默认值)。

dfs.namenode.safemode.threshold-pct –指定应满足dfs.namenode.replication.min定义的最小复制要求的块百分比。小于或者等于0的值表示退出安全模式前不等待特定百分比的块。大于1的值将使安全模式永久生效。此属性的默认值为99.9%,这意味着当文件系统中99.9%的块满足最低复制级别时,Namenode退出安全模式。

dfs.namenode.safemode.extension –确定达到阈值级别后以毫秒为单位的安全模式扩展。默认值为30000毫秒(30秒)。

如果采用默认值,则当文件系统中99.9%的块满足最小复制级别加上30秒的扩展名时,Namenode退出安全模式。

还有一个属性,用于指定被认为是活动的数据节点的最小数量。

dfs.namenode.safemode.min.datanodes –指定在名称节点退出安全模式之前必须视为活动的数据节点数。小于或者等于0的值表示在决定是否在启动过程中保持安全模式时不考虑活动数据节点的数量。大于群集中数据节点数量的值将使安全模式永久生效。此属性的默认值为0。

用于安全模式的HDFS命令

明确进入安全模式

可以使用以下HDFS命令将HDFS显式置于安全模式–

hdfs dfsadmin -safemode enter

明确离开安全模式

如果要强制Namenode离开安全模式。当我们收到SafeModeException且"名称节点处于安全模式"消息时,可以使用此命令。

hdfs dfsadmin -safemode leave

检查Hadoop中的安全模式状态

我们可以检查NameNode主页以查看安全模式是打开还是关闭。

在命令行中,我们可以使用以下命令来检查-

hdfs dfsadmin -safemode get