HDFS shell 操作

HDFS shell 操作

一、HDFS shell命令行解释说明

介绍

  • 命令行界面(英语:command-line interface,缩写:CLI),是指用户通过键盘输入指令,计算机接收到指令后,予以执行一种人际交互方式。
  • Hadoop提供了文件系统的shell命令行客户端: hadoop fs [generic options]

image-20240316161218786

文件系统协议

  • 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 命令来查看每个命令的详细用法

image-20240316162215350

二、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] [...]
    • 显示文件系统的容量,可用空间和已用空间

image-20240316170051173

10、HDFS数据移动操作

  • hadoop fs -mv ...
    • 移动文件到指定文件夹下
    • 可用使用该命令移动数据,重命名文件的名称

11、修改HDFS文件副本个数

  • hadoop fs -setrep [-R] [-w] ...
    • 修改指定文件的副本个数
    • -R 表示递归,修改文件夹下及其所有
    • -w 客户端是否等待副本修改完毕
hadoop fs -stetrep -w 2 /tem/caixunkun_dirtydata.csv

image-20240316170505958

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

posted @   七落安歌  阅读(202)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示