运行一个文件系统命令在Hadoop集群支持的文件系统上


  1. ls 类似于 Linux 的 ls 命令,显示文件列表

语法:

hdfs dfs -ls URI
案例1:查看当前目录结构

hdfs dfs -ls
案例2:查看指定目录(/input)结构
hdfs dfs -ls /input
  1. lsr 在整个目录下递归执行 ls, 与 UNIX 中的 ls -R 类似

语法:

hdfs dfs -lsr URI
案例1:递归显示根目录:
hdfs dfs -lsr  /
  1. mkdir 创建目录。使用 -p 参数可以递归创建目录

语法:

hdfs dfs [-p] -mkdir <paths>
案例1:创建指定目录
hdfs dfs -mkdir /input
案例2:递归创建指定目录
hdfs dfs -mkdir -p /user/hdfs
  1. put 上传文件

语法:
hdfs dfs -put <localsrc >  ... <dst>
案例1:将当前 /etc/passwd 文件上传到文件系统中 /user/hdfs 中
hdfs dfs -put /etc/passwd /user/hdfs
  1. moveFromLocal 和 put 命令类似,但是源文件 localsrc 拷贝之后自身被删除

语法:
hdfs dfs -moveFromLocal <localsrc> <dst>
案例1:将当前 a.txt 文件上传到文件系统中 /user/hdfs 中
hdfs dfs -moveFromLocal a.txt /user/hdfs
6.get 将文件拷贝到本地文件系统。 CRC 校验失败的文件通过 -ignorecrc 选项拷贝。 文件和 CRC 校验和可以通过 -CRC 选项语法:
hdfs dfs -get [-ignorecrc ]  [-crc]  <src> <localdst>
案例1:将 /user/hdfs/a.txt 文件拷贝到本地
hdfs dfs -get /user/hdfs/a.txt  .
  1. mv 将 hdfs 上的文件从原路径移动到目标路径(移动之后文件删除),该命令不能跨文件系统

语法:

hdfs dfs -mv URI <dest>
案例1:将 /user/hdfs/a.txt 文件移动到 /input 目录中
hdfs dfs -mv /user/hdfs/a.txt /input
  1. rm 删除参数指定的文件,参数可以有多个。 此命令只删除文件和非空目录。 如果指定 -skipTrash 选项,那么在回收站可用的情况下,该选项将跳过回收站而直接删除文件; 否则,在回收站可用时,在 HDFS Shell 中执行此命令,会将文件暂时放到回收站中。

语法:

hdfs dfs -rm [-r] 【-skipTrash】 URI 【URI...】
案例1:将 /input 目录删除
hdfs dfs -rm -r /input
  1. cp 将文件拷贝到目标路径中。如果 <dest> 为目录的话,可以将多个文件拷贝到该目录下。

语法:

hdfs dfs -cp URI [URI...] <dest>

注意:

-f 

选项将覆盖目标,如果它已经存在。

-p 

选项将保留文件属性(时间戳、所有权、许可、ACL、XAttr)

案例1:将 /user/hdfs/passwd 文件复制到 /input 中

hdfs dfs -cp /user/hdfs/passwd /input
  1. cat 将参数所指示的文件内容输出到控制台

语法:

hdfs dfs  -cat  URI [uri  ...]
案例1:将 /user/hdfs/passwd 文件内容展示
hdfs dfs  -cat /user/hdfs/passwd

  1. chmod 改变文件权限。如果使用 -R 选项,则对整个目录有效递归执行。使用这一命令的用户必须是文件的所属用户,或者超级用户

语法:

hdfs   dfs  -chmod  [-R]  URI[URI  ...]
案例1:将 /user/hdfs/passwd 文件权限设置为 777
hdfs dfs -chmod  777 /user/hdfs/passwd
  1. chown 会改变文件的所属用户和用户组。如果使用 -R 选项,则对整个目录有效递归执行。使用这一命令的用户必须是文件的所属用户,或者超级用户

语法:

hdfs   dfs  -chown  [-R]  user [URI  ...]


hdfs   dfs  -chown  [-R]  user:group [URI  ...]

案例1:将 /user/hdfs/passwd 文件的拥有者改为 tom,组改为 hadoop

hdfs  dfs  -chown   tom:hadoop  /user/hdfs/passwd

  1. appendToFile 追加一个或者多个文件到hdfs指定文件中.也可以从命令行读取输入.

语法:

hdfs dfs -appendToFile <localsrc> ... <dst>
案例1:将 a.txt 内容追加到集群 /user/hdfs/passwd 文件中
hdfs dfs -appendToFile  a.txt  /user/hdfs/passwd
  1. 显示要输出的文件的开头的 1KB 数据

语法:
hdfs dfs -head URI

案例1:查看 /user/hdfs/passwd 前 1KB 的数据

hdfs dfs -head /user/hdfs/passwd

  1. 获取 hdfs 中文件内容及正在写入的内容

语法:

hdfs dfs -tail [-f] URI
案例1:查看 /user/hdfs/passwd 内容及实时获取正在写入的内容
hdfs dfs -tail -f /user/hdfs/passwd
与Linux中一样,-f选项表示数据只要有变化也会输出到控制台
  1. df 命令用来查看 HDFS 空闲的空间

语法:

dfs dfs -df [-h] URI [URI ...]
案例1:查看 hdfs 文件系统中磁盘的使用情况
hdfs dfs -df -h /
  1. 显示目录中所有文件大小,当只指定一个文件时,显示此文件的大小

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

案例1:查看 /user/hdfs 所占空间的大小

-x:选项将从结果计算中排除快照。

-v:选项将列名显示为标题行。

-h:选项将以“人类可读”的方式格式化文件大小

-s:表示显示文件长度的汇总摘要,而不是单个文件的摘要。

hdfs dfs -du -s -h -v /user/hdfs

  1. 减少副本数提升存储资源利用率,HDFS 中默认每个 block 会保存三个副本,同样一份数据需要存 3 份。假设 /user/hdfs/passwd 文件生成的时间已经过去很久,我们对该目录下的文件容错要求较低、而且数据使用频率也较低,所以,我们可以将它的副本数调整为 2,此时我们需要使用 setrep 命令。

语法:

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

-R:标志是为了向后兼容。 没有作用。

-w:标志请求命令等待复制完成。 这可能会花费很长时间。

更改文件的副本因子。 如果path是目录,则该命令以递归方式更改以path为根的目录树下所有文件的复制因子。

案例1:设置 /user/briup/passwd 的副本数为 1

hdfs dfs -setrep -w 1 /user/hdfs/passwd



最后修改: 2023年12月27日 星期三 17:06