云计算(四)- Hadoop2.2.0命令大全

来源:互联网 发布:c语言二分法求方程例题 编辑:程序博客网 时间:2024/04/25 08:36

概述

所有hadoop的命令都是在bin/hadoop下,不需要参数进行调用,一些默认的参数和用法如下:

用法: hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]

COMMAND_OPTIONDescription--config confdir重写配置文件路径。默认是$HADOOP_HOME/conf.GENERIC_OPTIONS COMMAND_OPTIONS子命令各自的选项

通用参数

以下的参数被dfsadminfsfsckjob和fetchdt支持。如需要重新编写工具请保证以下参数实现:

GENERIC_OPTIONDescription-conf <configuration file>制定特殊的配置文件路径.-D <property>=<value>使用给定的参数.-jt <local> or <jobtracker:port>指定一个job tracker. 只能加在job上.-files <comma separated list of files>将逗号分隔的文件复制到map reduce集群上.只能加在job上-libjars <comma seperated list of jars>将逗号分隔的jar添加到classpath. 只能加在job上.-archives <comma separated list of archives>将逗号分隔的未归档的档案用于计算. 只能加在job上.

常用用户命令 

archive

建立用户档案的命令。archive是一种特殊的文件格式,以.har作为后缀,用于将小文件合并使用,因为Hadoop的设计是处理大数据,理想的数据文件应该是BLOCKSIZE的倍数。为了避免小文件占用过多的系统内容,Hadoop提供了Archive来管理小文件。HAR对我们来说,就是把众多文件整合到一起,文件个数减小了,但是文件总体大小并没有减少(无压缩)。归档文件与原文件分别使用了不同的Block,并没有共用Block。当归档文件较多时,性能并不明显(典型的HDFS拷贝)。具体参考下面的连接:
http://wenku.baidu.com/link?url=Fhtda8CpFXgjO462sZdhXLN3ORHzM3yAcOBBGld5zeFKcUx0isvfIqhv__1J0J6PzAKQ-WC7vOfu2HW07IgMCYHA2sHBUDTv-g0Vdf6hHAO
用法:hadoop archive -archiveName NAME <src>* <dest>
COMMAND_OPTIONDescription-archiveName NAME档案的名字src本地文件系统路径可以使用正则表达式dest目标目录.

Har归档:

Hadoop archive -archiveName test.har -p /A/B/C/D/ E1/F1 E2/F2 /A/G/

命令分析:

目标文件名:-archiveName test.har

源文件的父目录: -p /A/B/C/D/

源文件(夹可以有多个),如这里的E1/F1和E2/F2

所以源文件其实是: 父目录路径 + 相对子路径

最后一个参数就是目录文件夹了 dest path: 所以最终结果的路径是 dest path + achiveName

distcp

用于并行拷贝很多文件distcp一般用于在两个HDFS集群中传输数据。如果集群在hadoop的同一版本上运行,就适合使用hdfs方案。
更多细节可以参考:
http://hadoop.apache.org/docs/r0.19.0/distcp.html
用法:hadoop distcp <srcurl> <desturl>
COMMAND_OPTIONDescriptionsrcurl源路径desturl目标路径hadoop distcp hdfs://namenode1/foo hdfs://namenode2/bar 

将从第一个集群中复制/foo目录(和它的内容)到第二个集群中的/bar目录下,所以第二个集群会有/bar/foo目录结构。如果/bar不存在,则会新建一个。可以指定多个源路径,并且所有的都会被复制到目标路径。源路径必须是绝对路径。

默认情况下,distcp会跳过目标路径已经有的文件,但可以通过提供的-overwrite选项进行覆盖,也可以用-update选项来选择只更新那些修改过的文件。

如果想在两个运行着不同版本HDFS的集群上利用distcp,使用hdfs协议是会失败的,因为RPC系统是不兼容的。想要弥补这种情况,可以使用基于HTTP的HFTP文件系统从源中进行读取。这个作业必须运行在目标集群上,使得HDFS RPC版本是兼容的。使用HFTP重复前面的例子:% hadoop distcp hftp://namenode1:50070/foo hdfs://namenode2/bar 

注意,需要在URI源中指定名称节点的Web端口。这是由dfs.http.address的属性决定的,默认值为50070。

fs

声明hadoop使用的文件系统。
用法:hadoop fs [GENERIC_OPTIONS] [COMMAND_OPTIONS]

fsck

