Hadoop Shell命令大全

hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于其它的文件系统LocalFS、HFTP FS、S3 FS等。对于大多数 程序猿/媛 来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大便利之一,至少对于想熟悉乃至尽快熟练操作HDFS的人来说。

由于平时在工作中经常用到Hadoop Shell命令来操作HDFS上的文件,有时候因为Hadoop Shell命令不熟悉,需要重新查找;或者需要某个命令的参数;再或者需要知晓相似命令的差异;于是便有了本文,对于Hadoop Shell命令的总结,方便自己以后得工作,也算是对类似工作的总结。

 

Shell代码 复制代码  收藏代码
  1. hadoop fs FsShell   
  2.       Usage: java FsShell   
  3.            [-ls <path>]   
  4.            [-lsr <path>]   
  5.            [-df [<path>]]   
  6.            [-du <path>]   
  7.            [-dus <path>]   
  8.            [-count[-q] <path>]   
  9.            [-mv <src> <dst>]   
  10.            [-cp <src> <dst>]   
  11.            [-rm [-skipTrash] <path>]   
  12.            [-rmr [-skipTrash] <path>]   
  13.            [-expunge]   
  14.            [-put <localsrc> ... <dst>]   
  15.            [-copyFromLocal <localsrc> ... <dst>]   
  16.            [-moveFromLocal <localsrc> ... <dst>]   
  17.            [-get [-ignoreCrc] [-crc] <src> <localdst>]   
  18.            [-getmerge <src> <localdst> [addnl]]   
  19.            [-cat <src>]   
  20.            [-text <src>]   
  21.            [-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]   
  22.            [-moveToLocal [-crc] <src> <localdst>]   
  23.            [-mkdir <path>]   
  24.            [-setrep [-R] [-w] <rep> <path/file>]   
  25.            [-touchz <path>]   
  26.            [-test -[ezd] <path>]   
  27.            [-stat [format] <path>]   
  28.            [-snapshot <path>]   
  29.            [-tail [-f] <file>]   
  30.            [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]   
  31.            [-chown [-R] [OWNER][:[GROUP]] PATH...]   
  32.            [-chgrp [-R] GROUP PATH...]   
  33.            [-help [cmd]]  
hadoop fs FsShell      Usage: java FsShell           [-ls <path>]           [-lsr <path>]           [-df [<path>]]           [-du <path>]           [-dus <path>]           [-count[-q] <path>]           [-mv <src> <dst>]           [-cp <src> <dst>]           [-rm [-skipTrash] <path>]           [-rmr [-skipTrash] <path>]           [-expunge]           [-put <localsrc> ... <dst>]           [-copyFromLocal <localsrc> ... <dst>]           [-moveFromLocal <localsrc> ... <dst>]           [-get [-ignoreCrc] [-crc] <src> <localdst>]           [-getmerge <src> <localdst> [addnl]]           [-cat <src>]           [-text <src>]           [-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]           [-moveToLocal [-crc] <src> <localdst>]           [-mkdir <path>]           [-setrep [-R] [-w] <rep> <path/file>]           [-touchz <path>]           [-test -[ezd] <path>]           [-stat [format] <path>]           [-snapshot <path>]           [-tail [-f] <file>]           [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]           [-chown [-R] [OWNER][:[GROUP]] PATH...]           [-chgrp [-R] GROUP PATH...]           [-help [cmd]]

 

下面详细解释一下命令的操作,这些命令和Unix下的命令差不多,有些看了就明白其含义了。

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -ls <path>  
hadoop fs -ls <path>

 返回文件path的统计信息,信息包括:

permissions number_of_replicas userid groupid filesize modification_date modification_time filename

有没有感觉和shell命令的ls很是类似,需要注意的是number_of_replicas字段,和filesize字段,更要注意一下,path和file在该命令执行时的区别。

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -lsr <path>  
hadoop fs -lsr <path>

 这个是ls的recursive版本,类似于ls -R命令和ls的区别。

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -du [-s] [-h] URI [URI …]  
hadoop fs -du [-s] [-h] URI [URI …]

 显示文件的大小,其中:

-s:显示文件及其子目录的总体大小

-h:将结果转化成易识别的文件大小

URI表示文件、目录的路径,可以使相对路径,或者绝对路径

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -dus URI [URI …]  
hadoop fs -dus URI [URI …]

 hadoop fs -du -s URI [URI …]的简写形式。

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -df <path>  
hadoop fs -df <path>

 显示Hadoop所使用的文件系统的大小

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -count [-q] <path>  
hadoop fs -count [-q] <path>

 显示path 下的目录数量,文件大小等信息

默认情况下显示一下信息:

DIR_COUNT, FILE_COUNT, CONTENT_SIZE FILE_NAME

添加-q信息后,输出的信息更多:

