File System Shell

1概括

文件系统脚本包括多种shell-like命令,这些命令直接和HDFS相互作用,此外也需要其他文件系统Hadoop的支持,比如Local FS,HFTP FS,S3 FS,和其他的。FS 脚本被调用:

bin/hadoop fs <args>

所有的FS 脚本把路径的URL作为参数。URL的格式是scheme://authority/path。对于HDFS的scheme是hdfs,其他的本地FS的scheme是file。scheme和authority是可选的。如果没有指定,默认的scheme是在配置文件中指定的。一个HDFS或者目录比如/parent/child可以被指定为hdfs://namenodehost/parent/child或者简单的是/parent/child(假设你的配置文件是设置为hdfs://namenodehost)。

FS脚本的大多数命令像对应的Unix命令。不同点是每一个命令的描述。错误的信息被发送到stderr,output被发送到stdout。

2appendToFile(hadoop-1.2.1中没有这个命令)

语法:hdfs dfs -appendToFile <localsrc> ... <dst>

从本地文件系统把单个的src或多个srcs加到目标文件系统。也从stdin读取然后加到目标文件系统。

hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile

hdfs dfs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile

hdfs dfs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile

hdfs dfs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin

返回值:返回0代表成功-1代表失败。

3cat(hadoop-1.2.1中用法是  -cat <src>表示取出所有匹配文件格式<src>的文件,并显示内容到控制台)

语法: hdfs dfs -cat URI [URI ...]

把源路径拷贝到stdout。

例子:

  • hdfs dfs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
  • hdfs dfs -cat file:///file3 /user/hadoop/file4
返回值:0代表成功-1代表失败。

4chgrp

语法:hdfs dfs -chgrp [-R] GROUP URI [URI ...]

改变文件所属的组。这个用户必须是文件的所有者,或者是一个超级用户。另外更多的信息在Permissions Guide。

可选项:-R 选项通过目录结构递归的改变。

5chmod

语法:hdfs dfs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]

改变文件的权限。-R选项通过目录结构递归的改变。这个用户必须是文件的所有者,或者是一个超级用户。另外更多的信息参考Permissions Guide。

可选项:-R选项通过目录结构递归的改变。

6chown

语法:hdfs dfs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

改变文件的所有者。这个用户必须是超级用户。更多的信息参考Permission Guide。

可选项:-R选项通过目录结构递归的改变。

7copyFromLocal

语法:hdfs dfs -copyFromLocal <localsrc> URI

和put命令相似,除了把源文件限定为本地文件。

可选项:-f选项如果目标存URI在就重写。

8copyToLocal

语法: hdfs dfs -copyToLocal [-ignorecrc] [-crc] URI <localdst>

和get命令相似,除了把源文件限制为本地文件。

9count

语法:hdfs dfs -count [-q] <paths>

统计匹配指定的文件模式路径下的目录、文件和字节的数量。-count的输出列是DIR_COUNT(目录数量),FILE_COUNT(文件数量),CONTENT_SIZE(内容大小),FILE_NAME(文件名称)

-count -q的输出列是:QUOTA,REMAINING_QUATA,SPACE_QUOTA,REMAINING_SPACE_QUOTA,DIR_COUNT,FILE_COUNT,CONTENT_SIZE,FILE_NAME

例子:

  • hdfs dfs -count hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
  • hdfs dfs -count -q hdfs://nn1.example.com/file1
返回值:0代表成功-1代表失败

10cp

语法:hdfs dfs -cp [-f] URI [URI ...] <dest>

把源文件复制到目的地。这个命令允许多个源文件,在这种情况下,目标必须是一个目录。

可选项: -f 选项如果已经存在就重写目的地。

例子:

  • hdfs dfs -cp /user/hadoop/file1 /user/hadoop/file2
  • hdfs dfs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
  • 返回值:0代表成功-1代表失败
11du
语法:hdfs dfs -du [-s] [-h] URI [URI ...]
显示文件和被给定的目录下的目录的大小或者是文件的长度,在这种情况下,它只是一个文件。
可选项:-s选项 显示文件长度的汇总,而不是单个文件。-h 选项 把文件大小格式化为“human-readable”
例子:hdfs dfs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://nn.example.com/user/hadoop/dir1
返回值:0代表成功-1代表失败。
12dus
语法:hdfs dfs -dus <args>
显示了文件长度的汇总。它代替了hdfs dfs -du -s。
13expunge
语法: hdfs dfs -expunge
14get
语法:hdfs dfs -get [-ignorecrc] [-crc] <src> <localdst>
将文件复制到本地文件系统。在-ignorecre选项下CRC检查失败的文件也可以复制。文件盒CRCs使用-crc选项可以被复制。
例子:
  • hdfs dfs -get /user/hadoop/file localfile
  • hdfs dfs -get hdfs://nn.example.com/user/hadoop/file localfile
