HDFS shell 操作
HDFS shell 操作
一、HDFS shell命令行解释说明
介绍
- 命令行界面(英语:command-line interface,缩写:CLI),是指用户通过键盘输入指令,计算机接收到指令后,予以执行一种人际交互方式。
- Hadoop提供了文件系统的shell命令行客户端: hadoop fs [generic options]
文件系统协议
- HDFS Shell CLI支持操作多种文件系统,包括本地文件系统(file:///),分布式文件系统(hdfs://nn:8020)等
- 具体操作的是什么文件系统取决于命令中文件路径URL中的前缀协议
- 如果没有指定前缀,则将会读取环境变量中的fs.defaultFS属性,以该属性值作为默认文件系统。
hadoop fs -ls file:/// #操作本地文件系统
hadoop fs -ls hdfs://node1:8020/ #操作HDFS分布式文件系统
hadoop fs -ls / #直接根目录,没有指定协议 将加载读取fs.defaultFS值
参数说明
- HDFS文件系统的操作命令很多和Linux类似,因此学习成本相对较低
- 可以通过hadoop fs -help 命令来查看每个命令的详细用法
二、HDFS shell 命令行常用操作
1、创建文件夹
- hadoop fs -mkdir [-p]
... - path 为待创建的目录
- -p选项的行为与Unix mkdir -p 类似,父目录不存在则创建父目录
hadoop fs -mkdir -p /itcast
2、查看指定目录下内容
- hadoop fs -ls [-h] [-R] [
...] - path指定目录路径(绝对路径)
- -h 人性化显示文件size
- -R递归查看指定目录及其子目录
hadoop fs -ls /
3、上传文件到HDFS指定目录下
- hadoop fs -put [-f] [-p]
... - -f 覆盖目标文件
- -p 保留访问和修改时间,所有权和权限
- localsrc 本地文件系统(客户端所在机器)
- dst 目标文件系统 (HDFS)
hadoop fs -put zookeeper.out /itcast
# 详细写法
hadoop fs -put file:///etc/profile hdfs://node1:8020/itcast
- 可以一次上传多个文件,只要最后一个是目标系统即可
4、查看HDFS文件内容
- hadoop fs -cat
- 读取指定文件全部内容,显示在标准输出控制台
- 注意:对于大文件内容读取,慎重
hadoop fs -cat /itcast/zookeeper.out
- hadoop fs -head
- 查看文件前1KB的内容
hadoop fs -head /itcast/zoookeeper.out
- hadoop fs -tail [-f]
- 查看文件最后1KB的内容
- -f 选择动态显示文件中追加的内容
hadoop fs -tail /itcast/zoookeeper.out
5、下载HDFS文件
- hadoop fs -get [-f] [-p]
... - 下载文件到本地文件系统指定目录,localdst必须是目录
- -f 覆盖目标文件
- -p 保留访问与修改时间,所有权和权限
[root@node2 ~]# mkdir test
[root@node2 ~]# cd test/
[root@node2 test]# ll
total 0
[root@node2 test]# hadoop fs -get /itcast/zookeeper.out ./ # 下载到当前目录下
[root@node2 test]# ll
total 20
-rw-r--r-- 1 root root 18213 Aug 18 17:54 zookeeper.out
6、合并下载HDFS文件
- hadoop fs -getmerge [-nl] [-skip-empty-file]
- 下载多个文件合并到本地文件系统的一个文件中
- -nl 选项表示在每个文件末尾添加换行符
[root@node3 ~]# hadoop fs -mkdir /small
[root@node3 ~]# hadoop fs -put 1.txt 2.txt 3.txt /small
[root@node3 ~]# hadoop fs -getmerge /small/* ./merge.txt
# 将small中的所有文件合并下载到 当前目录下的merge.txt文件中
[root@node3 ~]# cat merge.txt
1
2
3
7、拷贝HDFS文件
- hadoop fs -cp [-f]
... - -f 覆盖目标文件
[root@node3 ~]# hadoop fs -cp /small/1.txt /itcast
[root@node3 ~]# hadoop fs -cp /small/1.txt /itcast/666.txt #重命名
[root@node3 ~]# hadoop fs -ls /itcast
Found 4 items
-rw-r--r-- 3 root supergroup 2 2021-08-18 17:58 /itcast/1.txt
-rw-r--r-- 3 root supergroup 2 2021-08-18 17:59 /itcast/666.txt
8、追加数据HDFS文件中
- hadoop fs -appendToFile
... - 将所有给定本地文件的内容追加到给定dst文件
- dst如果不存在,将创建该文件
- 如果
为-,则输入为从标准输入中读取
#追加内容到文件尾部 appendToFile
[root@node3 ~]# echo 1 >> 1.txt
[root@node3 ~]# echo 2 >> 2.txt
[root@node3 ~]# echo 3 >> 3.txt
[root@node3 ~]# hadoop fs -put 1.txt /
[root@node3 ~]# hadoop fs -cat /1.txt
1
[root@node3 ~]# hadoop fs -appendToFile 2.txt 3.txt /1.txt
[root@node3 ~]# hadoop fs -cat /1.txt
1
2
3
9、查看HDFS磁盘空间
- hadoop fs -df [-h] [
...] - 显示文件系统的容量,可用空间和已用空间
10、HDFS数据移动操作
- hadoop fs -mv
... - 移动文件到指定文件夹下
- 可用使用该命令移动数据,重命名文件的名称
11、修改HDFS文件副本个数
- hadoop fs -setrep [-R] [-w]
... - 修改指定文件的副本个数
- -R 表示递归,修改文件夹下及其所有
- -w 客户端是否等待副本修改完毕
hadoop fs -stetrep -w 2 /tem/caixunkun_dirtydata.csv
HDFS shell 其他命令
- 命令官方指导文档
https://hadoop.apache.org/docs/r3.3.0/hadoop-project-dist/hadoop-common/FileSystemShell.html
选项名称 | 使用格式 | 含义 |
---|---|---|
-ls | -ls <路径> | 查看指定路径的当前目录结构 |
-lsr | -lsr <路径> | 递归查看指定路径的目录结构 |
-du | -du <路径> | 统计目录下个文件大小 |
-dus | -dus <路径> | 汇总统计目录下文件(夹)大小 |
-count | -count [-q] <路径> | 统计文件(夹)数量 |
-mv | -mv <源路径> <目的路径> | 移动 |
-cp | -cp <源路径> <目的路径> | 复制 |
-rm | -rm [-skipTrash] <路径> | 删除文件/空白文件夹 |
-rmr | -rmr [-skipTrash] <路径> | 递归删除 |
-put | -put <多个linux上的文件> <hdfs路径> | 上传文件 |
-copyFromLocal | -copyFromLocal <多个linux上的文件> <hdfs路径> | 从本地复制 |
-moveFromLocal | -moveFromLocal <多个linux上的文件> <hdfs路径> | 从本地移动 |
-getmerge | -getmerge <源路径> <linux路径> | 合并到本地 |
-cat | -cat <hdfs路径> | 查看文件内容 |
-text | -text <hdfs路径> | 查看文件内容 |
-copyToLocal | -copyToLocal [-ignoreCrc] [-crc] [hdfs源路径] [linux目的路径] | 从本地复制 |
-moveToLocal | -moveToLocal [-crc] <hdfs源路径> <linux目的路径> | 从本地移动 |
-mkdir | -mkdir <hdfs路径> | 创建空白文件夹 |
-setrep | -setrep [-R] [-w] <副本数> <路径> | 修改副本数量 |
-touchz | -touchz <文件路径> | 创建空白文件 |
-stat | -stat [format] <路径> | 显示文件统计信息 |
-tail | -tail [-f] <文件> | 查看文件尾部信息 |
-chmod | -chmod [-R] <权限模式> [路径] | 修改权限 |
-chown | -chown [-R] [属主][:[属组]] 路径 | 修改属主 |
-chgrp | -chgrp [-R] 属组名称 路径 | 修改属组 |
-help | -help [命令选项] | 帮助 |
-ls
使用方法:hadoop fs -ls [-h] [-R]
功能:显示文件、目录信息。
示例:hadoop fs -ls /user/hadoop/file1
-mkdir
使用方法:hadoop fs -mkdir [-p]
功能:在hdfs上创建目录,-p表示会创建路径中的各级父目录。
示例:hadoop fs -mkdir –p /user/hadoop/dir1
-put
使用方法:hadoop fs -put [-f] [-p] [ -|
功能:将单个src或多个srcs从本地文件系统复制到目标文件系统。
-p:保留访问和修改时间,所有权和权限。
-f:覆盖目的地(如果已经存在)
示例:hadoop fs -put -f localfile1 localfile2 /user/hadoop/hadoopdir
-get
使用方法:hadoop fs -get [-ignorecrc] [-crc] [-p] [-f]
-ignorecrc:跳过对下载文件的CRC检查。
-crc:为下载的文件写CRC校验和。
功能:将文件复制到本地文件系统。
示例:hadoop fs -get hdfs://host:port/user/hadoop/file localfile
-appendToFile
使用方法:hadoop fs -appendToFile
功能:追加一个文件到已经存在的文件末尾
示例:hadoop fs -appendToFile localfile /hadoop/hadoopfile
-cat
使用方法:hadoop fs -cat [-ignoreCrc] URI [URI ...]
功能:显示文件内容到stdout
示例:hadoop fs -cat /hadoop/hadoopfile
-tail
使用方法:hadoop fs -tail [-f] URI
功能:将文件的最后一千字节内容显示到stdout。
-f选项将在文件增长时输出附加数据。
示例:hadoop fs -tail /hadoop/hadoopfile
-chgrp
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI ...]
功能:更改文件组的关联。用户必须是文件的所有者,否则是超级用户。
-R将使改变在目录结构下递归进行。
示例:hadoop fs -chgrp othergroup /hadoop/hadoopfile
-chmod
功能:改变文件的权限。使用-R将使改变在目录结构下递归进行。
示例:hadoop fs -chmod 666 /hadoop/hadoopfile
-chown
功能:改变文件的拥有者。使用-R将使改变在目录结构下递归进行。
示例:hadoop fs -chown someuser:somegrp /hadoop/hadoopfile
-cp
功能:从hdfs的一个路径拷贝hdfs的另一个路径
示例: hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
-mv
功能:在hdfs目录中移动文件
示例: hadoop fs -mv /aaa/jdk.tar.gz /
-getmerge
功能:合并下载多个文件
示例:比如hdfs的目录 /aaa/下有多个文件:log.1, log.2,log.3,...
hadoop fs -getmerge /aaa/log.* ./log.sum
-rm
功能:删除指定的文件。只删除非空目录和文件。-r 递归删除。
示例:hadoop fs -rm -r /aaa/bbb/
-df
功能:统计文件系统的可用空间信息
示例:hadoop fs -df -h /
-du
功能:显示目录中所有文件大小,当只指定一个文件时,显示此文件的大小。
示例:hadoop fs -du /user/hadoop/dir1
-setrep
功能:改变一个文件的副本系数。-R选项用于递归改变目录下所有文件的副本系数。
示例:hadoop fs -setrep -w 3 -R /user/hadoop/dir1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现