0


Hadoop FileSystem Shell 常用操作命令

提示:本文章只总结一下常用的哈,详细的命令大家可以移步官方的文档(链接贴在下面了哈🤣)— HDFS官方命令手册链接。
在这里插入图片描述

目录


1. cat 命令:查看 HDFS 文件内容

类似于 Linux 中的

cat

命令,将文件的内容输出到标准输出(通常是终端)。

hadoop fs -cat <hdfs_path>
  • <hdfs_path>:要查看的文件在 HDFS 中的路径。
hadoop fs -cat /user/hadoop/gushi.txt
《淮上与友人别》- 郑谷 唐

扬子江头杨柳春,杨花愁杀渡江人。
数声风笛离亭晚,君向潇湘我向秦。

君向潇湘我向秦,这首诗太浪漫了 列位🤣🤣🤣

Tips:

  • cat 命令只适合查看小文件的内容哈。文件过大,建议配合 headtail,只查看文件的前几行或最后几行。
  • 如果文件不存在,报错:File /user/hadoop/file.txt does not exist

hadoop fs -cat URI [URI …]

也可以使用URL哈~

  1. 查看单个文件内容hadoop fs -cat hdfs://host1:port1/file1
  2. 查看多个文件内容hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2
  3. 查看本地文件和 HDFS 文件hadoop fs -cat file:///file3 /user/hadoop/file4同时输出本地文件 file3 和 HDFS 文件 file4 的内容。

2. put 命令:将本地文件上传到 HDFS

hadoop fs -put

命令将本地文件或目录上传到HDFS。

hadoop fs -put <local_path><hdfs_path>
  • <local_path>:要上传的本地文件或目录的路径。
  • <hdfs_path>:目标 HDFS 目录的路径。
  1. 上传单个文件hadoop fs -put localfile /user/hadoop/hadoopfile将本地的 localfile 上传到 HDFS 的 /user/hadoop/hadoopfile 路径下。
  2. 上传多个文件hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdirlocalfile1localfile2 同时上传到 HDFS 的 /user/hadoop/hadoopdir 目录下。
  3. 使用 HDFS URIhadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile这条命令通过指定 HDFS URI,将 localfile 上传到指定的 HDFS 路径。
  4. 从标准输入上传hadoop fs -put - hdfs://host:port/hadoop/hadoopfile使用 - 表示从标准输入读取数据并上传到 HDFS 的指定路径。通常用于管道操作。

hadoop fs -put  /home/yushifu/hongloumeng.txt  /user/hadoop/
ls

命令查看 HDFS 中的文件:

hadoop fs -ls /user/hadoop/
Found 1 items
-rw-r--r--   3 hadoop supergroup      28 2024-09-26 12:00 /user/hadoop/hongloumeng.txt
cat

命令:

hadoop fs -cat /user/hadoop/hongloumeng.txt
     好了歌 曹雪芹 清
世人都晓神仙好,惟有功名忘不了!
古今将相在何方?荒冢一堆草没了。
世人都晓神仙好,只有金银忘不了!
终朝只恨聚无多,及到多时眼闭了。
世人都晓神仙好,只有娇妻忘不了!
君生日日说恩情,君死又随人去了。
世人都晓神仙好,只有儿孙忘不了!
痴心父母古来多,孝顺儿孙谁见了?

终朝只恨聚无多,及到多时眼闭了(感触颇深呀)

Tips:

  • -p:保留文件的原属性(如权限、时间戳等)。hadoop fs -put -p /home/yushifu/hongloumeng.txt /user/hadoop/
  • -f:强制覆盖已有文件。hadoop fs -put -f /home/yushifu/hongloumeng.txt /user/hadoop/

3. get 命令:从HDFS下载文件到本地

hadoop fs -get <hdfs_path><local_path>
  • <hdfs_path>:要下载的 HDFS 文件的路径。
  • <local_path>:下载后保存到本地文件系统的路径。

  1. 下载单个文件

将HDFS 文件

/user/hadoop/gushi.txt

下载到本地

/home/user/

hadoop fs -get /user/hadoop/gushi.txt /home/user/
  1. 下载整个目录

下载 HDFS 中的目录(

/user/hadoop/

):

hadoop fs -get /user/hadoop/my_directory/ /home/user/

  • -p:保留文件的原属性(如权限、时间戳等)。hadoop fs -get -p /user/hadoop/example.txt /home/user/
  • -f:如果目标位置已经存在同名文件,则强制覆盖。hadoop fs -get -f /user/hadoop/example.txt /home/user/

