`
QING____
  • 浏览: 2232605 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop常用命令[备忘]

 
阅读更多

【Hadoop常用命令】

一、 fsck:hdfs文件系统集群状态检测。

    使用方式:./hadoop fsck <path> [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]

   

./hadoop fsck /

 

 

 

    可选options列表:

    1) path:检测开始的目录。

    2) -move:将corrupted文件迁移到/lost+found文件夹中

    3) -delete:将corrupted文件删除。

    4) -openforwrite:将那些已经打开正在写入操作的文件目录打印在屏幕上,条目信息后面将会提示:

        OPENFORWRITE: ...............Status: HEALTHY

    5) -files:将正在检测的文件信息(名称)打印出来

    6) -blocks:打印文件信息的同时,打印blocks信息。

    7) -locations:打印blocks的位置信息。

    8) -racks:打印blocks的机架信息。

 

>./hadoop fsck /hbase -files -blocks -locations
....
/hbase/hbase.version 7 bytes, 1 block(s):  OK
0. BP-919273630-10.10.187.116-1398752513224:blk_1073741825_1001 len=7 repl=3 [121.10.187.75:50010, 121.10.187.76:50010, 121.10.187.79:50010]

 

 

二、 jar:像“java命令”一样,向hadoop集群提交mapreduce作业jar。

    使用方式:./hadoop jar <jar-path> [mainClass] args...

./hadoop jar ../mapred-lib/statistic-mapred-all.jar QuartzScriptMain

 

   注意,像“java -cp”运行一个main一样,“hadoop jar”命令也需要指定jar路径和main方法所在的类,也可以像java命令一样指定参数,最终hadoop将额外的启动一个“RunJar”进程单独运行。

 

三、job:在运行时查看job的状态。

    1) -submit <job-file>:提交任务,此命令不常用。

    2) -status <job-id>:根据jobId打印出job的进度和job的相关计数器。

    3) -counter <job-id> <group-name> <counter-name>:根据指定的参数查看计数器值。

    4) -kill <job-id>:取消作业执行

    5) -list [all]:展示所有已经执行完毕的作业

    6) -kill-task <task-id>:取消指定的task,task将会重新执行,不过不会增加"attempts"值。

    7) -fail-task <task-id>:让当前task失效,task将会重新执行,相当于运行失败一次,会增加“attempts”值。

    8) -set-priority <job-id> <priority>:修改job的权重,合法权重值为“VERY_HIGH”,"HIGH","NORMAL","LOW","VERY_LOW";修改权重值不一定会生效,比如job已经被调度,或者调度器不支持权重等。

 

四、classpath:打印出hadoop的classpath信息,便于调试程序。

 

五、balancer:集群数据重新平衡,是一个耗时的操作,可以指定-threshold参数表示磁盘的利用率(大于1,小于100的数字)阀值,达到此阀值的node,将会把数据迁移到其他node上;否则不平衡。

    使用方式:hadoop balancer [-policy] [-threshold <num>],policy参数合法值为datanode、blockpool,默认为datanode,blockpool在HDFS Federation架构中有效。

 

六、dfsadmin:hdfs集群管理。

    1) -report:获取hdfs集群的信息和统计数据。

>./hadoop dfsadmin -report
....
Configured Capacity: 173329641472 (161.43 GB)
Present Capacity: 115128503670 (107.22 GB)
DFS Remaining: 112925552640 (105.17 GB)
DFS Used: 2202951030 (2.05 GB)
DFS Used%: 1.91%
Under replicated blocks: 1930
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 2 (2 total, 0 dead)

Live datanodes:
....

 

    2) -safemode <enter | leave | get | wait>:Namenode节点维护命令,让Namenode处于“安全模式”;安全模式下,Namenode不能修改集群中的namespace(即无法创建、删除文件等),处于只读状态,无法备份和删除blocks操作;通常情况下,在namenode启动时,会自动进入safemode,直到恢复完毕,离开安全模式。

    “dfs.namenode.safemode.threshold-pct”默认值为“0.999f”,如果集群中满足“dfs.namenode.replication.min”条件的blocks个数占blocks总数的比例小于此值时,namenode将进入safemode,比如在namenode启动时,或者运行时大量datanode离群。如果此值>=1,那么namenode将永远处于safemode,除非手动操作;如果此值<=0,表示namenode不会等待block即备,将会立即退出安全模式。

    “dfs.namenode.safemode.min.datanodes”默认值为0,如果集群中存活的datanodes的数量少于此值,namenode将进入safemode;如果此值<=0,那么namenode将不会等待datanodes即备,立即退出安全模式;如果此值大于集群中datanodes的实际个数,那么namenode将无法退出安全模式。

    “dfs.namenode.safemode.extension”默认值为30000,当上述两个条件之一达到阀值后,namenode在extension时间之后进入safemode,此值不能太小,以避免集群短时间不稳定或者频繁的动荡,导致namenode可用性降低。

 

    3) -refreshNodes:重新读取hosts和exclude文件,重置Namenode内存中的datanodes列表;通常在管理员修改hdfs-site.xml文件中的“dfs.hosts.exclude”、“dfs.hosts”配置项之后,执行此命令;可以在不重启集群的情况下,让配置文件生效。

    4) -upgradeProgress <status | details | force>:获取集群系统升级的过程、进度状态信息,或者强制升级。(2.2+不可用)

    5) -finalizeUpgrade:升级结束后,可以通过此指令,来删除升级过程产生的文件和旧文件数据。

    6) -metasave <filename>:将Namenode中核心的数据结构保存到文件中,文件将放置在${hadoop.log.dir}中,如果文件存在,则覆盖。这个文件只会包含metada(不包含namespace),按行分割,其中包含“与NameNode保持心跳的Datanodes列表”、“亟待复制的blocks列表”、“正在复制的blocks列表”、“亟待删除的blocks列表”。

 

>./hadoop dfsadmin -metasave meta-2014-08-06.log
....
62 files and directories, 22 blocks = 84 total
Live Datanodes: 3
Dead Datanodes: 0
Metasave: Blocks waiting for replication: 0
Mis-replicated blocks that have been postponed:
Metasave: Blocks being replicated: 0
Metasave: Blocks 0 waiting deletion from 0 datanodes.
Metasave: Number of datanodes: 3
121.10.187.151:50010 IN 317068410880(295.29 GB) 38838272(37.04 MB) 0.00% 300675489792(280.03 GB)....
121.10.187.152:50010 IN 317068410880(295.29 GB) 39108608(37.30 MB) 0.00% 300612202496(279.97 GB)....
121.10.187.153:50010 IN 317068410880(295.29 GB) 39108608(37.30 MB) 0.00% 300626178048(279.98 GB)....

 

 

    7) -setQuota <quota> <dirname>...:对指定目录设定quota(配额),即限定目录下文件个数的大小。通常hdfs并没有对目录设置quota。我可以通过“hdfs dfs -cout -q <dirname>”来查看目录文件配额,默认为“none”(未设定,即Long.MAX_VALUE),如果quota值为负值、或者user不是管理员、或者目录不存在、或者当前目录下的配额已经达到设定值,则会导致操作失败;同时可以使用"-clrQuota <dirname>"来清楚目录下的配额。

    8) -restoreFailedStorage <true | false | check>:当NameNode失效后,是否根据自己的edits日志、fsimage自动恢复,默认为false。通常我们会设定SecondaryNamenode或者backup,关于NameNode的恢复,一般为手动。可以使用check指令获取当前的设置。

 

七、namenode:namenode管理

    使用方式:hadoop namenode [-format] | [-upgrage] | [-rollback] | [-finalize] | [-importCheckpoint]

    1) -format:格式化namenode,这个指令将触发namenode启动,然后format,结束后关闭namenode;我们通常在一个集群重建之后,执行format指令,由namenode生成cluster相关的标识。

    2) -upgrade:升级,具体过程参见相关专门文档。

    3) -rollback:升级失败(或成功后)回滚到前一版本。

    4) -finalize:升级结束后,通过此指令则删除升级过程中的临时文件,以及上一版的备份数据。此后当前版本即作为稳定版本。此后,将无法使用rollback指令。

    5) -importCheckpoint:恢复namenode(需要停机),当需要启动一个节点作为namenode时(新增namenode节点,或者重启失效的namenode),我们可以把现存的namenode的checkpoint文件copy到此机器上,然后通过import指令,恢复namespace数据结构。详情参见其他文档。

 

八、secondarynamenode:辅助namenode操作

    使用方式:hadoop secondarynamenode [-checkpoint [-force]] | [-geteditsize]

    1) -checkpoint [force]:如果editlog的尺寸大于“fs.checkpoint.size”,则secondarynamenode生成checkpoint文件;如果使用-force,则忽略editlog尺寸判定,立即checkpoint。前提是需要关闭secondarynamenode进程。

    2) -geteditsize:打印出当前edit日志的大小。 

  • 大小: 48.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics