HDFS的命令行接口类似传统的Shell命令,可以通过命令行接口与HDFS系统进行交互,从而对系统中的文件进行读取、移动、创建操作。

命令行接口有两种格式如下:

hadoop fs -命令 文件路径
hdfs dfs -命令 文件路径

执行hadoop fs 或者 hdfs dfs可以列举出所有的HDFS命令:

hadoop fs

hadoop 命令 指定hdfs hdfs命令行_大数据

1、ls  

使用 ls 命令可以查看系统中的目录和文件,这里我们以HDFS的根目录为例。命令如下:

hadoop fs -ls 需要查看的文件目录
hadoop fs -ls /

 递归列出HDFS文件系统目录下的所有目录和文件(由于文件过多就不好截屏了)。命令如下:

hadoop fs -ls -R /

2、mkdir

使用 mkdir 命令可以在HDFS系统中创建文件或者目录。例如,在HDFS根目录下创建文件input,命令如下:

hadoop fs -mkdir 需要创建的文件的路径
hadoop fs -mkdir /input/

也可以使用 -p 参数创建多级目录,如果父目录不存在,则会自动创建,命令如下:

hadoop fs -mkdir -p 需要创建的多级目录路径
hadoop fs -mkdir -p /output/file

3、put

使用 put 命令可以将本地文件上传到HDFS系统中(类似于复制)。例如,将本地当前目录文件 a.txt 上传到HDFS文件系统根目录的下(/),命令如下:

hadoop fs -put 需要上传的文件地址 上传到HDFS的文件地址 
hadoop fs -put ~/a.txt /

4、moveFromLocal

使用 moveFromLocal 命令可以将本地文件移动到HDFS文件系统下,可以一次性移动多个文件。与put命令类似,但是不同的是,该命令执行后源文件将被删除(类似于剪切)。例如,将本地当前目录文件 a.txt 上传到HDFS文件系统根目录的下(/)

hadoop fs -moveFromLocal 需要上传的文件路径 上传到HDFS的文件路径
hadoop fs -moveFromLocal ~/a.txt /

5、get

使用 get 命令可以将HDFS文件系统中的文件下载到本地,注意下载时的文件名不能和本地文件名相同,否则会提示文件已经存在。例如,将HDFS根目录下的 a.txt 文件下载到本地根目录下(~)注意:需要先删除根目录下的 a.txt 文件。不然会提示文件已经存在:

hadoop fs -get 需要下载的文件在HDFS中的路径 下载到H本地文件的路径
hadoop fs -get /a.txt ~/

6、rm

使用 rm 命令可以删除HDFS系统中的文件或文件夹,每次可以删除多个文件夹或者目录。例如删除HDFS根目录下 input 文件夹中的文件 a.txt。

hadoop fs -rm 需要删除的文件的路径
hadoop fs -rm /input/a.txt

递归删除HDFS根目录下的output问价夹中的a.txt文件。

hadoop fs -rm -r 需要删除的多级文件路径
hadoop fs -rm -r /output

7、cp

使用 cp 命令可以复制HDFS中的文件到另一个文件,在移动的过程中可以给文件重命名。此时源文件还存在(类似于复制),例如将文件 /input/a.txt 文件移动到 /input/b.txt,命令如下

hadoop fs -cp 源文件的路径 移动后的路径及名称
hadoop fs -cp /input/a.txt /input/b.txt

8、mv

使用 mv 命令可以复制HDFS中的文件到另一个文件,在移动的过程中可以给文件重命名。此时源文件不存在(类似于剪切),例如将文件 /input/a.txt 文件移动到 /input/b.txt,命令如下

hadoop fs -mv 源文件的路径 移动后的路径及名称
hadoop fs -mv /input/a.txt /input/b.txt

9、appendToFile

使用 appendToFile 命令可以将单个或者多个文件的内容追加到HDFS系统的文件中。例如,将本地当前目录的 a.txt 文件的内容追加到HDFS系统中 /input/b.txt 文件中,命令如下:

hadoop fs -appendToFile 需要加入的内容文件路径 被追加内容的文件路径
hadoop fs -appendToFile a.txt /input/b.txt

 如果需要一次性追加多个本地文件的内容,则多个文件用 空格 隔开,例如,将本地文件 a.txt  和 b.txt 内容追加到HDFS系统文件的 /input/c.txt 文件中,命令如下:

hadoop fs -appendTofile 文件1 文件2 文件3 ... HDFS系统中被追加的文件
hadoop fs -appendTofile a.txt b.txt /input/c.txt

 10、cat 

使用 cat 命令可以查看并输出HDFS系统中某个文件的所有内容。例如,查看HDFS系统中的文件 /input/a.txt 的所有内容。命令如下:

hadoop fs -cat 需要查看的文件路径
hadoop fs -cat /input/a.txt

也可以同时查看并输出HDFS中的多个文件内容,使用空格隔开即可,结果会将多个文件的内容按照顺序合并输出。例如,查看HDFS中的文件 /input/a.txt 和文件 /input/b.txt,命令如下:

hadoop fs -cat 需要查看的文件路径1 需要查看的文件路径2 ...
hadoop fs -cat /input/a.txt /input/b.txt

注意:

在使用HDFS命令操作文件时,HDFS中的文件或目录的路径必须写绝对路径,而本地文件的路径可以是相对路径。