hadoop fs -get [-ignorecrc][-crc]<src><localdst>
  • 从 HDFS 将文件复制到本地文件系统。
  • 可选参数允许处理 CRC 校验。
  • -ignorecrc:复制 CRC 校验失败的文件。
  • -crc:同时复制文件及其 CRC 信息。
  1. 从 HDFS 复制文件到本地hadoop fs -get /user/hadoop/file localfile将 HDFS 中的 /user/hadoop/file 复制到当前目录下的 localfile
  2. 使用 HDFS URIhadoop fs -get hdfs://host:port/user/hadoop/file localfile指定 HDFS URI,将文件复制到本地的 localfile

4. chmod 命令:更改 HDFS中文件和目录的权限

hadoop fs -chmod <mode><path>
  • <mode>:权限设置,可以使用符号模式或八进制模式。
  • <path>:要更改权限的文件或目录的 HDFS 路径。

权限类型:

  • **读 (r)**:允许读取文件或列出目录内容。
  • **写 (w)**:允许修改文件或创建、删除目录中的文件。
  • **执行 (x)**:允许进入目录。

权限分为三种用户:

  • **所有者 (u)**:文件或目录的创建者。
  • **组 (g)**:与所有者同属一个组的用户。
  • **其他 (o)**:系统中所有其他用户。

  1. 给文件添加读权限hadoop fs -chmod +r /path/to/file
  2. 去掉组的写权限hadoop fs -chmod g-w /path/to/file

八进制模式:

  • 只读4r--
  • 只写2-w-
  • 只执行1--x
  • 读+写4 + 2 = 6rw-
  • 读+执行4 + 1 = 5r-x
  • 写+执行2 + 1 = 3-wx
  • 读+写+执行4 + 2 + 1 = 7rwx

八进制权限通常由三个数字组成,分别表示:

  1. 所有者(user)
  2. 组(group)
  3. 其他用户(other)

