提示:本文章只总结一下常用的哈,详细的命令大家可以移步官方的文档(链接贴在下面了哈🤣)--- HDFS官方命令手册链接。
目录
- [1. cat 命令:查看 HDFS 文件内容](#1. cat 命令:查看 HDFS 文件内容)
- [2. put 命令:将本地文件上传到 HDFS](#2. put 命令:将本地文件上传到 HDFS)
- [3. get 命令:从HDFS下载文件到本地](#3. get 命令:从HDFS下载文件到本地)
- [4. chmod 命令:更改 HDFS中文件和目录的权限](#4. chmod 命令:更改 HDFS中文件和目录的权限)
- [5. chown 命令:更改 HDFS中文件或目录的所有者和所属组](#5. chown 命令:更改 HDFS中文件或目录的所有者和所属组)
- [6. cp 命令:将文件或目录从一个位置复制到另一个位置](#6. cp 命令:将文件或目录从一个位置复制到另一个位置)
- [7. du 命令:显示指定目录中所有文件和子目录的大小](#7. du 命令:显示指定目录中所有文件和子目录的大小)
- [8. dus 命令:显示指定文件或目录的总大小](#8. dus 命令:显示指定文件或目录的总大小)
- [9. ls 命令:列出 HDFS 中指定路径的文件或目录信息](#9. ls 命令:列出 HDFS 中指定路径的文件或目录信息)
- [10.lsr 命令:列出 HDFS 中指定路径的所有文件和目录,递归遍历子目录](#10.lsr 命令:列出 HDFS 中指定路径的所有文件和目录,递归遍历子目录)
- [11.mkdir 命令:创建一个或多个目录,支持创建多级父目录](#11.mkdir 命令:创建一个或多个目录,支持创建多级父目录)
- 12.rm命令:删除指定的文件或文件列表
- 13.tail:查看文件的最后部分内容
- 14.head:查看文件的开头部分内容
- 15.mv命令:移动文件或目录,或重命名文件
- 整理不易,一键三连呀列位看官老爷们~万福金安!🤣🤣🤣
1. cat 命令:查看 HDFS 文件内容
类似于 Linux 中的 cat
命令,将文件的内容输出到标准输出(通常是终端)。
bash
hadoop fs -cat <hdfs_path>
<hdfs_path>
:要查看的文件在 HDFS 中的路径。
bash
hadoop fs -cat /user/hadoop/gushi.txt
《淮上与友人别》- 郑谷 唐
扬子江头杨柳春,杨花愁杀渡江人。
数声风笛离亭晚,君向潇湘我向秦。
君向潇湘我向秦,这首诗太浪漫了 列位🤣🤣🤣
Tips:
-
cat
命令只适合查看小文件的内容哈。文件过大,建议配合head
或tail
,只查看文件的前几行或最后几行。 -
如果文件不存在,报错:
File /user/hadoop/file.txt does not exist
bash
hadoop fs -cat URI [URI ...]
也可以使用URL哈~
-
查看单个文件内容
bashhadoop fs -cat hdfs://host1:port1/file1
-
查看多个文件内容
bashhadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2
-
查看本地文件和 HDFS 文件
bashhadoop fs -cat file:///file3 /user/hadoop/file4
同时输出本地文件
file3
和 HDFS 文件file4
的内容。
2. put 命令:将本地文件上传到 HDFS
hadoop fs -put
命令将本地文件或目录上传到HDFS。
bash
hadoop fs -put <local_path> <hdfs_path>
<local_path>
:要上传的本地文件或目录的路径。<hdfs_path>
:目标 HDFS 目录的路径。
-
上传单个文件
bashhadoop fs -put localfile /user/hadoop/hadoopfile
将本地的
localfile
上传到 HDFS 的/user/hadoop/hadoopfile
路径下。 -
上传多个文件
bashhadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
将
localfile1
和localfile2
同时上传到 HDFS 的/user/hadoop/hadoopdir
目录下。 -
使用 HDFS URI
bashhadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile
这条命令通过指定 HDFS URI,将
localfile
上传到指定的 HDFS 路径。 -
从标准输入上传
bashhadoop fs -put - hdfs://host:port/hadoop/hadoopfile
使用
-
表示从标准输入读取数据并上传到 HDFS 的指定路径。通常用于管道操作。
bash
hadoop fs -put /home/yushifu/hongloumeng.txt /user/hadoop/
ls
命令查看 HDFS 中的文件:
bash
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
命令:
bash
hadoop fs -cat /user/hadoop/hongloumeng.txt
好了歌 曹雪芹 清
世人都晓神仙好,惟有功名忘不了!
古今将相在何方?荒冢一堆草没了。
世人都晓神仙好,只有金银忘不了!
终朝只恨聚无多,及到多时眼闭了。
世人都晓神仙好,只有娇妻忘不了!
君生日日说恩情,君死又随人去了。
世人都晓神仙好,只有儿孙忘不了!
痴心父母古来多,孝顺儿孙谁见了?
终朝只恨聚无多,及到多时眼闭了(感触颇深呀)
Tips:
-
-p
:保留文件的原属性(如权限、时间戳等)。bashhadoop fs -put -p /home/yushifu/hongloumeng.txt /user/hadoop/
-
-f
:强制覆盖已有文件。bashhadoop fs -put -f /home/yushifu/hongloumeng.txt /user/hadoop/
3. get 命令:从HDFS下载文件到本地
bash
hadoop fs -get <hdfs_path> <local_path>
<hdfs_path>
:要下载的 HDFS 文件的路径。<local_path>
:下载后保存到本地文件系统的路径。
- 下载单个文件
将HDFS 文件 /user/hadoop/gushi.txt
下载到本地 /home/user/
:
bash
hadoop fs -get /user/hadoop/gushi.txt /home/user/
- 下载整个目录
下载 HDFS 中的目录( /user/hadoop/
):
bash
hadoop fs -get /user/hadoop/my_directory/ /home/user/
-
-p
:保留文件的原属性(如权限、时间戳等)。bashhadoop fs -get -p /user/hadoop/example.txt /home/user/
-
-f
:如果目标位置已经存在同名文件,则强制覆盖。bashhadoop fs -get -f /user/hadoop/example.txt /home/user/
bash
hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
-
从 HDFS 将文件复制到本地文件系统。
-
可选参数允许处理 CRC 校验。
-
-ignorecrc
:复制 CRC 校验失败的文件。 -
-crc
:同时复制文件及其 CRC 信息。
-
从 HDFS 复制文件到本地
bashhadoop fs -get /user/hadoop/file localfile
将 HDFS 中的
/user/hadoop/file
复制到当前目录下的localfile
。 -
使用 HDFS URI
bashhadoop fs -get hdfs://host:port/user/hadoop/file localfile
指定 HDFS URI,将文件复制到本地的
localfile
。
4. chmod 命令:更改 HDFS中文件和目录的权限
bash
hadoop fs -chmod <mode> <path>
<mode>
:权限设置,可以使用符号模式或八进制模式。<path>
:要更改权限的文件或目录的 HDFS 路径。
权限类型:
- 读 (
r
):允许读取文件或列出目录内容。 - 写 (
w
):允许修改文件或创建、删除目录中的文件。 - 执行 (
x
):允许进入目录。
权限分为三种用户:
- 所有者 (
u
):文件或目录的创建者。 - 组 (
g
):与所有者同属一个组的用户。 - 其他 (
o
):系统中所有其他用户。
-
给文件添加读权限
bashhadoop fs -chmod +r /path/to/file
-
去掉组的写权限
bashhadoop fs -chmod g-w /path/to/file
八进制模式:
- 只读 :
4
(r--
) - 只写 :
2
(-w-
) - 只执行 :
1
(--x
) - 读+写 :
4 + 2 = 6
(rw-
) - 读+执行 :
4 + 1 = 5
(r-x
) - 写+执行 :
2 + 1 = 3
(-wx
) - 读+写+执行 :
4 + 2 + 1 = 7
(rwx
)
八进制权限通常由三个数字组成,分别表示:
- 所有者(user)
- 组(group)
- 其他用户(other)
eg.
755
的意思是:- 所有者:
7
(rwx
,可读、可写、可执行) - 组:
5
(r-x
,可读、可执行) - 其他用户:
5
(r-x
,可读、可执行)
- 所有者:
-
设置权限为
644
bashhadoop fs -chmod 644 /path/to/file
这里:
- 所有者有读、写权限(
rw-
,值6
) - 组有读权限(
r--
,值4
) - 其他用户有读权限(
r--
,值4
)
- 所有者有读、写权限(
-
设置权限为
770
bashhadoop fs -chmod 770 /path/to/directory
- 所有者有读、写、执行权限(
rwx
,值7
) - 组有读、写、执行权限(
rwx
,值7
) - 其他用户没有任何权限(
---
,值0
)
- 所有者有读、写、执行权限(
5. chown 命令:更改 HDFS中文件或目录的所有者和所属组
执行 chown
命令的用户必须有足够的权限才能修改文件或目录的所有者和组,通常只有超级用户(如 HDFS 的管理员)能够更改其他用户的所有权。
bash
hadoop fs -chown <owner>:<group> <path>
<owner>
:要设置的新所有者用户名。<group>
:要设置的新所属组名(可选)。<path>
:要更改所有者和组的文件或目录的 HDFS 路径。
-
更改文件所有者
bashhadoop fs -chown newuser /path/to/file
将
/path/to/file
的所有者更改为newuser
,组保持不变。 -
更改文件所有者和组
bashhadoop fs -chown newuser:newgroup /path/to/file
将
/path/to/file
的所有者更改为newuser
,并将所属组更改为newgroup
。 -
更改目录的所有者及组
bashhadoop fs -chown newuser:newgroup /path/to/directory
-
递归更改目录及其内容的所有者和组
bashhadoop fs -chown -R newuser:newgroup /path/to/directory
-R
选项可以递归地更改指定目录及其所有子目录和文件的所有者和组。
6. cp 命令:将文件或目录从一个位置复制到另一个位置
bash
hadoop fs -cp [options] <source> <destination>
<source>
:要复制的文件或目录的路径。<destination>
:复制到的目标路径。
option:
-f
:强制覆盖目标文件,如果目标文件已存在,则不提示。-p
:保留源文件的权限、时间戳和所有者信息。-R
:递归复制,适用于目录(文件夹)及其所有内容。
-
复制单个文件
bashhadoop fs -cp /path/to/source/file.txt /path/to/destination/
-
复制多个文件
bashhadoop fs -cp /path/to/source/file1.txt /path/to/source/file2.txt /path/to/destination/
-
递归复制目录
bashhadoop fs -cp -R /path/to/source/directory /path/to/destination/
-
强制覆盖目标文件
bashhadoop fs -cp -f /path/to/source/file.txt /path/to/destination/file.txt
-
保留文件属性
bashhadoop fs -cp -p /path/to/source/file.txt /path/to/destination/
- 确保源路径和目标路径都是有效的 HDFS 路径。如果路径不正确,命令将返回错误。
7. du 命令:显示指定目录中所有文件和子目录的大小
bash
hadoop fs -du URI [URI ...]
如果只指定一个文件,则显示该文件的大小。
-
查看目录大小
bashhadoop fs -du /user/hadoop/dir1
1024 /user/hadoop/dir1/file1.txt 2048 /user/hadoop/dir1/file2.txt 3072 /user/hadoop/dir1/subdir
-
查看多个路径
bashhadoop fs -du /user/hadoop/dir1 /user/hadoop/file1
-
使用 HDFS URI
bashhadoop fs -du hdfs://host:port/user/hadoop/dir1
通过 HDFS URI 来显示目录的大小。
8. dus 命令:显示指定文件或目录的总大小
bash
hadoop fs -dus <args>
- dus命令更关注总大小,而不是逐个列出每个文件。
-
查看单个目录的总大小
bashhadoop fs -dus /user/hadoop/dir1
6144 /user/hadoop/dir1
-
查看文件的大小
bashhadoop fs -dus /user/hadoop/file1
1024 /user/hadoop/file1
-
使用 HDFS URI
bashhadoop fs -dus hdfs://host:port/user/hadoop/dir1
通过 HDFS URI 来获取目录的总大小。
9. ls 命令:列出 HDFS 中指定路径的文件或目录信息
bash
hadoop fs -ls <args>
-
列出 HDFS 中指定路径的文件或目录信息。
-
文件 :
文件名 <副本数> 文件大小 修改日期 修改时间 权限 用户ID 组ID
-
目录 :
目录名 <dir> 修改日期 修改时间 权限 用户ID 组ID
bash
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
用于检查不存在的文件。
plaintext
-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 中指定路径的所有文件和目录,递归遍历子目录
bash
hadoop fs -lsr <args>
- 列出 HDFS 中指定路径的所有文件和目录,递归遍历子目录。
plaintext
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
及其子目录dir1
和subdir1
的所有文件和目录。
11.mkdir 命令:创建一个或多个目录,支持创建多级父目录
bash
hadoop fs -mkdir <paths>
- 创建一个或多个目录,支持创建多级父目录。
bash
hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir
plaintext
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命令:删除指定的文件或文件列表
bash
hadoop fs -rm <path1> [<path2> ...]
bash
hadoop fs -rm /user/hadoop/file1 /user/hadoop/file2
-
删除操作是不可逆的,请确保在执行命令之前备份重要数据。
-
使用
-f
选项可以强制删除文件而不提示确认。bashhadoop fs -rm -f /user/hadoop/file1
当然可以!以下是关于 hadoop fs -tail
和 hadoop fs -head
命令的详细讲解:
13.tail:查看文件的最后部分内容
- 默认情况下是最后 1 KB
bash
hadoop fs -tail <path>
eg.:
bash
hadoop fs -tail /user/hadoop/file.txt
plaintext
Last few lines of the file...
Line 98: Error occurred at ...
Line 99: Processing complete.
14.head:查看文件的开头部分内容
- 默认情况下是前 1 KB。
bash
hadoop fs -head <path>
eg.
bash
hadoop fs -head /user/hadoop/file.txt
plaintext
First few lines of the file...
Line 1: Starting process...
Line 2: Initialization complete.
15.mv命令:移动文件或目录,或重命名文件
bash
hadoop fs -mv <source> <destination>
-
移动文件
bashhadoop fs -mv /user/hadoop/file.txt /user/hadoop/backup/file.txt
-
重命名文件
bashhadoop fs -mv /user/hadoop/oldname.txt /user/hadoop/newname.txt
-
移动目录
bashhadoop fs -mv /user/hadoop/dir1 /user/hadoop/archive/dir1