官方命令文档

https://hadoop.apache.org/docs/r3.3.0/hadoop-project-dist/hadoop-common/FileSystemShell.html

1.HDFS shell命令行解释说明

Hadoop提供了文件系统的shell命令行客户端:

  1. hadoop fs [generic options]

HDFS-SHELL操作 - 图1

文件系统协议

HDFS Shell CLI支持操作多种文件系统,包括本地文件系统(file:///)、分布式文件系统(hdfs://nn:8020)等

具体操作的是什么文件系统取决于命令中文件路径URL中的前缀协议

如果没有指定前缀,则将会读取环境变量中的fs.defaultFS属性,以该属性值作为默认文件系统

  1. # 查看的是当前HDFS使用的Linux服务器本地的所有文件 相等于 在Linux执行ls
  2. hadoop fs -ls file:///

HDFS-SHELL操作 - 图2

  1. # 查看的是分布式文件系统
  2. hadoop fs -ls hdfs://node1:8020/

HDFS-SHELL操作 - 图3

  1. # 如果没有指定前缀,则将会读取环境变量中的fs.defaultFS属性(core-site.xml),以该属性值作为默认文件系统
  2. hadoop fs -ls /

HDFS-SHELL操作 - 图4

HDFS-SHELL操作 - 图5

命令之间的区别

hadoop dfs 只能操作HDFS文件系统(包括与Local FS间的操作)—不过已经过时

hdfs dfs 只能操作HDFS文件系统相关(包括与Local FS间的操作) —常用

hadoop fs 可操作任意文件系统,不仅仅是hdfs文件系统 —使用范围更广

2.HDFS shell命令行常用操作

1.查看帮助

  1. hadoop fs -help

2.创建文件夹

  1. # path 为待创建的目录
  2. # -p选项的行为与Unix mkdir -p非常相似,它会沿着路径创建父目录
  3. hadoop fs -mkdir [-p] <path> ...

HDFS-SHELL操作 - 图6

HDFS-SHELL操作 - 图7

3.查看指定目录下内容

  1. # path 指定目录路径
  2. # -h 人性化显示文件size
  3. # -R 递归查看指定目录及其子目录
  4. hadoop fs -ls [-h] [-R] [<path> ...]

HDFS-SHELL操作 - 图8

HDFS-SHELL操作 - 图9

4.上传文件到HDFS指定目录下

  1. hadoop fs -put [-f] [-p] <localsrc> ... <dst>
  2. # -f 覆盖目标文件(已存在下)
  3. # -p 保留访问和修改时间,所有权和权限
  4. # localsrc 本地文件系统(客户端所在机器)
  5. # dst 目标文件系统(HDFS)
  6. # 例子
  7. # hadoop fs -put file:///root/1.txt hdfs://node1:8020/test2
  8. # hadoop fs -put 1.txt /test

HDFS-SHELL操作 - 图10

HDFS-SHELL操作 - 图11

HDFS-SHELL操作 - 图12

5.查看HDFS文件内容

  1. hadoop fs -cat <src> ...
  2. # 读取指定文件全部内容,显示在标准输出控制台
  3. # 注意:对于大文件内容读取,慎重

HDFS-SHELL操作 - 图13

6.下载HDFS文件

  1. hadoop fs -get [-f] [-p] <src> ... <localdst>
  2. # 下载文件到本地文件系统指定目录, localdst必须是目录
  3. # -f 覆盖目标文件(已存在下)
  4. # -p 保留访问和修改时间,所有权和权限

HDFS-SHELL操作 - 图14

7.拷贝HDFS文件

  1. hadoop fs -cp [-f] <src> ... <dst>
  2. # -f 覆盖目标文件(已存在下)

HDFS-SHELL操作 - 图15

8.追加数据到HDFS文件中

  1. hadoop fs -appendToFile <localsrc> ... <dst>
  2. # 将所有给定本地文件的内容追加到给定dst文件
  3. # dst如果文件不存在,将创建该文件
  4. # 如果<localSrc>为-,则输入为从标准输入中读取

HDFS-SHELL操作 - 图16

9.数据移动

  1. hadoop fs -mv <src> ... <dst>
  2. # 移动文件到指定文件夹下
  3. # 可以使用该命令移动数据,重命名文件的名称

HDFS-SHELL操作 - 图17

HDFS-SHELL操作 - 图18