Hadoop命令手册

Hadoop 命令手册

 

1、 用户命令

 

1.1       archive

1.1.1         什么是Hadooparchives

Hadoop的归档文件,每个文件以块方式存储,块的元数据存储在名称节点的内存里,此时存储一些小的文件,HDFS会较低效。因此,大量的小文件会耗尽名称节点的大部分内存。(注意,相较于存储文件原始内容所需要的磁盘空间,小文件所需要的空间不会更多。例如,一个1 MB的文件以大小为128 MB的块存储,使用的是1 MB的磁盘空间,而不是128 MB。)

Hadoop Archives或HAR文件,是一个更高效的将文件放入HDFS块中的文件存档设备,在减少名称节点内存使用的同时,仍然允许对文件进行透明的访问。具体说来,Hadoop Archives可以被用作MapReduce的输入。

1.1.2         如何使用archive

Hadoop Archives通过使用archive工具根据一个文件集合创建而来。这些工具运行一个MapReduce作业来并行处理输入文件,因此我们需要一个MapReduce集群去运行使用它。HDFS中有一些我们希望归档的文件:

% hadoop fs -lsr /my/files  <p>-rw-r--r--    1 tom supergroup      1 2009-04-09 19:13 /my/files/a </p><p>drwxr-xr-x   - tom supergroup      0 2009-04-09 19:13 /my/files/dir </p><p>-rw-r--r--    1 tom supergroup      1 2009-04-09 19:13 /my/files/dir/b 
</p>

现在我们可以运行archive指令:

% hadoop archive -archiveName files.har /my/files /my 

第一个选项是归档文件名称,这里是file.har。HAR文件总是有一个.har扩展名,这是必需的,具体理由见后文描述。接下来把文件放入归档文件。这里我们只归档一个源树,即HDFS下/my/files中的文件,但事实上,该工具接受多个源树。最后一个参数是HAR文件的输出目录。让我们看看这个归档文件是怎么创建的:

% hadoop fs -ls /my
Found 2 items
drwxr-xr-x    - tom supergroup      0 2009-04-09
19:13 /my/files
drwxr-xr-x    - tom supergroup      0 2009-04-09
19:13 /my/files.har
% hadoop fs -ls /my/files.har
Found 3 items
-rw-r--r--    10 tom supergroup    165 2009-04-09
19:13 /my/files.har/_index
-rw-r--r--    10 tom supergroup     23 2009-04-09
19:13 /my/files.har/_masterindex
-rw-r--r--     1 tom supergroup      2 2009-04-09
19:13 /my/files.har/part-0

这个目录列表展示了一个HAR文件的组成部分:两个索引文件和部分文件的集合(本例中只有一个)。这些部分文件包含已经链接在一起的大量原始文件的内容,并且索引使我们可以查找那些包含归档文件的部分文件,包括它的起始点和长度。但所有这些细节对于使用har URI方案与HAR文件交互的应用都是隐藏的,HAR文件系统是建立在基础文件系统上的(本例中是HDFS)。以下命令以递归方式列出了归档文件中的文件:

% hadoop fs -lsr har:///my/files.har
drw-r--r--    - tom supergroup       0 2009-04-09
19:13 /my/files.har/my
drw-r--r--    - tom supergroup       0 2009-04-09
19:13 /my/files.har/my/files
-rw-r--r--   10 tom supergroup       1 2009-04-09
19:13 /my/files.har/my/files/a
drw-r--r--    - tom supergroup       0 2009-04-09
19:13 /my/files.har/my/files/dir
-rw-r--r--   10 tom supergroup       1 2009-04-09
19:13 /my/files.har/my/files/dir/b

如果HAR文件所在的文件系统是默认的文件系统,这就非常直观易懂。但如果想使用在其他文件系统中的HAR文件,就需要使用一个不同于正常情况的URI路径格式。以下两个指令作用相同,例如:

% hadoop fs -lsr har:///my/files.har/my/files/dir
% hadoop fs -lsr har://hdfs-localhost:8020/my/files.har/my/files/dir