返回值:0代表成功-1代表失败
15getmerge
语法:hdfs dfs -getmerge <src> <localdst> [addnl]
将一个源目录,目标文件作为输入,将源目录相关的文件输入到本地目标文件。随意的添加可以在每一个文件的结尾添加一个换行符。
16ls
语法: Usage:  hdfs dfs -ls <args>
对于一个文件以下面的格式返回文件的属性:
permissions number_of_replicas userid groupid filesize modification_date modification_time filename

对于一个目录返回目录的子目录,就像Unix一样。一个目录列出的格式:
permissions userid groupid modification_date modification_time dirname
例子:hdfs dfs -ls /user/hadoop/file1
17lsr
语法:hdfs dfs -lsr <args>
ls的递归版本。和Unix的ls -R相似。
18mkdir
语法:hdfs dfs -mkdir [-p] <paths>
把路径uri's作为参数,创建目录。
可选项:-p 选项和Unix mkdir -p相似,创建父目录路径。
例子:
  • hdfs dfs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
  • hdfs dfs -mkdir hdfs://nn1.example.com/user/hadoop/dir hdfs://nn2.example.com/user/hadoop/dir
19moveFromLocal
语法:dfs -moveFromLocal <localsrc> <dst>
和put命令相似。除了它的源目录在它复制之后被删除。
20moveToLocal
语法:hdfs dfs -moveToLocal [-crc] <src> <dst>
21mv
语法:   hdfs dfs -mv URI [URI ...] <dest>
把源文件移动到目的地。这个命令允许多个源文件在这种情况下目的地需要是一个目录。通过文件系统移动文件是不允许的。
例子;
  • hdfs dfs -mv /user/hadoop/file1 /user/hadoop/file2
  • hdfs dfs -mv hdfs://nn.example.com/file1 hdfs://nn.example.com/file2 hdfs://nn.example.com/file3 hdfs://nn.example.com/dir1
22put
语法:   hdfs dfs -put <localsrc> ... <dst>
从本地文件系统复制一个或多个到目的地文件系统。同时从stdin读取输入并写入到目标文件系统。
  • hdfs dfs -put localfile /user/hadoop/hadoopfile
  • hdfs dfs -put localfile1 localfile2 /user/hadoop/hadoopdir
  • hdfs dfs -put localfile hdfs://nn.example.com/hadoop/hadoopfile
  • hdfs dfs -put - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin
23rm
语法:hdfs dfs -rm [-skipTrash] URI [URI ...]
删除指定的文件。只删除非空目录或文件。如果指定了-skipTrash选项,trash。如果可能,将绕开和指定的文件立即删除。当一个超过配额的目录需要删除文件时这是有效的。
24rmr
语法: hdfs dfs -rmr [-skipTrash] URI [URI ...]
删除的递归版本。如果选项-skipTrash被指定,就trash。如果可能,将绕开和指定的文件立即删除。当一个超过配额的目录需要删除文件时这是有效的。
例子:
  • hdfs dfs -rmr /user/hadoop/dir
  • hdfs dfs -rmr hdfs://nn.example.com/user/hadoop/dir
25setrep
语法:hdfs dfs -setrep [-R] [-w] <numReplicas> <path>
改变文件的重复因子。如果路径是一个目录,这个命令在路径的目录树递归的改变文件。
选项:-w 标识要求这个命令等到复制完成。这可能会花费很长时间。-R标识接受向后兼容性。它没有影响。
例子:hdfs dfs -setrep -w 3 /user/hadoop/dir1
26stat

语法: hdfs dfs -stat URI [URI ...]

返回路径上的统计信息。

例子:hdfs dfs -stat path

27tail

语法; hdfs dfs -tail [-f] URI

向控制台显示输出文件的上千字节。

选项:-f 选项将输出追加的数据作为文件的增长,就像在Unix中一样。

例子:hdfs dfs -tail pathname

28test

语法:hdfs dfs -test -[ezd] URI

可选项;-e选项将会检查文件是否存在,如果为true则返回0。-z选项将会检查文件的长度是否为零。如果true则返回0.-d选项将检查路径是否是目录,如果true则返回0.

例子:hdfs dfs -test -e filename

29text

语法:hdfs dfs -text <src>

作为一个源文件和文本格式的输出文件。允许的格式有zip和TextRecordInputStream。

30touchz

语法: hdfs dfs -touchz URI [URI ...]

创建一个零长度的文件。

例子:hadoop -touchz pathname


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值