QUOTA, REMAINING_QUATA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, DIR_COUNT, FILE_COUNT, CONTENT_SIZE, FILE_NAME

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -mv <src> <dst>  
hadoop fs -mv <src> <dst>

  从src移动到dst,允许多个源移动到同一个dst,dst必须是目录,不过,不能在不同的FS中移动。

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -cp <src> ... <dst>  
hadoop fs -cp <src> ... <dst>

 拷贝多个源到dst,限制是dst必须是目录

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -rm [-skipTrash] <path>  
hadoop fs -rm [-skipTrash] <path>

 删除文件,不能删除目录

-skipTrash:直接删除文件,不再往.Trash里面放

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -rmr [-skipTrash] <path>  
hadoop fs -rmr [-skipTrash] <path>

 这个能够迭代删除目录及其下面的文件

-skipTrash:和rm参数里面的功能相同

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -expunge  
hadoop fs -expunge

 清空Trash,Trash的概念详见http://hadoop.apache.org/docs/r1.0.4/hdfs_design.html,参考下Trash的含义

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -put <localsrc> ... <dst>  
hadoop fs -put <localsrc> ... <dst>

 复制单个、或者多个本地FS的目录或者文件到目标文件系统

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -copyFromLocal <localsrc> ... <dst>  
hadoop fs -copyFromLocal <localsrc> ... <dst>

 和put命令类似,唯一的限制是src必须是本地的文件

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -moveFromLocal <localsrc> ... <dst>  
hadoop fs -moveFromLocal <localsrc> ... <dst>

 和put命令类似,这个命令会在localsrc执行完成后,删除本地的文件,注意是删除本地的文件

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -get [-imnoreCrc] <localsrc> ... <dst>  
hadoop fs -get [-imnoreCrc] <localsrc> ... <dst>

 拷贝FS上的src到本地的dst目录

-imnoreCrc:拷贝时忽略crc检验,如果想拷贝CRCs,需要添加-crc参数

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -getmerge <src> <localdst> [addnl]  
hadoop fs -getmerge <src> <localdst> [addnl]

 合并src和dst文件,将src合并到dst文件之后,注意dst是个本地文件

addnl:会在每行结尾添加newline字符

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -cat <src>  
hadoop fs -cat <src>

 将src的内容输出到stdout,和Unix下面的cat功能类似

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -text <src>  
hadoop fs -text <src>

 把src文件按照text输出,zip或者TextRecordInputStream格式的也可以按照text输出。

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -copyToLocal [-ignoreCrc] [-crc] <src> <localdst>  
hadoop fs -copyToLocal [-ignoreCrc] [-crc] <src> <localdst>

 和get命令类似,唯一的限制是dst必须是本地文件系统的文件

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -moveToLocal [-crc] <src> <localdst>  
hadoop fs -moveToLocal [-crc] <src> <localdst>

 输出:'-moveToLocal' is not implemented yet,还没有实现

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -mkdir <path>  
hadoop fs -mkdir <path>

 创建path文件夹,如果path的父目录不存在,会迭代创建,类似于mkdir -p命令

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -setrep [-R] <rep> <path/file>  
hadoop fs -setrep [-R] <rep> <path/file>

 修改HDFS文件或者目录的Replication数目,对于重要的文件,需要增加副本数目,确保不会丢失或者损坏。

-R参数表示迭代更新,目录下面的副本数目同时更新。

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -touchz <path>  
hadoop fs -touchz <path>

 创建一个大小为0的文件,和touch的结果类似

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -test -[ezd] <path>  
hadoop fs -test -[ezd] <path>

 测试文件的目录属性

-e:测试文件是否存在

-z:文件大小是否为0

-d:测试是否是目录

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -stat [format] <path>  
hadoop fs -stat [format] <path>

 返回目录的统计信息

 

Shell代码 复制代码  收藏代码
  1. hadoop fs -tail [-f] <file>  
hadoop fs -tail [-f] <file>

 显示文件的最后kb信息,-f参数和Unix下面的参数一样

 

Java代码 复制代码  收藏代码
  1. hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...   
  2. hadoop fs -chown [-R] [OWNER][:[GROUP]] PATH...   
  3. hadoop fs -chgrp [-R] GROUP PATH...  
hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...hadoop fs -chown [-R] [OWNER][:[GROUP]] PATH...hadoop fs -chgrp [-R] GROUP PATH...

 这三个是权限操作命令,和Unix命令下的功能类似。

 

Hadoop Shell命令还是比较简单的,只是其中的差别必须等到用的时候才能体会,本文只是做个备忘,将工作中常用的命令整理下。

实际上,在工作中使用hadoop shell命令还是比较有限的,这些足够应付工作的常规情况了

你可能感兴趣的:(Hadoop Shell命令大全)