注意第二个格式,仍以har方案表示一个HAR文件系统,但是是由hdfs指定基础的文件系统方案,后面加上一个横杠和HDFS host(localhost)和端口(8020)。我们现在算是明白为什么HAR文件必须要有.har扩展名了。通过查看权限和路径及.har扩展名的组成,HAR文件系统将har URI转换成为一个基础文件系统的URI。在本例中是hdfs://localhost:8020/user/tom/files.har。路径的剩余部 分是文件在归档文件中的路径:/user/tom/files/dir。

要想删除一个HAR文件,需要使用删除的递归格式,因为对于基础文件系统来说,HAR文件是一个目录。

% hadoop fs -rmr /my/files.har 

1.2       Distcp

递归地拷贝文件或目录。参考http://hadoop.apache.org/docs/r1.0.4/cn/distcp.html

1.3       fs

1.3.1         cat

查看hadoop某一个文件内容

[[email protected] input]$ hadoop fs -cat /user/hadoop/input/example1/file2
2012-3-1 b
2012-3-2 a
2012-3-3 b

1.3.2         chgrp

改变文件所属的组

[[email protected] input]$
hadoop fs -chgrp hadoop /user/hadoop/input/example1/file2

1.3.3         chmod

修改文件的权限

[[email protected] input]$
hadoop fs -chmod -R 667 /user/hadoop/input/example1/file2

1.3.4         chown

修改文件的所属用户和所属组

[[email protected] input]$
hadoop fs -chown hadoop:hadoop/user/hadoop/input/example1/file2

1.3.5         copyFromLocal

将本地文件复制到HDFS中

[[email protected] input]$
hadoop fs -copyFromLocal empty.txt/user/hadoop/input/example1/empty.txt

1.3.6         copyToLocal

将HDFS中的文件复制到本地

[[email protected] input]$
hadoop fs -copyToLocal
/user/hadoop/input/example1/file1 /home/hadoop/file1

1.3.7         du

显示所有文件大小或一个文件大小

[[email protected] input]$
hadoop fs –du /user/hadoop/input/example1/file1

1.3.8         dus

显示文件夹大小

[[email protected] input]$
hadoop fs –dus /user/hadoop/input/example1/file1

1.3.9         expunge

清空回收站

[[email protected] input]$
hadoop fs –expunge

1.3.10      get

复制文件到本地文件系统, 可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息

[[email protected] input]$

hadoop fs –get

/user/hadoop/input/example1/file1 /home/hadoop/file1

1.3.11      getmerge

使用方法:hadoop fs -getmerge <src> <localdst> [addnl]

接受一个源目录和一个目标文件作为输入,并且将源目录中所有的文件连接成本地目标文件。addnl是可选的,用于指定在每个文件结尾添加一个换行符。

[[email protected]
input]$

Hadoop fs -getmerge

/user/hadoop/input/example1/ /home/hadoop/view.txt

 

1.3.12      ls

使用方法:hadoop fs -ls <args>

如果是文件,则按照如下格式返回文件信息:

文件名 <副本数> 文件大小修改日期 修改时间 权限 用户ID 组ID

如果是目录,则返回它直接子文件的一个列表,就像在Unix中一样。目录返回列表的信息如下:

目录名 <dir> 修改日期修改时间 权限 用户ID 组ID

[[email protected]]$

Hadoop fs –ls /user/hadoop/input/example1/file1

1.3.13      lsr

使用方法:hadoop fs -lsr <args>

ls命令的递归版本。类似于Unix中的ls -R。

[[email protected] input]$

hadoop fs –lsr /user/hadoop/input/

1.3.14      mkdir

使用方法:hadoop fs -mkdir <paths>

接受路径指定的uri作为参数,创建这些目录。其行为类似于Unix的mkdir -p,它会创建路径中的各级父目录。

[[email protected]
input]$

hadoop fs –mkdir /user/hadoop/input/testdir/testfold/

 

1.3.15      moveFromLocal

和copyFromLocal一样的意思,将本地文件复制到HDFS中

[[email protected] input]$

hadoop fs –moveFromLocal local.txt /user/hadoop/input/example/

1.3.16      mv

使用方法:hadoop fs -mv URI [URI …] <dest>

将文件从源路径移动到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。不允许在不同的文件系统间移动文件。

[[email protected] input]$

hadoop fs –mv

/user/hadoop/input/example1/file1/user/hadoop/input/example2/file1

1.3.17      put

使用方法:hadoop fs -put <localsrc> ... <dst>

从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统。

[[email protected]
input]$

hadoop fs -put localfile /user/hadoop/hadoopfile

 

1.3.18      rm

使用方法:hadoop fs -rm URI [URI …]

删除指定的文件。只删除非空目录和文件。

[[email protected] input]$

hadoop fs -rm localfile/user/hadoop/hadoopfile

 

1.3.19      rmr

使用方法:hadoop fs -rmr URI [URI …]

delete的递归版本。

[[email protected]]$

hadoop fs -rmr /user/hadoop/dir

 

1.3.20      setrep

使用方法:hadoop fs -setrep [-R] <path>

改变一个文件的副本系数。-R选项用于递归改变目录下所有文件的副本系数。

[[email protected] input]$

hadoop fs –setrep –w 3 –R /user/hadoop/input/example1

 

1.3.21      stat

使用方法:hadoop fs -stat URI [URI …]

返回指定路径的统计信息。

返回该文件夹或者文件的创建时间

[[email protected]]$

hadoop fs –stat /user/hadoop/input/example1

 

1.3.22      tail

使用方法:hadoop fs -tail [-f] URI

将文件尾部1K字节的内容输出到stdout。支持-f选项(动态监控文件增长数据),行为和Unix中一致。

[[email protected] input]$

hadoop fs –tail /user/hadoop/input/example1/file1

 

1.3.23      test

使用方法:hadoop fs -test -[ezd] URI

选项:

-e 检查文件是否存在。如果存在则返回0。

-z 检查文件是否是0字节。如果是则返回0。

-d 如果路径是个目录,则返回1,否则返回0。

[[email protected] input]$

hadoop fs–test
e /user/hadoop/input/example1/file1

hadoop fs –test –z /user/hadoop/input/example1/file1

hadoop fs –test –d /user/hadoop/input/example1/file1

 

1.3.24      text

使用方法:hadoop fs -text <src>

将源文件输出为文本格式。允许的格式是zip和TextRecordInputStream。

[[email protected] input]$

hadoop fs –text /user/hadoop/input/example1/file1.zip

 

1.3.25      touchz

使用方法:hadoop fs -touchz URI [URI …]

创建一个0字节的空文件。

[[email protected] input]$

hadoop fs –touchz /user/hadoop/input/example1/newfile

 

1.4       fsck

Usage: DFSck <path> [-move | -delete | -openforwrite][-files [-blocks [-locations | -racks]]]

<path>            检查这个目录中的文件是否完整

-move              破损的文件移至/lost+found目录

-delete            删除破损的文件

-openforwrite   打印正在打开写操作的文件

-files                打印正在check的文件名

-blocks             打印block报告 (需要和-files参数一起使用)

-locations         打印每个block的位置信息(需要和-files参数一起使用)

-racks               打印位置信息的网络拓扑图 (需要和-files参数一起使用)

 

1.5       jar

运行jar文件。用户可以把他们的Map Reduce代码捆绑到jar文件中,使用这个命令执行。

用法:hadoop jar <jar> [mainClass] args...

[[email protected] input]$

hadoop jar /usr/joe/wordcount.jarorg.myorg.WordCount

/usr/joe/wordcount/input  /usr/joe/wordcount/output

 

1.6       job

用于和Map Reduce作业交互和命令。

用法: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>]


命令选项


描述


-submit <job-file>


提交作业


-status <job-id>


打印map和reduce完成百分比和所有计数器。


-counter <job-id> <group-name> <counter-name>


打印计数器的值。


-kill <job-id>


杀死指定作业。


-events <job-id> <from-event-#> <#-of-events>


打印给定范围内jobtracker接收到的事件细节。


-history [all] <jobOutputDir>


-history <jobOutputDir> 打印作业的细节、失败及被杀死原因的细节。更多的关于一个作业的细节比如成功的任务,做过的任务尝试等信息可以通过指定[all]选项查看。


-list [all]


-list all显示所有作业。-list只显示将要完成的作业。


-kill-task <task-id>


杀死任务。被杀死的任务不会不利于失败尝试。


-fail-task <task-id>


使任务失败。被失败的任务会对失败尝试不利。

 

1.7       pipes

运行pipes作业。

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


命令选项


描述


-conf <path>


作业的配置


-jobconf <key=value>, <key=value>, ...


增加/覆盖作业的配置项


-input <path>


输入目录


-output <path>


输出目录


-jar <jar file>


Jar文件名


-inputformat <class>


InputFormat类


-map <class>


Java Map类


-partitioner <class>


Java Partitioner


-reduce <class>


Java Reduce类


-writer <class>


Java RecordWriter


-program <executable>


可执行程序的URI


-reduces <num>


reduce个数

 

1.8       version

打印版本信息。

用法:hadoop version

 

1.9       CLASSNAME

hadoop脚本可用于调调用任何类。

用法:hadoop CLASSNAME

运行名字为CLASSNAME的类。

 

2、 管理命令

2.1   Balancer

运行集群平衡工具。管理员可以简单的按Ctrl-C来停止平衡过程

用法:hadoop balancer [-threshold <threshold>]


命令选项


描述


-threshold<threshold>


磁盘容量的百分比。这会覆盖缺省的阀值。

2.2   Daemonlog

获取或设置每个守护进程的日志级别。

用法:hadoop daemonlog -getlevel <host:port> <name>

用法:hadoop daemonlog -setlevel <host:port> <name><level>


命令选项


描述


-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>

 

2.3    datanode

运行一个HDFS的datanode。

用法:hadoop datanode [-rollback]


选项


描述


-rollback


将datanode回滚到前一个版本。这需要在停止datanode,分发老的hadoop版本之后使用。

 

2.4   dfsadmin

运行一个HDFS的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>] [-help [cmd]]


命令选项


描述


-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属性指定的目录下的<filename>文件。对于下面的每一项,<filename>中都会一行内容与之对应

1. Namenode收到的Datanode的心跳信号

2. 等待被复制的块

3. 正在被复制的块

4. 等待被删除的块


-setQuota <quota> <dirname>...<dirname>


为每个目录 <dirname>设定配额<quota>。目录配额是一个长整型整数,强制限定了目录树下的名字个数。

命令会在这个目录上工作良好,以下情况会报错:

1. N不是一个正整数,或者

2. 用户不是管理员,或者

3. 这个目录不存在或是文件,或者

4. 目录会马上超出新设定的配额。


-clrQuota <dirname>...<dirname>


为每一个目录<dirname>清除配额设定。

命令会在这个目录上工作良好,以下情况会报错:

1. 这个目录不存在或是文件,或者

2. 用户不是管理员。

如果目录原来没有配额不会报错。


-help [cmd]


显示给定命令的帮助信息,如果没有给定命令,则显示所有命令的帮助信息。

 

2.5   Jobtracker

运行MapReduce job Tracker节点。

用法:hadoop jobtracker

 

2.6   Namenode

运行namenode。有关升级,回滚。

用法:hadoop namenode [-format] | [-upgrade] | [-rollback] | [-finalize] |[-importCheckpoint]


命令选项


描述


-format


格式化namenode。它启动namenode,格式化namenode,之后关闭namenode。


-upgrade


分发新版本的hadoop后,namenode应以upgrade选项启动。


-rollback


将namenode回滚到前一版本。这个选项要在停止集群,分发老的hadoop版本后使用。


-finalize


finalize会删除文件系统的前一状态。最近的升级会被持久化,rollback选项将再不可用,升级终结操作之后,它会停掉namenode。


-importCheckpoint


从检查点目录装载镜像并保存到当前检查点目录,检查点目录由fs.checkpoint.dir指定。

 

2.7   secondarynamenode

运行HDFS的secondary namenode。参考SecondaryNamenode了解更多。

用法:hadoop secondarynamenode [-checkpoint [force]] | [-geteditsize]


命令选项


描述


-checkpoint [force]


如果EditLog的大小 >= fs.checkpoint.size,启动Secondary namenode的检查点过程。 如果使用了-force,将不考虑EditLog的大小。


-geteditsize


打印EditLog大小。

 

2.8   tasktracker

运行MapReduce的task Tracker节点。

用法:hadoop tasktracker