eg.

  • 755 的意思是: - 所有者:7rwx,可读、可写、可执行)- 组:5r-x,可读、可执行)- 其他用户:5r-x,可读、可执行)
  1. 设置权限为 644hadoop fs -chmod 644 /path/to/file这里:- 所有者有读、写权限(rw-,值 6)- 组有读权限(r--,值 4)- 其他用户有读权限(r--,值 4
  2. 设置权限为 770hadoop fs -chmod 770 /path/to/directory- 所有者有读、写、执行权限(rwx,值 7)- 组有读、写、执行权限(rwx,值 7)- 其他用户没有任何权限(---,值 0

5. chown 命令:更改 HDFS中文件或目录的所有者和所属组

执行

chown

命令的用户必须有足够的权限才能修改文件或目录的所有者和组,通常只有超级用户(如 HDFS 的管理员)能够更改其他用户的所有权。

hadoop fs -chown <owner>:<group><path>
  • <owner>:要设置的新所有者用户名。
  • <group>:要设置的新所属组名(可选)。
  • <path>:要更改所有者和组的文件或目录的 HDFS 路径。
  1. 更改文件所有者hadoop fs -chown newuser /path/to/file/path/to/file 的所有者更改为 newuser,组保持不变。
  2. 更改文件所有者和组hadoop fs -chown newuser:newgroup /path/to/file/path/to/file 的所有者更改为 newuser,并将所属组更改为 newgroup
  3. 更改目录的所有者及组hadoop fs -chown newuser:newgroup /path/to/directory
  4. 递归更改目录及其内容的所有者和组hadoop fs -chown -R newuser:newgroup /path/to/directory``````-R 选项可以递归地更改指定目录及其所有子目录和文件的所有者和组。

6. cp 命令:将文件或目录从一个位置复制到另一个位置

hadoop fs -cp [options]<source><destination>
  • <source>:要复制的文件或目录的路径。
  • <destination>:复制到的目标路径。

option:

  • -f:强制覆盖目标文件,如果目标文件已存在,则不提示。
  • -p:保留源文件的权限、时间戳和所有者信息。
  • -R:递归复制,适用于目录(文件夹)及其所有内容。

  1. 复制单个文件hadoop fs -cp /path/to/source/file.txt /path/to/destination/
  2. 复制多个文件hadoop fs -cp /path/to/source/file1.txt /path/to/source/file2.txt /path/to/destination/
  3. 递归复制目录hadoop fs -cp -R /path/to/source/directory /path/to/destination/
  4. 强制覆盖目标文件hadoop fs -cp -f /path/to/source/file.txt /path/to/destination/file.txt
  5. 保留文件属性hadoop fs -cp -p /path/to/source/file.txt /path/to/destination/
  • 确保源路径和目标路径都是有效的 HDFS 路径。如果路径不正确,命令将返回错误。

7. du 命令:显示指定目录中所有文件和子目录的大小

hadoop fs -du URI [URI …]

如果只指定一个文件,则显示该文件的大小。

  1. 查看目录大小hadoop fs -du /user/hadoop/dir1``````1024 /user/hadoop/dir1/file1.txt2048 /user/hadoop/dir1/file2.txt3072 /user/hadoop/dir1/subdir
  2. 查看多个路径hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1
  3. 使用 HDFS URIhadoop fs -du hdfs://host:port/user/hadoop/dir1通过 HDFS URI 来显示目录的大小。

8. dus 命令:显示指定文件或目录的总大小

hadoop fs -dus <args>
  • dus命令更关注总大小,而不是逐个列出每个文件
  1. 查看单个目录的总大小hadoop fs -dus /user/hadoop/dir1``````6144 /user/hadoop/dir1
  2. 查看文件的大小hadoop fs -dus /user/hadoop/file1``````1024 /user/hadoop/file1
  3. 使用 HDFS URIhadoop fs -dus hdfs://host:port/user/hadoop/dir1通过 HDFS URI 来获取目录的总大小。

9. ls 命令:列出 HDFS 中指定路径的文件或目录信息

hadoop fs -ls <args>
  • 列出 HDFS 中指定路径的文件或目录信息。
  • 文件文件名 <副本数> 文件大小 修改日期 修改时间 权限 用户ID 组ID
  • 目录目录名 <dir> 修改日期 修改时间 权限 用户ID 组ID
hadoop fs -ls /user/hadoop/file1 /user/hadoop/file2 hdfs://host:port/user/hadoop/dir1 /nonexistentfile
  • 列出指定路径的文件和目录信息。
  • /user/hadoop/file1/user/hadoop/file2 是要检查的文件。
  • hdfs://host:port/user/hadoop/dir1 是要检查的目录。
  • /nonexistentfile 用于检查不存在的文件。
-rw-r--r--    3 1024 2024-09-25 10:00 /user/hadoop/file1
-rw-r--r--    1 2048 2024-09-25 10:05 /user/hadoop/file2
drwxr-xr-x    -    0 2024-09-24 09:30 /user/hadoop/dir1
  • 第一行表示 file1 的信息,包括权限、复制数、大小、修改日期和时间等。
  • 第二行表示 file2 的信息。
  • 第三行表示 dir1 是一个目录。

10.lsr 命令:列出 HDFS 中指定路径的所有文件和目录,递归遍历子目录

hadoop fs -lsr <args>
  • 列出 HDFS 中指定路径的所有文件和目录,递归遍历子目录。
drwxr-xr-x    -    0 2024-09-24 09:30 /user/hadoop/dir1
-rw-r--r--    3 1024 2024-09-25 10:00 /user/hadoop/file1
drwxr-xr-x    -    0 2024-09-24 09:32 /user/hadoop/dir1/subdir1
-rw-r--r--    1 2048 2024-09-25 10:05 /user/hadoop/file2
  • 显示 /user/hadoop 及其子目录 dir1subdir1 的所有文件和目录。

11.mkdir 命令:创建一个或多个目录,支持创建多级父目录

hadoop fs -mkdir <paths>
  • 创建一个或多个目录,支持创建多级父目录。
hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir
mkdir: `/user/hadoop/dir1': Created
mkdir: `/user/hadoop/dir2': Created
mkdir: `hdfs://host1:port1/user/hadoop/dir': Created
mkdir: `hdfs://host2:port2/user/hadoop/dir': Created
  • 每一行表示成功创建的目录。

12.rm命令:删除指定的文件或文件列表

hadoop fs -rm <path1>[<path2>...]
hadoop fs -rm /user/hadoop/file1 /user/hadoop/file2
  • 删除操作是不可逆的,请确保在执行命令之前备份重要数据。
  • 使用 -f 选项可以强制删除文件而不提示确认。hadoop fs -rm -f /user/hadoop/file1

13.tail:查看文件的最后部分内容

  • 默认情况下是最后 1 KB
hadoop fs -tail <path>

eg.:

hadoop fs -tail /user/hadoop/file.txt
Last few lines of the file...
Line 98: Error occurred at ...
Line 99: Processing complete.

14.head:查看文件的开头部分内容

  • 默认情况下是前 1 KB。
hadoop fs -head <path>

eg.

hadoop fs -head /user/hadoop/file.txt
First few lines of the file...
Line 1: Starting process...
Line 2: Initialization complete.

15.mv命令:移动文件或目录,或重命名文件

hadoop fs -mv <source><destination>
  1. 移动文件hadoop fs -mv /user/hadoop/file.txt /user/hadoop/backup/file.txt
  2. 重命名文件hadoop fs -mv /user/hadoop/oldname.txt /user/hadoop/newname.txt
  3. 移动目录hadoop fs -mv /user/hadoop/dir1 /user/hadoop/archive/dir1

整理不易,一键三连呀列位看官老爷们~万福金安!🤣🤣🤣


本文转载自: https://blog.csdn.net/weixin_48935611/article/details/142558973
版权归原作者 喻师傅 所有, 如有侵权,请联系我们删除。

“Hadoop FileSystem Shell 常用操作命令”的评论:

还没有评论