今天听了王家林的hadoop的集群管理工具dfsadmin介绍,也实际操作了下,不过没找到感觉,不知道是自己脑子空白还是怎么的,倒是下面这篇文章还靠谱。


一、hdfs dfsadmin -safemode 安全模式


 NameNode在启动的时候 首先进入安全模式,如果datanode丢失的block达到一定的比例(由hdfs-site.xml文件中dfs.safemode.threshold.pct决定,默认0.999f),则系统会一直处于安全模式状态即只读状态 ; 否则没有其他情况影响,一般情况下,系统会自动离开安全模式。

dfs.safemode.threshold.pct 表示HDFS启动的时候,如果DataNode上报的 block个数0.999倍才可以离开安全模式,否则一直是这种只读状态。如果设为1则hdfs永远是处于SafeMode。

通常两种情况可以离开这处安全模式

1、修改 dfs.safemode.threshold.pct为一个比较小的值,缺省值是0.999
2、hadoop dfsadmin -safemode leave 命令强制离开


用户可以使用命令行(hdfs dfsadmin -safemode value)做如下的操作:


[plain] view plain copy 

  1. # hdfs dfsadmin -safemode get    ## 返回安全模式是否开启的信息,返回 Safe mode is OFF/OPEN  

  2. # hdfs dfsadmin -safemode enter  ## 进入安全模工  

  3. # hdfs dfsadmin -safemode leave  ## 强制 NameNode 离开安全模式  

  4. # hdfs dfsadmin -safemode wait   ## 等待,一直到安全模式结束  



hdfs dfsadmin 的其他命令:

命令选项 描述
-report 报告文件系统的基本信息和统计信息。
-safemode enter | leave | get | wait 安全模式维护命令。安全模式是Namenode的一个状态,这种状态下,Namenode
1. 不接受对名字空间的更改(只读)
2. 不复制或删除块
Namenode会在启动时自动进入安全模式,当配置的块最小百分比数满足最小的副本数条件时,会自动离开安全模式。安全模式可以手动进入,但是这样的话也必须手动关闭安全模式。
-refreshNodes 重新读取hosts和exclude文件,更新允许连到Namenode的或那些需要退出或入编的Datanode的集合。
-finalizeUpgrade 终结HDFS的升级操作。Datanode删除前一个版本的工作目录,之后Namenode也这样做。这个操作完结整个升级过程。
-upgradeProgress status | details | force 请求当前系统的升级状态,状态的细节,或者强制升级操作进行。
-metasave filename 保存Namenode的主要数据结构到hadoop.log.dir属性指定的目录下的文件。对于下面的每一项,中都会一行内容与之对应
1. Namenode收到的Datanode的心跳信号
2. 等待被复制的块
3. 正在被复制的块
4. 等待被删除的块
-setQuota ... 为每个目录 设定配额。目录配额是一个长整型整数,强制限定了目录树下的名字个数。
命令会在这个目录上工作良好,以下情况会报错:
1. N不是一个正整数,或者
2. 用户不是管理员,或者
3. 这个目录不存在或是文件,或者
4. 目录会马上超出新设定的配额。
-clrQuota ... 为每一个目录清除配额设定。
命令会在这个目录上工作良好,以下情况会报错:
1. 这个目录不存在或是文件,或者
2. 用户不是管理员。
如果目录原来没有配额不会报错。
-help [cmd] 显示给定命令的帮助信息,如果没有给定命令,则显示所有命令的帮助信息。