赞
踩
HDFS的全称为Hadoop分布式文件系统(Hadoop Distributed File System),是Hadoop的文件系统。HDFS对用户来说就如同单块磁盘,它其实是运行在Linux文件系统之上。其优点还包括:
HDFS的守护进程有以下三类:
其具体架构如下图所示。
在HDFS中,文件被分成了不同的文件块(block),文件块是文件存储的最小单元,由命名节点管理,实际存储在数据节点上。每一个文件块都会在载入时复制到不同机器上,提供高容错性和可用性,默认复制3份,且默认的文件块大小是64MB。在下图中可以看出,文件块B1和B2被复制了3份且存储在不同的数据节点。
出于可扩展性的考虑,命名节点不直接读写数据。客户端与命名节点通信,获取HDFS的命名空间,并得到读写数据的具体文件块位置,然后直接从数据节点读写数据。
在HDFS上写数据的流程如下图所示,基本步骤为:
在HDFS上读数据的流程如下图所示,假设需要读取的文件有两个文件块B1和B2,基本步骤为:
hdfs dfs -<命令> -<选项> <路径>
常用的命令如下表所示。
命令 | 用途 |
---|---|
hdfs dfs -help | 查看命令帮助 |
hdfs dfs -ls | 查看文件(夹)列表 |
hdfs dfs -mkdir | 创建文件夹 |
hdfs dfs -put | 从本地上传文件(夹)到HDFS |
hdfs dfs -get | 从HDFS下载文件(夹)到本地 |
hdfs dfs -cat | 查看文件全部内容 |
hdfs dfs -tail | 查看文件最后1KB内容 |
hdfs dfs -cp | 复制文件(夹) |
hdfs dfs -mv | 剪切文件(夹) |
hdfs dfs -rm | 删除文件(夹) |
hdfs dfs -du | 查看文件(夹)占用空间 |
双击桌面上的xshell 5的快捷方式,通过xshell连接到大数据计算集群。在命令行中输入连接命令,将“<id>”替换成自己的用户名,将“<master_host>”替换成实验室当前环境的主机地址,并在弹出的对话框中输入密码。
[c:\~]$ ssh <id>@<master_ip>
调用命令hdfs dfs -help
查看HDFS操作相关命令的帮助。
再调用命令hdfs dfs -help
加上参数ls
查看命令ls
的帮助。可以看到,命令ls
的主要功能是列出文件和文件夹。
调用命令hdfs dfs -ls
查看HDFS上路径“/data/”
的文件(夹)列表。可以看出,返回结果与Linux文件系统基本一致,各列定义依次为访问权限、所有者、所有者所在用户组、文件大小、创建时间和具体路径。
与Linux类似,HDFS也区分绝对路径和相对路径,如果指定路径不是以/
开头则为相对路径,并且是相对于用户家目录的路径。因此,如果不在命令hdfs dfs -ls
后指定任何路径,则默认列出家目录的文件(夹)。如果目前home目录没有任何文件(夹),则不会输出任何信息。
首先调用命令hdfs dfs -mkdir
在自己的家目录下创建文件夹lab11_1
。再调用命令hdfs dfs -ls
查看自己的家目录确认文件夹创建成功。
首先调用命令echo
和输出重定向符>
在本地创建一个名为test
的文件。再调用命令hdfs dfs -put
将其上传到HDFS。最后调用命令ll
查看本地文件(夹)列表,可以看到之前创建的名为test
的文件还存在,说明上传到HDFS并不会删除本地文件。
首先调用命令rm
将刚刚创建的名为test
的本地文件删除。再调用命令hdfs dfs -get
将刚刚上传到HDFS的文件下载到本地。最后调用命令hdfs dfs -ls
查看HDFS上文件(夹)列表,可以看到之前上传的名为test
的文件还存在,说明下载到本地并不会删除HDFS上的文件。
调用命令hdfs dfs -cat
查看HDFS上刚刚创建的名为test
的文本文件的全部内容。
有时文本文件较大,不希望查看全部内容而只希望看到部分。调用命令hdfs dfs -tail
查看HDFS上路径“/data/12/2/shakespeare.txt”
的文本文件最后1KB内容。
首先调用命令hdfs dfs -cp
将HDFS上的文件“lab11_1/test”
复制到“lab11_1/test_bak”
。再调用命令hdfs dfs -ls
查看复制结果。该命令也可以用于文件夹的复制。
首先调用命令hdfs dfs -mv
将HDFS上的文件“lab11_1/test”
剪切到“lab11_1/test_new”
。再调用命令hdfs dfs -ls
查看剪切结果。该命令也可以用于文件夹的剪切。
首先调用命令hdfs dfs -rm
删除HDFS上的文件“lab11_1/test_new”
。再调用命令hdfs dfs -ls
查看删除结果。
如果需要删除文件夹以及文件夹中的所有文件,则需要在命令之后加上参数-r
。调用命令hdfs dfs -rm -r
删除HDFS上的文件夹“lab11_1”
。
调用命令hdfs dfs -du
查看HDFS上的文件夹“/data/”
占用的空间。可以看出,第一列为不计算复制的文件占用空间,第二列为计算复制的文件占用空间。由于HDFS默认的存储策略是复制3份,因此这里第二列的数值是第一列的3倍。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。