HDFS 的shell操作
hadoop fs [命令] [文件目录] [文件目录]
hdfs内外文件交互
# 外部文件->hdfs
#文件移动到hdfs
-moveFromLocal <localsrc> <dst>
类似put 文件移到hdfs系统中 原src会被删除
-moveToLocal [-crc] <src> <dst>
#文件放入hdfs
-put [参数][ - | <localsrc1> .. ] <dst>
[-f] 覆盖
[-p] 保留访问和修改时间,所有权和权限。
[-l] 允许DataNode将文件延迟保存到磁盘,将复制因子设为1。将导致持久性降低。小心使用。
[-d] 跳过后缀为._COPYING_的临时文件的创建。
#文件复制到hdfs
-copyFromLocal /本地文件路径 /hdfs路径【文件名】
- 可指定文件名
-p 保留访问和修改时间,所有权限
-f 覆盖
-l
-d 跳过后缀为._COPYING_的临时文件的创建。
# hdfs->外部文件
# 文件复制到本地
-get
[-ignorecrc] 对下载的文件跳过CRC检查。
[-crc] 为下载的文件写入CRC校验和。
[-p] 保留访问和修改时间,所有权和权限。
[-f] 覆盖
# 将一个或多个hdfs文件merge后输出到本地
-getmerge
hadoop fs -getmerge -nl /src /opt/output.txt
hadoop fs -getmerge -nl /src/file1.txt /src/file2.txt /output.txt
# 复制到本地
-copyToLocal
hadoop fs -copyToLocal /hdfs文件路径 /本地路径【文件名】
文件信息
# 文件信息
# 统计文件夹大小信息
hadoop fs -du -h [/hdfs目录] 带文件目录(查看某目录下所有文件大小)
hadoop fs -du -s -h /input -s汇总统计 -h格式化
# 统计分区大小信息
hadoop fs -df -h (查看文件系统大小信息)
# 文件目录内部操作
#删除
-rm
[-f] 不输出错误信息
[-r |-R] 递归删除
[-skipTrash] 绕过垃圾桶立刻删除
[-safely] 防止意外删除大文件目录
hadoop fs -rm hdfs://nn.example.com/file /user/hadoop/emptydir
-rmdir
删除空文件夹
[--ignore-fail-on-non-empty]
# 创建目录
-mkdir
-p 创建多级
注意hdfs会自动清除空文件夹
# 创建文件/更改文件操作时间
-touch
将URI指定的文件的访问和修改时间更新为当前时间。
如果该文件不存在,则会在URI上创建一个零长度的文件,并将当前时间作为该URI的时间戳。
[-a]
[-m]
[-t TIMESTAMP]
[-c]如果文件不存在,请使用-c选项不创建文件
# 显示文件信息
-ls
[-C] 仅显示文件和目录的路径。
[atguigu@hadoop12 hadoop-3.1.3]$ hadoop fs -ls -C
mytest
[-d] 列出文件所在的目录
[-h] 文件大小以易读方式显示
[-q]
[-R] 列出hdfs文件系统所有的目录和文件
[atguigu@hadoop12 hadoop-3.1.3]$ hadoop fs -ls -R
drwxr-xr-x - atguigu supergroup 0 2021-04-09 19:06 mytest
-rw-r--r-- 3 atguigu supergroup 195013152 2021-04-09 19:06 mytest/jdk-8u212-linux-x64.tar.gz
[-t] 按修改时间对输出进行排序(最新的优先)。
[-S] 按文件大小对输出进行排序。
[-r] 颠倒排序顺序。
[-u] 使用访问时间而不是修改时间来进行显示和排序。
[-e] 仅显示文件和目录的纠编码
# 显示文件内容
-cat
# 显示文件头尾
-head
-tail
显示1000个字节
hadoop fs -cat /hdfs文件名
# 文件移动
-mv
hdfs文件系统内移动
# 文件复制
-cp
[-f] 覆盖
[-p | -p[topax]] 保留文件的所有权\时间戳\权限\ACL\XAttr等
权限管理
# 组管理
-chgrp
# 更改文件的权限
-chmod
# 更改所属组
-chown
hadoop fs -chmod 777 /hdfs文件名
hadoop fs -chown 用户名:用户组 /hdfs文件名
hadoop fs -chgrp 新的用户组 /hdfs文件名
文件设置
#设置hdfs文件副本数
-setrep
hadoop fs -setrep 个数 /hdfs文件名