您可以在已经创建好的E-MapReduce(简称EMR)集群中,直接使用hadoop fs命令来对HDFS中的文件进行操作。本文为您介绍HDFS的常见命令。

前提条件

背景信息

HDFS常见命令如下表所示。
命令 功能
mkdir

在HDFS文件系统中创建目录。

touchz

在HDFS文件系统中新建一个空文件。

ls

在文件或者目录创建完之后,您可以查看指定路径下的文件或目录信息。在查看文件或目录信息的时候需要给出绝对路径。

put

上传本地文件到HDFS的指定路径。

du

显示文件的大小或者目录中所有文件的大小。

cat

查看HDFS上文件的内容。

cp

在HDFS系统中,复制文件或目录到目标路径,并且保持源文件内容或目录结构不变。此命令允许有多个源路径,此时目标路径必须是一个目录。

mv

在HDFS系统中,移动文件或目录到目标路径,并且不保留源文件内容或目录结构。此命令允许有多个源路径,此时目标路径必须是一个目录。

get

下载HDFS指定路径的文件到本地路径。

rm

删除HDFS系统中指定的文件。

rmr

递归删除HDFS系统中指定的目录及其文件。

关于Apache Hadoop的详细介绍,请参见Apache Hadoop官网

mkdir

在HDFS文件系统中创建目录。

  • 语法
    hadoop fs -mkdir <path1> [path2] ... [pathn]
  • 示例:
    • 在HDFS文件系统中,创建dir目录。
      hadoop fs -mkdir dir
      您可以通过ls命令查看创建的目录。mkdir-1
    • dir目录下,创建sub-dir目录。
      hadoop fs -mkdir /dir/sub-dir
      您可以通过ls命令查看创建的目录。mkdir

touchz

在HDFS文件系统中新建一个空文件。

  • 语法
    hadoop fs -touchz URI [URI ...]
  • 示例:在HDFS文件系统中新建/dir/目录下的emptyfile.txt文件。
    hadoop fs -touchz /dir/emptyfile.txt
    您可以通过ls命令查看新建的文件。touchz-1

ls

在文件或者目录创建完之后,您可以查看指定路径下的文件或目录信息。在查看文件或目录信息的时候需要给出绝对路径。

说明 hadoop fs没有进入某个目录下的概念。
  • 语法
    hadoop fs -ls <path>
  • 示例:
    • 查看文件hello.txt的信息。
      hadoop fs -ls hello.txt
      ls-1
    • 查看/dir/sub-dir目录的信息。
      hadoop fs -ls /dir/sub-dir
      ls-2

put

上传本地文件到HDFS的指定路径。

  • 语法
    hadoop fs -put <path1> <path2>
  • 示例:上传本地文件hello.txt至HDFS的/dir/sub-dir路径下。
    hadoop fs -put hello.txt /dir/sub-dir
    您可以通过ls命令查看文件上传的情况。put

du

显示文件的大小或者目录中所有文件的大小。

  • 语法
    hadoop fs -du <path>
  • 示例
    • 查看文件的大小。
      hadoop fs -du hello.txt
      du-1
    • 查看目录下所有文件的大小。
      hadoop fs -du /dir
      du-2

cat

查看HDFS上文件的内容。

  • 语法
    hadoop fs -cat <path>
  • 示例:
    • 查看hello.txt文件的内容。
      hadoop fs -cat hello.txt
      cat-1
    • 查看/dir/sub-dir/目录下hello_world.txt文件的内容。
      hadoop fs -cat /dir/sub-dir/hello_world.txt
      cat-2

cp

在HDFS系统中,复制文件或目录到目标路径,并且保持源文件内容或目录结构不变。此命令允许有多个源路径,此时目标路径必须是一个目录。

说明 您也可以使用此命令对文件重命名,以保留源文件或目录。
  • 语法
    hadoop fs -cp <path1> <path2>
  • 示例:复制/dir/sub-dir/目录下的文件hello_world.txt/tmp目录下。
    hadoop fs -cp /dir/sub-dir/hello_world.txt /tmp
    您可以通过ls命令查看文件复制的情况。cp-1

mv

在HDFS系统中,移动文件或目录到目标路径,并且不保留源文件内容或目录结构。此命令允许有多个源路径,此时目标路径必须是一个目录。

  • 语法
    hadoop fs -mv <path1> <path2>
  • 示例
    • 移动/tmp/目录下的文件hello_world2.txt/dir/sub-dir/目录下。
      hadoop fs -mv /tmp/hello_world2.txt /dir/sub-dir/
      您可以通过ls命令查看文件移动的情况。mv-1
    • 移动/tmp/路径下的test目录至/dir/sub-dir/目录下。
      hadoop fs -mv /tmp/test /dir/sub-dir/
      您可以通过ls命令查看目录移动的情况。mv-2

get

下载HDFS指定路径的文件到本地路径。

  • 语法
    hadoop fs -get <path1> <path2>
  • 示例:下载HDFS系统中/dir/sub-dir/目录下的文件hello_world2.txt至本地的/emr路径下。
    hadoop fs -get /dir/sub-dir/hello_world2.txt /emr
    您可以通过ls命令查看文件下载的情况。get-1

rm

删除HDFS系统中指定的文件。

  • 语法
    hadoop fs -rm <path>
  • 示例:删除HDFS系统中/dir/sub-dir/目录下的文件hello_world2.txt
    hadoop fs -rm /dir/sub-dir/hello_world2.txt
    您可以通过ls命令查看文件删除的情况。rm-1

rmr

递归删除HDFS系统中指定的目录及其文件。

  • 语法
    hadoop fs -rmr <path>
  • 示例:递归删除HDFS系统中/dir/下的sub-dir目录及其文件。
     hadoop fs -rmr /dir/sub-dir/
    您可以通过ls命令查看目录删除的情况。rmr-1