本操作指南介绍如何使用 Hadoop 分布式文件系统(HDFS)进行基本文件和目录的管理操作。这些命令可以在 Hadoop 集群上通过 Hadoop 的命令行工具 `hdfs dfs` 进行操作。
注意使用hdfs dfs同hadoop fs,可依据个人喜好使用
[root@master ~]# hdfs dfs -ls /
Found 2 items
-rw-r--r-- 3 root supergroup 51 2024-09-20 10:52 /a.txt
drwxr-xr-x - root supergroup 0 2024-09-20 11:05 /user
[root@master ~]# hadoop fs -ls /
Found 2 items
-rw-r--r-- 3 root supergroup 51 2024-09-20 10:52 /a.txt
drwxr-xr-x - root supergroup 0 2024-09-20 11:05 /user
1. 创建目录
在 HDFS 中创建一个新的目录,使用 `mkdir` 命令。
# hdfs dfs -mkdir <目录名字>
# 例
hdfs dfs -mkdir /user/dfstest
#该命令只能在已有的目录下创建
hdfs dfs -mkdir -p /user/dfstest/test1
#该命令可以同时创建多级目录
2. 上传文件到 HDFS
使用 `put` 命令将本地文件上传到 HDFS。
#上传
## hdfs dfs -put <本地文件路径> <HDFS目标路径>
hdfs dfs -put a.txt /user/dfstest/a.txt
## 把本地a.txt文件上传到hdfs的/user/dfstest/目录下
##复制
## hdfs dfs -copyFromLocal <本地文件路径> <HDFS目标路径>
hdfs dfs -copyFromLocal a.txt /user/a.txt
## 把本地的a.txt文件复制到hdfs的/user/目录下
##移动
## hdfs dfs -moveFromLocal <本地文件路径> <HDFS目标路径>
hdfs dfs -moveFromLocal a.txt /a.txt
## 把本地的a.txt文件移动到hdfs的/下
[root@master ~]# hdfs dfs -ls /
[root@master ~]# hdfs dfs -mkdir /user/dfstest
mkdir: `hdfs://master:8020/user': No such file or directory
[root@master ~]# hdfs dfs -mkdir -p /user/dfstest
[root@master ~]# hdfs dfs -put a.txt /user/dfstest/a.txt
[root@master ~]# hdfs dfs -copyFromLocal a.txt /user/a.txt
[root@master ~]# hdfs dfs -moveFromLocal a.txt /a.txt
[root@master ~]# hdfs dfs -ls /
Found 2 items
-rw-r--r-- 3 root supergroup 51 2024-09-20 10:52 /a.txt
drwxr-xr-x - root supergroup 0 2024-09-20 10:52 /user
3. 下载文件到本地
使用 `get` 命令将 HDFS 上的文件下载到本地文件系统。
hdfs dfs -get <HDFS文件路径> <本地目标路径>
4. 查看文件内容
使用 `cat` 命令可以查看 HDFS 中文件的内容。
hdfs dfs -cat <HDFS文件路径>
[root@master ~]# ls
anaconda-ks.cfg hadoop-3.3.6.tar.gz jdk1.8.0_112.tgz Packages yum
[root@master ~]# hdfs dfs -get /user/a.txt ./a.txt
[root@master ~]# ls
anaconda-ks.cfg a.txt hadoop-3.3.6.tar.gz jdk1.8.0_112.tgz Packages yum
[root@master ~]# cat a.txt
this is a test txt
i will put it to hdfs
just test
[root@master ~]#
5. 删除文件
使用 `rm` 命令删除 HDFS 上的文件。
hdfs dfs -rm <HDFS文件路径>
[root@master ~]# hdfs dfs -ls /user
Found 2 items
-rw-r--r-- 3 root supergroup 51 2024-09-20 10:52 /user/a.txt
drwxr-xr-x - root supergroup 0 2024-09-20 10:51 /user/dfstest
[root@master ~]# hdfs dfs -rm /user/a.txt
Deleted /user/a.txt
[root@master ~]# hdfs dfs -ls /user
Found 1 items
drwxr-xr-x - root supergroup 0 2024-09-20 10:51 /user/dfstest
6. 删除目录
使用 `rm -r` 命令可以递归删除 HDFS 上的目录及其内容。
hdfs dfs -rm -r <HDFS目录路径>
[root@master ~]# hdfs dfs -ls /user
Found 1 items
drwxr-xr-x - root supergroup 0 2024-09-20 10:51 /user/dfstest
[root@master ~]# hdfs dfs -rm -r /user/dfstest
Deleted /user/dfstest
[root@master ~]# hdfs dfs -ls /user
7. 查看文件或目录状态
使用 `stat` 命令查看文件或目录的详细状态信息。
hdfs dfs -stat <HDFS文件或目录路径>
[root@master ~]# hdfs dfs -stat /a.txt
2024-09-20 02:52:26
[root@master ~]# hdfs dfs -stat /user
2024-09-20 03:05:45
8.其他命令
Usage: hadoop fs [generic options]
[-appendToFile [-n] <localsrc> ... <dst>]
[-cat [-ignoreCrc] <src> ...]
[-checksum [-v] <src> ...]
[-chgrp [-R] GROUP PATH...]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-concat <target path> <src path> <src path> ...]
[-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] [-q <thread pool queue size>] <localsrc> ... <dst>]
[-copyToLocal [-f] [-p] [-crc] [-ignoreCrc] [-t <thread count>] [-q <thread pool queue size>] <src> ... <localdst>]
[-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] [-s] <path> ...]
[-cp [-f] [-p | -p[topax]] [-d] [-t <thread count>] [-q <thread pool queue size>] <src> ... <dst>]
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-df [-h] [<path> ...]]
[-du [-s] [-h] [-v] [-x] <path> ...]
[-expunge [-immediate] [-fs <path>]]
[-find <path> ... <expression> ...]
[-get [-f] [-p] [-crc] [-ignoreCrc] [-t <thread count>] [-q <thread pool queue size>] <src> ... <localdst>]
[-getfacl [-R] <path>]
[-getfattr [-R] {-n name | -d} [-e en] <path>]
[-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
[-head <file>]
[-help [cmd ...]]
[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]]
[-mkdir [-p] <path> ...]
[-moveFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
[-moveToLocal <src> <localdst>]
[-mv <src> ... <dst>]
[-put [-f] [-p] [-l] [-d] [-t <thread count>] [-q <thread pool queue size>] <localsrc> ... <dst>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
[-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
[-setfattr {-n name [-v value] | -x name} <path>]
[-setrep [-R] [-w] <rep> <path> ...]
[-stat [format] <path> ...]
[-tail [-f] [-s <sleep interval>] <file>]
[-test -[defswrz] <path>]
[-text [-ignoreCrc] <src> ...]
[-touch [-a] [-m] [-t TIMESTAMP (yyyyMMdd:HHmmss) ] [-c] <path> ...]
[-touchz <path> ...]
[-truncate [-w] <length> <path> ...]
[-usage [cmd ...]]