检查文件系统的健康状况。
用法:hadoop fsck [GENERIC_OPTIONS] <path> [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]
COMMAND_OPTIONDescriptionpath检查这个目录中的文件是否完整-move 破损的文件移至/lost+found目录-delete删除破损的文件-openforwrite打印正在打开写操作的文件-files 打印正在check的文件名-blocks打印block报告 (需要和-files参数一起使用)-locations打印每个block的位置信息(需要和-files参数一起使用-racks打印位置信息的网络拓扑图 (需要和-files参数一起使用)

hadoop  fsck /
用这个命令可以检查整个文件系统的健康状况,但是要注意它不会主动恢复备份缺失的block,这个是由NameNode单独的线程异步处理的。

hadoop  fsck /user/distribute-hadoop-boss/tmp/pgv/20090813/1000000103/input/JIFEN.QQ.COM.2009-08-13-18.30 -files -blocks -locations  -racks

打印出了这个文件每个block的详细信息包括datanode的机架信息。

fetchdt

从NameNode得到一个委托Token
用法: hadoop fetchdt [GENERIC_OPTIONS] [--webservice <namenode_http_addr>] <path>
COMMAND_OPTIONDescriptionfileName存储Token的文件.--webservice https_address使用http协议代替RPC

jar

运行一个jar文件
用法:hadoop jar <jar> [mainClass] args...

job

用来操作Map Reduce Jobs。
用法: hadoop job [GENERIC_OPTIONS] [-submit <job-file>] | [-status <job-id>] | [-counter <job-id> <group-name> <counter-name>] | [-kill <job-id>] | [-events <job-id> <from-event-#> <#-of-events>] | [-history [all] <jobOutputDir>] | [-list [all]] | [-kill-task <task-id>] | [-fail-task <task-id>] | [-set-priority <job-id> <priority>]
COMMAND_OPTIONDescription-submit job-file提交一个job-status job-id打印完成的百分比,查看集群完成状态-counter job-id group-namecounter-name打印计数器的值.-kill job-id杀掉制定的job-events job-id from-event-# #-of-events打印执行的细节-history [all]jobOutputDir打印job的细节包括失败和被杀掉的部分,如果需要成功的部分请加入all参数-list [all]显示已经完成的job。-list all 显示全部.-kill-task task-id杀死task,被杀死的task不算失败-fail-task task-id使得task失败,此类task计算在失败内.-set-priority job-id priority调整job的优先级别. 允许的值有 VERY_HIGH, HIGH, NORMAL, LOW, VERY_LOW

pipes

运行一个pipes job

用法:hadoop pipes [-conf <path>] [-jobconf <key=value>, <key=value>, ...] [-input <path>] [-output <path>] [-jar <jar file>] [-inputformat <class>] [-map <class>] [-partitioner <class>] [-reduce <class>] [-writer <class>] [-program <executable>] [-reduces <num>]

COMMAND_OPTIONDescription-conf path此job的配置文件-jobconf key=valuekey=value, ...添加或重新配置参数-input path输入目录-output path输出目录-jar jar filejar文件名-inputformat class输入格式化类-map classJava Map类-partitioner classJava分隔类-reduce classJava Reduce类-writer classJava RecordWriter-program executable执行的URI-reduces numreduces的数量

queue

查看或改变Job Queue的信息
用法: hadoop queue [-list] | [-info <job-queue-name> [-showJobs]] | [-showacls]
COMMAND_OPTIONDescription-list获取Job Queues列表以及相关的调度信息-info job-queue-name [-showJobs]显示指定的job queue信息和调度信息. 如果使用-showJobs显示已提交的部分-showacls打印队列的名字和当前用户允许的最大序列. 

version

打印hadoop版本
用法:hadoop version

CLASSNAME

使用脚本调用CLASSNAME的类,注意使用hadoop CLASSNAM之前,你需要设置HADOOP_CLASSPATH
用法: hadoop CLASSNAME

classpath

打印class path
用法:hadoop classpath

管理命令

balancer

由于hadoop集群的机器磁盘容量大小不等,造成磁盘使用率不同,有的使用了10%,而有的已经100%,这个对整个系统的运行是有问题的。该命令是将集群各个机器的磁盘容量进行平衡,具体可以参考:
http://wenku.baidu.com/link?url=Afa4_khWhVBQMPHafbthH7tIuRZksWVTlLd6gEGgbRp33a_dae1RAj-F-enxdOruR0rT-O0XQUcQHyteWF0Qo0stRX1-h9Pxbpi3j3kN9T3
COMMAND_OPTIONDescription-threshold threshold磁盘使用偏差值
 hadoop balancer -Threshold 10
参数10是比例参数,表示10%,也就是平各个DataNode直接磁盘使用率偏差在10%以内

daemonlog

得到或者设置daemon的log级别
用法:hadoop daemonlog -getlevel <host:port> <name> Usage: hadoop daemonlog -setlevel <host:port> <name> <level>
COMMAND_OPTIONDescription-getlevel host:port name打印指定host:port守护进程的日志级别. 该命令内部调用http://host:port/logLevel?log=name-setlevel host:port name level设置指定host:port守护进程的日志级别 该命令内部调用http://host:port/logLevel?log=name

datanode

运行一个HDFS的datanode。
用法:hadoop datanode [-rollback]
COMMAND_OPTIONDescription-rollback回滚datanode到前一个版本,这个命令需要datanode停止并分发一个老版本之后使用

dfsadmin

Dfsamin

是一个用来获取

HDFS

文件系统实时状态信息的多任务工作,

具有对于

HDFS

件系统管理操作的功能。在拥有超级用户权限的前提下,管理员可以在终端中通过

Hadoop 

dfsadmin

对于其进行功能方法的调用。

Dfsamin

是一个用来获取

HDFS

文件系统实时状态信息的多任务工作,

具有对于

HDFS

件系统管理操作的功能。在拥有超级用户权限的前提下,管理员可以在终端中通过

Hadoop 

dfsadmin

对于其进行功能方法的调用。

Dfsamin是一个用来获取HDFS文件系统实时状态信息的多任务工作,具有对于HDFS文件系统管理操作的功能。在拥有超级用户权限的前提下,管理员可以在终端中通过Hadoop dfsadmin对于其进行功能方法的调用。
用法:hadoop dfsadmin [GENERIC_OPTIONS] [-report] [-safemode enter | leave | get | wait] [-refreshNodes] [-finalizeUpgrade] [-upgradeProgress status | details | force] [-metasave filename] [-setQuota <quota> <dirname>...<dirname>] [-clrQuota <dirname>...<dirname>] [-restoreFailedStorage true|false|check] [-help [cmd]]
COMMAND_OPTIONDescription-report用来获取文件系统的基本信息和统计信息-safemode enter / leave / get / wait安全模式的维护命令。安全模式是NameNode的一种状态。在安全模式状态下:
1) 不接受对于空间名字的更改
2) 无法对数据块进行删除以及复制操作
NameNode会在Hadoop系统启动之后自动开启安全模式,一旦当配置块满足最小百分比的副本数条件时,Hadoop系统会自动关闭安全模式。同时根据用户的需要也可以手动关闭安全模式或者选择手动开启安全模式。-refreshNodes重新读取hosts和exclude,以实现在添加新的节点后可以使系统直接进行识别。-finalizeUpgrade用于终结HDFS文件系统的升级操作。DataNode会删除上一个版本的工作目录。在DataNode完成操作之后,NameNode也会执行这个操作。-upgradeProgress status / details / force分别实现获取当前系统升级的状态,升级状态过程中的细节,强制进行系统的升级。-metasave filename

