10.5 集群安全模式

10.5.1 概述

NameNode启动时,首先将镜像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。

一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志(edits)。

此时,NameNode开始监听DataNode请求。但是此刻,NameNode运行在安全模式,即NameNode的文件系统对于客户端来说是只读的。

系统中的数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中。

在系统的正常操作期间,NameNode会在内存中保留所有块位置的映射信息。

在安全模式下,各个DataNode会向NameNode发送最新的块列表信息,NameNode了解到足够多的块位置信息之后,会自动退出安全模式,开始高效运行文件系统。

如果满足“最小副本条件”,NameNode会在30秒钟之后就退出安全模式。

所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)。

在启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以NameNode不会进入安全模式。


10.5.2 和安全模式相关的操作

  1. 查看安全模式的状态

    hdfs dfsadmin -safemode get
    

  2. 进入安全模式

    hdfs dfsadmin -safemode enter
    

    注意:

    • 这个指令禁止安全模式之后不会自动退出安全模式.
  3. 离开安全模式

    hdfs dfsadmin -safemode leave
    

  4. 等待安全模式退出, 然后执行后面的指令. 一般用在脚本中. 在执行某些指令之前, 需要先退出安全模式.

    hdfs dfsadmin -safemode wait
    

    脚本文件: test.sh

    #!/bin/bash                                                                                                                 
    hdfs dfsadmin -safemode enter
    hdfs dfsadmin -safemode wait
    hadoop fs -put words2.txt /words2_test.txt
    

    执行脚本, 然后会发现, 脚本会一直等待安全模式退出, 不会执行最后一条指令.

    打开新的终端, 执行退出安全模式命令, 然后脚本就会继续执行了.

Copyright © 尚硅谷大数据 2013-2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-11-20 18:14:11

results matching ""

    No results matching ""