HDFS Shell 命令是由一系列类似Linux Shell的命令组成的

  • 1、创建文件夹
  • 2、列出指定的目录或文件
  • 3、新建文件
  • 4、上传文件
  • 5、将本地文件移动到HDFS
  • 6、下载文件
  • 7、查看文件
  • 8、追写文件
  • 9、删除目录或者文件
  • 10、显示占用的磁盘空间大小
  • 11、 HDFS中的文件复制
  • 12、HDFS中的文件移动(改名)
  • 13 、 HDFS中的文件合并后下载


操作命令是以“hdfs dfs”开头的命令。通过这些命令,用户可以完成HDFS文件的复制、删除和查找的操作。Shell命令一般格式如下:

hdfs dfs <args>
  • hdfs 是Hadoop系统在linux系统中的主命令
  • dfs是子命令,表示执行文件系统操作;
  • args 是由HDFS文件操作命令和操作参数组成

1、创建文件夹

命令: hdfs dfs -mkdir [-p] <path>

  • [-p]:表示如果父目录不存在,先创建父目录
hdfs dfs -mkdir /mydir  #新建文件夹/mydir
 hdfs dfs -mkdir -p /yourdir/dir1   #  新建文件夹/yourdir/mydir

2、列出指定的目录或文件

命令:hdfs dfs -ls [-d][-h][-R] <path>

  • [-d] :返回path
  • [-h]:h指“human-readble",表示按照人性化的单位显示文件大小,比如文件显示未10M,而不会显示1024KB
  • [-R]:级联显示paths下的文件或目录

例:列出根目录下的文件或目录:hdfs dfs -ls /

hadoop ls 参数 hadoop ls命令_linux

3、新建文件

命令:hdfs dfs -touchz <path>
例:在mydir目录下创建大小为0的空文件input.txt

hdfs dfs -touchz /mydir/input.txt

结果如下:

hadoop ls 参数 hadoop ls命令_hadoop ls 参数_02

4、上传文件

命令:hdfs dfs -put [-f][-p] <localsrc> <dst>
或 hdfs dfs -copyFromLocal[-f][-p][-l] <localsrc> <dst>

  • put或copyFromLocal命令是将本地文件上传到HDFS
  • localsrc表示本地文件的路径
  • dst表示保存在HDFS上的路径
  • -p:保留访问和修改时间,所有权和权限
  • -f :覆盖目的地(如果已经存在)

例:将本地的data.txt 上传到HDFS的/mydir下

hdfs dfs -put data.txt /mydir
或者
hdfs dfs -copyFromLocal data.txt /mydir

5、将本地文件移动到HDFS

命令: hdfs dfs -moveFromLocal <localsrc> <dst>

  • 与hdfs dfs -copyFromLocal不同的是,此命令将文件移动到HDFS后,本地的文件会被删除
hdfs dfs -moveFromLocal data.txt /mydir

6、下载文件

命令:hdfs dfs -get [-p] <src> <localdst>
或 hdfs dfs -copyToLocal [-p][-ignoreCrc][crc] <src> <localdst>

  • get 或copyToLocal 命令把文件从分布式系统复制到本地
  • src 表示HDFS中的文件的完整路径
  • localdst 表示为要保存在本地的文件名或文件夹的路径
  • -ignoreCrc:跳过对下载文件的CRC检查
  • -crc为下载的文件写CRC校验和

例:将HDFS的mydir/data.txt 文件下载并保存为本地的根目录下./local_data.txt,将/mydir/data.txt文件下载到本地./目录

hdfs dfs -get /mydir/data.txt  ./local_data.txt
 hdfs dfs -copyToLocal /mydir/data3.txt ./

7、查看文件

命令:
hdfs dfs -cat/text[-ignoreCrc] <src>
hdfs dfs -tail [-f]<file>

  • -cat :显示文件内容到stdout(标准输出(屏幕))
  • -tail:将文件的最后一千字节内容显示到stdout(标准输出(屏幕))
  • -ignoreCrc:跳过对下载文件的CRC检查
  • -f:动态更新显示数据

例:查看/mydir/data.txt

hdfs dfs -cat /mydir/data.txt

8、追写文件

命令:hdfs dfs appendToFile <localsrc> <dst>

  • 功能:追加一个文件到已经存在的文件末尾

例:将根目录下的data1.tx追加到/mydir/data.txt中

hdfs dfs -appendToFile data1.txt /mydir/data.txt

9、删除目录或者文件

命令:hdfs dfs -rm [-f][-r] <src>

  • -f :如果要副除的文件不存在,不显示错误信息
  • -r/R:级联删除目录下所有的文件和子目录文件

例,删除HDFS中的/mydir/data.txt文件

hdfs dfs -rm /mydir/data.txt

10、显示占用的磁盘空间大小

命令:hdfs dfs -du [-s][-h] <path>

  • 功能:按字节显示指定目录所占空间大小。
  • -s:显示指定目录F文件总的大小。
  • -h:指"human-readble", 表示按照人性化的单位显示文件大小,比如文件显求为10MB,而不会显示10240KB。

例:显示HDFS主月录中input文件夹下所有文件的大小。命令如下。

hdfs dfs -du /mydir

11、 HDFS中的文件复制

命令: hdfs dfs -cp [-f] [-p | -p[topax]] <src> <dst>

  • -f:如果目标文件存在,将强行覆益。
  • -p:将保存文件的属性。

例:将HDFS中的 /mydir/data.txt 复制为 /mydir/data_copy.txt

hdfs dfs -cp /mydir/data.txt /mydir/data_copy.txt

12、HDFS中的文件移动(改名)

命令:hdfs dfs -mv <src> <dst>
例:将HDFS中的 /mydir/data1.txt 移动 (也可理解为改名)为/mydir/data0.txt

hdfs dfs -mv  /mydir/data1.txt  /mydir/data0.txt

13 、 HDFS中的文件合并后下载

命令: hdfs dfs -getmerge [-nl] <src> <localdst>

例:将HDFS中/mydir目录下(不包含子目录)的文件合并成merge.txt 后再下载到本地

hdfs dfs -getmerge /mydir merge.txt