一、概述
HDFS(Hadoop Distributed File System)是Hadoop生态系统中的一个核心组件,它是一个高度容错性的分布式文件系统,设计用于在廉价硬件上存储大规模数据集。HDFS的架构采用主从(Master/Slave)结构模型,包含一个NameNode和多个DataNode。NameNode负责管理文件系统的命名空间和客户端对文件的访问操作,而DataNode则管理存储的数据。
HDFS还支持与Hadoop生态系统中的其他工具(如MapReduce、Hive、Pig等)进行配合使用,实现更为复杂的数据处理任务。HDFS在大数据处理场景中被广泛应用,例如数据挖掘、机器学习和科学计算等。
二、HDFS的常用命令(ls、mkdir、put、get、rm、chown、chmod)
- ls- 功能:列出HDFS目录中的文件和目录。- 语法:
hdfs dfs -ls [-h] [-R] [-t] [-S] [-r] [-u] <path> ...
- 示例:hdfs dfs -ls /user/hadoop
- 参数说明: --h
:以人类可读的格式显示文件大小(例如,以KB、MB、GB为单位)。--R
:递归地列出目录及其子目录。- 其他参数提供了更多的排序和显示选项。 - mkdir- 功能:在HDFS中创建一个目录。- 语法:
hdfs dfs -mkdir [-p] <path> ...
- 示例:hdfs dfs -mkdir /user/hadoop/newdir
- 参数说明: --p
:如果父目录不存在,则创建它们。 - put- 功能:将本地文件或目录复制到HDFS中。- 语法:
hdfs dfs -put [-f] [-p] [-l] [-d] [-t <local_time>] <localsrc> ... <dst>
- 示例:hdfs dfs -put localfile.txt /user/hadoop/
- 参数说明: --f
:覆盖目标位置已存在的文件或目录。--p
:保留访问和修改时间。--l
:允许在本地系统中数据块较小的文件复制为HDFS中较大的数据块。- 其他参数提供了更多的选项。 - get- 功能:将HDFS中的文件或目录复制到本地文件系统中。- 语法:
hdfs dfs -get [-f] [-p] [-l] <src> ... <localdst>
- 示例:hdfs dfs -get /user/hadoop/remotefile.txt localdir/
- 参数说明与put
命令中的类似。 - rm- 功能:删除HDFS中的文件或目录。- 语法:
hdfs dfs -rm [-r] [-skipTrash] [-f] <path> ...
- 示例:hdfs dfs -rm /user/hadoop/unneededfile.txt
- 参数说明: --r
或-R
:递归地删除目录及其内容。--skipTrash
:绕过HDFS的回收站并直接删除文件或目录。--f
:强制删除,不提示确认。 - chown- 功能:更改HDFS文件或目录的所有者。- 语法:
hdfs dfs -chown [-R] <owner>:<group> <path> ...
- 示例:hdfs dfs -chown hadoop:hadoopgroup /user/hadoop/somefile.txt
- 参数说明: --R
:递归地更改目录及其内容的所有者和组。 - chmod- 功能:更改HDFS文件或目录的权限。- 语法:
hdfs dfs -chmod [-R] <mode> <path> ...
- 示例:hdfs dfs -chmod 755 /user/hadoop/somedir
- 参数说明: --R
:递归地更改目录及其内容的权限。-<mode>
:是一个八进制数,用于指定文件或目录的权限(例如,755表示所有者有读、写和执行权限,而组用户和其他用户只有读和执行权限)。
请注意,上述命令中的
hdfs dfs
前缀是HDFS shell命令的标准前缀。但在某些Hadoop发行版中,你也可以只使用
hdfs
作为前缀,或者完全不使用前缀(如果HDFS shell命令已经配置为系统的默认shell命令)
三、常用命令实操
3.1 准备工作
1)启动Hadoop集群(方便后续的测试)
[root@hadoop01 hadoop-3.1.3]$ sbin/start-dfs.sh
[root@hadoop02 hadoop-3.1.3]$ sbin/start-yarn.sh
2)-help:输出这个命令参数
[root@hadoop01 hadoop-3.1.3]$ hadoop fs -help rm
3)创建/jin文件夹
hadoop fs -mkdir /jin
或者
hdfs dfs -mkdir /jin
创建hdfs目录
hadoop fs -mkdir /user/hadoop/newdir
递归创建HDFS目录(包括所有不存在的父目录)
hadoop fs -mkdir /user/hadoop/newdir
3.2 上传
1)-moveFromLocal:从本地剪切粘贴到HDFS
[root@hadoop01 hadoop-3.1.3]$ vim xiaoshou.txt
或者
hdfs -dfs -moveFromLocal ./xiaoshou.txt /jin
3.3复制
copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去用
hadoop fs -put
命令将文件复制到HDFS。
hadoop fs -put /home/user/data.txt /user/hadoop/data.txt
**3.4 **-rm:删除文件或文件夹
删除单个文件
hadoop fs -rm /hdfs/path/to/file.txt
如果你想要删除一个文件夹及其所有内容,你需要使用
-r
或
-R
选项来递归地删除文件夹和其中的所有文件
hadoop fs -rm -r /hdfs/path/to/directory/
hadoop fs -rm -R /hdfs/path/to/directory/
3.5 -cat:显示文件内容
hadoop fs -cat /hdfs/path/to/large_file.txt > local_file.txt
3.6 -mkdir:创建路径
hadoop fs -mkdir /hdfs/path/to/directory
3.7 -cp:从HDFS的一个路径拷贝到HDFS的另一个路径
hadoop fs -mv /user/hadoop/hdfsdir/remotefile.txt /user/hadoop/newdir/
hadoop fs -mv -r /user/hadoop/hdfsdir/ /user/hadoop/newdir/
这些命令是HDFS命令行工具的一些基本示例,用于管理HDFS上的文件和目录。请确保在运行这些命令之前,你已经配置了Hadoop环境,并且
hadoop
命令在你的PATH中可用。
版权归原作者 我真的头秃了! 所有, 如有侵权,请联系我们删除。