时间: 2024-11-10 13:54:18

Hadoop命令手册的相关文章

一步一步跟我学习hadoop(3)----hadoop命令手册

上节我们学习了hadoop的eclipse插件安装和wordcount程序的运行,本篇对hadoop命令进行一个系统的了解 hadoop的命令通过HADOOP_HOME\bin\hadoop命令触发,我们可以在命令行执行 hadoop --help 来提示用户的命令输入. hadoop命令分为两大类:用户命令和管理命令,以下是hadoop命令的详细解读 本篇博客是摘自官网http://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html 0概

linux命令手册

linux命令非为内置命令和外部命令 内置命令是shell程序的一部分 外部命令是系统的软件功能,执行过程由shell程序控制 区别内置命令和外部命令:type 内置命令显示为 is a shell builtin: 外部命令显示为路径 获得命令的使用帮助: 内部命令:help COMMAND 外部命令:COMMAND --help 命令手册:manual man COMMAND 查看命令使用手册 man(数字):表示显示第几章节的内容:不跟数字:显示第一次出现的章节 显示出现乱码时,说明字符集

【转】Hadoop命令大全

Hadoop命令大全 本节比较全面的向大家介绍一下Hadoop命令,欢迎大家一起来学习,希望通过本节的介绍大家能够掌握一些常见Hadoop命令的使用方法.下面是Hadoop命令的详细介绍. 1.列出所有HadoopShell支持的命令 $bin/hadoopfs-help 2.显示关于某个命令的详细信息 $bin/hadoopfs-helpcommand-name 3.用户可使用以下命令在指定路径下查看历史日志汇总.这条命令会显示作业的细节信息,失败和终止的任务细节. $bin/hadoopjo

Hadoop命令参数说明

namenode(hdfs)+jobtracker(mapreduce)可以放在一台机器上,datanode+tasktracker可以在一台机器上,辅助namenode要单独放一台机器,jobtracker通常情况下分区跟datanode一样(目录最好分布在不同的磁盘上,一个目录对应一个磁盘),namenode存储目录需要格式化,datanode存储目录不需要格式化,启动时自动创建 同一个datanode上的每个磁盘上的块不会重复,不同datanode之间的块才可能重复 一些文件的说明: 1.

[hadoop]命令行编译并运行hadoop例子WordCount

首先保证JDK.Hadoop安装设置成功 可以参考[linux]ubuntu下安装hadoop [linux]ubutnu12.04 下安装jdk1.7 使用hadoop版本为1.2.1,jdk为1.7 在hadoop-1.2.1\src\examples\org\apache\hadoop\examples找到WordCount.java 源码如下: 1 /** 2 * Licensed under the Apache License, Version 2.0 (the "License&q

sqlplus命令手册

show和set命令是两条用于维护SQLPlus系统变量的命令 : SQL> show all --查看所有系统变量值 SQL>show user --显示当前连接用户 SQL>show error --显示错误(编译function,procedure,package,pl/sql的时候,可以查看具体的错误提示) SQL>set sqlprompt SQL  --设置默认提示符,默认值就是SQL SQL>set linesize 1000 --设置屏幕显示行宽,默认100

【源】从零自学Hadoop(12):Hadoop命令中

阅读目录 序 HDFS Commands User Commands Administration Commands Debug Commands 引用 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇,我们对Hadoop命令进行了简略的列举,但是Hadoop命令特多,还有一部分没有列举完,官网基本都是英文的,所以只能拙略的翻译下,妄大家见谅. 下面,我们就开始对Hadoo

【源】从零自学Hadoop(11):Hadoop命令上

阅读目录 序 概述 Hadoop Common Commands User Commands Administration Commands File System Shell 引用 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇,我们从发展历程,架构,MapReduce等方面对比了Hadoop1.x与Hadoop2.x,特别是这这几年,2.x的发展已经可以适合很多的应用

hadoop命令报错:权限问题

root用户执行hadoop命令报错: [[email protected] conf]# hadoop fs -ls /user/ [INFO] 17:50:42 main [RetryInvocationHandler]Exception while invoking getFileInfo of class ClientNamenodeProtocolTranslatorPB over vmocdp127.test.com/172.16.145.127:8020. Trying to fa