Hadoop - HDFS的常用命令和使用详解(附样例)
作者:hangge | 2024-06-28 08:35
1,命令格式
(1)在 Linux 的 Shell 命令行中操作 HDFS 类似于操作 Linux 中的文件,操作 HDFS 的格式如下:
hdfs dfs -xxx schema://authority/path
(2)各参数说明如下:
- hdfs:使用 Hadoop 安装目录下 bin 目录下的 hdfs 脚本进行操作。
- dfs:全称是 Distributed File System,表示操作分布式文件系统。
- -xxx:xxx 是占位符,需要替换为具体的命令名称。
- schema:针对 HDFS 这个分布式文件系统,它的 schema 是 HDFS。
- authority:Hadoop 集群中主节点的 IP 地址和对应的 PORT(端口号默认为 9000),格式为 IP:PORT。
- path:要操作的文件或者目录的路径信息。
注意:
- path 前面的“/”表示的是 HDFS 文件系统的根目录。
- schema://authority 对应的是 Hadoop 集群 core-site.xml 配置文件中 fs.defaultFS 属性的值,代表的是 HDFS 文件系统的前缀信息。
(3)HDFS 路径的前缀在使用时是可以被省略的,因为 HDFS 在执行时会根据 HDOOP_HOME 这个环境变量自动识别 core-site.xml 配置文件中的 fs.defaultFS 属性的值。所以,以下这种简写方式也是可以的。
hdfs dfs -xxx /path
2,从本地上传文件(-put)
下面命令将本地 Hadoop 安装目录下的 README.txt 文件上传到 HDFS 的根目录下。
hdfs dfs -put /usr/local/hadoop/README.txt /
3,查询指定路径信息(-ls)
(1)下面命令查询 HDFS 根目录下的文件和目录信息。
hdfs dfs -ls /
![](http://hangge.com/blog_uploads/202401/2024010410234676371.png)
(2)如果要递归显示所有目录的信息,则需要在 ls 后面添加 -R 参数:
(2)下面命令在下载时将文件重命名。
(2)如果要递归创建多级目录,则还需要指定 -p 参数:
(2)如果删除目录则需要指定 -r 参数(支持递归删除)
(3)在删除 HDFS 中大文件的时候最好带上 skipTrash,这样删除的文件就不会进到回收站了,否则删完以后 HDFS 的空间依然不会释放。
hdfs dfs -ls -R /
![](http://hangge.com/blog_uploads/202401/202401041024211812.png)
4,查看 HDFS 文件的内容(-cat)
下面命令查看 HDFS 根目录下的 README.txt 文件的内容。
hdfs dfs -cat /README.txt
![](http://hangge.com/blog_uploads/202401/2024010410250720656.png)
5,下载文件到本地(-get)
(1)下面命令将 HDFS 根目录下的 README.txt 文件下载到本地。
hdfs dfs -get /README.txt .
(2)下面命令在下载时将文件重命名。
hdfs dfs -get /README.txt new_README.txt
6,创建文件夹(-mkdir [-p])
(1)使用 mkdir 命令可以在 HDFS 中创建文件夹:
hdfs dfs -mkdir /test
(2)如果要递归创建多级目录,则还需要指定 -p 参数:
hdfs dfs -mkdir -p /abc/xyz
7,删除文件/文件夹(-rm [-r])
(1)使用 rm 命令可以删除指定文件:
hdfs dfs -rm /README.txt
(2)如果删除目录则需要指定 -r 参数(支持递归删除)
hdfs dfs -rm -r /abc
(3)在删除 HDFS 中大文件的时候最好带上 skipTrash,这样删除的文件就不会进到回收站了,否则删完以后 HDFS 的空间依然不会释放。
hdfs dfs -rm -r -skipTrash /out
附:统计 HDFS 中的文件
(1)假设我们需要统计 HDFS 中根目录下文件的个数和每个文件的大小。首先把 Hadoop 安装目录下的几个文件上传到 HDFS 的根目录下:
cd /usr/local/hadoop hdfs dfs -put LICENSE.txt / hdfs dfs -put NOTICE.txt / hdfs dfs -put README.txt /
(2)执行如下命令可以统计 HDFS 根目录下文件的个数。
hdfs dfs -ls / |grep /| wc -l
![](http://hangge.com/blog_uploads/202401/2024010410270084202.png)
(3)执行如下命令可以统计 HDFS 根目录下每个文件的大小,把文件名称和大小输出到控制台上。
![](http://hangge.com/blog_uploads/202401/2024010410273270483.png)
hdfs dfs -ls / |grep / | awk '{print $8,$5}'
![](http://hangge.com/blog_uploads/202401/2024010410273270483.png)
全部评论(0)