将hadoop系统中的管理节点的数据结构中的主要部分保存到hadoop.log.dir文件中提前预设好的属性中指定的的对应文件名的目录上。

在此文件中的主要内容如下:

1)      管理节点接收到的数据节点的正常工作的心跳

2)      被复制的数据块的等待状态

3)      被复制的数据块的执行状态

4)      确定要被删除的数据块的等待状态

-setQuota quotadirname...dirname

主要用作为每个指定路径下的文件目录设

定指定的配额。目的是为了强制设定文件目录的名字的字节数。如果出现以下情况将会对Hadoop系统报出错误信息:

1)      文件目录的名字不是一个正整数

2)      当前的操作用户不具有管理员权限

3)      文件目录不存在或者此路径指向的是一个文件而非目录

当设定好的目录生效时会超出新设定的配额 -clrQuotadirname...dirname

为每个已经分配好的指定路径上的文件目录清除已经设定好的配额。当出现以下情况将会对Hadoop系统报出错误信息:

1) 此目录指定的目录不存在或者该目录为一个文件

2) 当前的操作用户不具有管理员权限

另外一种情况为如果此文件目录如果先前没有设定配额,则使用此操作不会向系统报错-restoreFailedStorage true / false / check这个选项将打开/关闭自动试图恢复失败的存储副本。如果再次失败的存储可用系统将尝试从检查站恢复编辑和/或fsimage。“检查”选项将返回当前设置。-help [cmd]显示对于在参数中给定的命令相关的帮主信息,如果在参数中没有给出指定的命令,将会显示出所有命令的帮主信息。

mradmin

运行MR管理
用法:
hadoop mradmin [ GENERIC_OPTIONS ] [-refreshQueueAcls]

MMAND_OPTIONDescription-refreshQueueAcls刷新hadoop正在使用的queue的acls,mapred-queue-acls.xml 的属性将被重新加载.

jobtracker

运行 MapReduce job Tracke节点
用法:
hadoop jobtracker [-dumpConfiguration]
COMMAND_OPTIONDescription-dumpConfiguration以json作为标准输出

namenode

升级使用,运行namenode。
用法:
hadoop namenode [-format] | [-upgrade] | [-rollback] | [-finalize] | [-importCheckpoint]
COMMAND_OPTIONDescription-format格式化namenode. 先启动namenode, 格式化后在关闭.-upgrade分发新版本的hadoop后,Namenode应该以upgrade选项启动.-rollback回退namenode到前一个版本. 应该在停止集群并分发老版本后使用-finalizeFinalize后删除文件系统的前一个状态,当前更新被持久化,Rollback不能再使用. 在执行后namenode会被停止。-importCheckpoint从检查点的目录装在一个镜像并保持到当前的检查点目录,检查点从 property fs.checkpoint.dir配置项进行加载

secondarynamenode

用法:hadoop secondarynamenode [-checkpoint [force]] | [-geteditsize]
COMMAND_OPTIONDescription-checkpoint [-force]如果EditLog 大小>= fs.checkpoint.size,启动second namenode检查点的过程.如果-force被使用, 检查点不考虑 EditLog大小.-geteditsize打印EditLog大小.

tasktracker

运行MapReduce的task Tracker节点