[综合]Apache Hadoop 2.2.0文件系统shell(2)[翻译]

[综合]Apache Hadoop 2.2.0文件系统shell(二)[翻译]

cp

用法:

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.

du

用法:

hdfs dfs -du [-s] [-h] URI [URI ...]

展示目录包括的文件和目录大小,如果是文件的话那么就是他的size。

选项:

-s 展示文件合计大小
-h 格式化显示 如 64.0m标示 67108864

例子:

hdfs dfs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://nn.example.com/user/hadoop/dir1

成功返回0,失败返回-1.

dus

用法:

 hdfs dfs -dus <args>

展示文件大小,等同于 hdfs dfs -du -s

expunge

用法:

hdfs dfs -expunge

清空hdfs的垃圾箱,更多信息参考hdfs的架构设计

get

用法:

hdfs dfs -get [-ignorecrc] [-crc] <src> <localdst>

拷贝文件到本地,-ignorecrc会拷贝CRC检测失败的文件,-crc可以使得CRC和文件一起被拷贝,例如:

hdfs dfs -get /user/hadoop/file localfile
hdfs dfs -get hdfs://nn.example.com/user/hadoop/file localfile

成功返回0失败返回-1.

getmerge

用法:

hdfs dfs -getmerge <src> <localdst> [addnl]

源文件和目标文件作为输入,将源文件中的所有文件合并成一个本地文件,addnl可选,用于在每个文件的结尾加一个换行符。

ls

用法:

 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

成功返回0,失败返回-1

lsr

用法:

 hdfs dfs -lsr <args>

ls的递归版本,等同于linux的ls -R

mkdir

用法:

hdfs dfs -mkdir [-p] <paths>

创建目录,-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

成功返回0,失败返回-1.

moveFromLocal

用法:

dfs -moveFromLocal <localsrc> <dst>

跟put类似,源文件在拷贝之后将会被删除。

moveToLocal

用法:

 hdfs dfs -moveToLocal [-crc] <src> <dst>

显示“还未实现”的信息

mv

用法:

 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

成功返回0,失败返回-1.

put

用法:

hdfs dfs -put <localsrc> ... <dst>

从本地源文件拷贝到目标文件系统上,允许多源文件,不过目标文件必须为目录,同时也支持命令行输入然后写到文件系统上去。

例子:

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.

成功返回0,失败返回-1.

rm

用法:

hdfs dfs -rm [-skipTrash] URI [URI ...]

删除文件或者目录,-skipTrash会直接删除而不是先进文件系统的垃圾站,不过如果在超额目录下删除文件的时候是非常有用的,换句话说在文件比较大的时候有用,递归删除请参看rmr

例子:

hdfs dfs -rm hdfs://nn.example.com/file /user/hadoop/emptydir

成功返回0,失败返回-1.

rmr

用法:

hdfs dfs -rmr [-skipTrash] URI [URI ...]

递归删除,-skipTrash会直接删除而不是先进文件系统的垃圾站,不过如果在超额目录下删除文件的时候是非常有用的,换句话说在文件比较大的时候有用。

例子:

hdfs dfs -rmr /user/hadoop/dir
hdfs dfs -rmr hdfs://nn.example.com/user/hadoop/dir

成功返回0,失败返回-1.

setrep

用法:

hdfs dfs -setrep [-R] [-w] <numRepicas> <path>

修改文件的备份个数,如果path为一个目录那么他会递归修改所有子文件的备份个数。

选项:

-w 会等待复制知道完成之后才会退出,这个可能要等很大一会
-R 没啥影响向后兼容

例子:

hdfs dfs -setrep -w 3 /user/hadoop/dir1

成功返回0,失败返回-1.

stat

用法:

 hdfs dfs -stat URI [URI ...]

返回此路径的相关信息。

例子:

hdfs dfs -stat path

成功返回0,失败返回-1.

tail

用法:

hdfs dfs -tail [-f] URI

展示文件的最后1kb到屏幕上。选项-f选项指定当文件发生改变的时候在屏幕上追加显示。

例子:

hdfs dfs -tail pathname

成功返回0,失败返回-1.

test

用法:

hdfs dfs -test -[ezd] URI

选项说明:

-e 检测文件是否存储,如果存在那么退出返回0
-z 检测文件长度是否为0,如果是那么返回0
-d 检测文件是否为目录,如果是那么返回0

例子:

hdfs dfs -test -e filename

text

用法:

hdfs dfs -text <src>

输出文件为text格式,支持zip and TextRecordInputStream.

touchz

用法:

hdfs dfs -touchz URI [URI ...]

创建一个空的文件

例子:

hadoop -touchz pathname

成功返回0,失败反馈-1

 

ps:

查看命令执行返回值命令为:

echo $?