返回 导航

大数据

hangge.com

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,表示操作分布式文件系统。
  • -xxxxxx 是占位符,需要替换为具体的命令名称。
  • schema:针对 HDFS 这个分布式文件系统,它的 schema HDFS
  • authorityHadoop 集群中主节点的 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 /

(2)如果要递归显示所有目录的信息,则需要在 ls 后面添加 -R 参数:
hdfs dfs -ls -R /

4,查看 HDFS 文件的内容(-cat)

下面命令查看 HDFS 根目录下的 README.txt 文件的内容。
hdfs dfs -cat /README.txt
 

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

(3)执行如下命令可以统计 HDFS 根目录下每个文件的大小,把文件名称和大小输出到控制台上。
hdfs dfs -ls / |grep / | awk '{print $8,$5}'
评论

全部评论(0)

回到顶部