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
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
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代表失败
- hdfs dfs -get /user/hadoop/file localfile
- hdfs dfs -get hdfs://nn.example.com/user/hadoop/file localfile
permissions number_of_replicas userid groupid filesize modification_date modification_time filename
permissions userid groupid modification_date modification_time dirname例子:hdfs dfs -ls /user/hadoop/file1
- 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
- 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
- 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
- hdfs dfs -rmr /user/hadoop/dir
- hdfs dfs -rmr hdfs://nn.example.com/user/hadoop/dir
语法: 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