Hadoop大数据分析实验(一)——HDFS基本操作

[实验目的]

  • 熟悉HDFS的相关基本概念;
  • 熟悉HDFS的基本操作。

[实验原理]

HDFS的全称为Hadoop分布式文件系统(Hadoop Distributed File System),是Hadoop的文件系统。HDFS对用户来说就如同单块磁盘,它其实是运行在Linux文件系统之上。其优点还包括:

  • 高容错性:可以处理磁盘损坏和机器宕机等等;
  • 能够存储大文件:文件大小可以达到TB甚至PB级别,远超单块磁盘的最大容量;
  • 利用普通商用硬件:不需要超级计算机,可以用可靠性一般的普通商用硬件。

HDFS的守护进程有以下三类:

  • 命名节点(namenode):管理文件系统的命名空间、元数据和文件,一般只运行在一台机器上;
  • 数据节点(datanode):存取数据,向命名节点报告情况,一般运行在许多台机器上;
  • 备份名称节点(secondary namenode):用于辅助命名节点的工作。

其具体架构如下图所示。
1
在HDFS中,文件被分成了不同的文件块(block),文件块是文件存储的最小单元,由命名节点管理,实际存储在数据节点上。每一个文件块都会在载入时复制到不同机器上,提供高容错性和可用性,默认复制3份,且默认的文件块大小是64MB。在下图中可以看出,文件块B1和B2被复制了3份且存储在不同的数据节点。
2
出于可扩展性的考虑,命名节点不直接读写数据。客户端与命名节点通信,获取HDFS的命名空间,并得到读写数据的具体文件块位置,然后直接从数据节点读写数据。

在HDFS上写数据的流程如下图所示,基本步骤为:

  1. 在命名节点中创建文件的命名空间;
  2. 将数据流从客户端传到从机1;
  3. 将数据流从从机1传到从机2;
  4. 将数据流从从机2传到从机3;
  5. 将成功或失败信号从从机3传到从机2;
  6. 将成功或失败信号从从机2传到从机1;
  7. 将成功或失败信号从从机1传到客户端。

3
在HDFS上读数据的流程如下图所示,假设需要读取的文件有两个文件块B1和B2,基本步骤为:

  1. 从命名节点得到文件块的位置;
  2. 从从机1读取文件块B1,并重组文件;
  3. 从从机3读取文件块B2,并重组文件。
    4
    可以通过操作系统的命令行与HDFS进行交互,命令的基本形式为
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查看文件(夹)占用空间

[实验步骤]

1. 连接到(广工)大数据计算集群

双击桌面上的xshell 5的快捷方式,通过xshell连接到大数据计算集群。在命令行中输入连接命令,将“<id>”替换成自己的用户名,将“<master_host>”替换成实验室当前环境的主机地址,并在弹出的对话框中输入密码。

[c:\~]$ ssh <id>@<master_ip>

在这里插入图片描述

2. 查看HDFS命令帮助

调用命令hdfs dfs -help查看HDFS操作相关命令的帮助。在这里插入图片描述
再调用命令hdfs dfs -help加上参数ls查看命令ls的帮助。可以看到,命令ls的主要功能是列出文件和文件夹。
在这里插入图片描述

3. 查看HDFS文件(夹)列表

调用命令hdfs dfs -ls查看HDFS上路径“/data/”的文件(夹)列表。可以看出,返回结果与Linux文件系统基本一致,各列定义依次为访问权限、所有者、所有者所在用户组、文件大小、创建时间和具体路径。
在这里插入图片描述
与Linux类似,HDFS也区分绝对路径和相对路径,如果指定路径不是以/开头则为相对路径,并且是相对于用户家目录的路径。因此,如果不在命令hdfs dfs -ls后指定任何路径,则默认列出家目录的文件(夹)。如果目前home目录没有任何文件(夹),则不会输出任何信息。
在这里插入图片描述

4. 在HDFS中创建文件夹

首先调用命令hdfs dfs -mkdir在自己的家目录下创建文件夹lab11_1。再调用命令hdfs dfs -ls查看自己的家目录确认文件夹创建成功。
在这里插入图片描述

5. 从本地上传文件(夹)到HDFS

首先调用命令echo和输出重定向符>在本地创建一个名为test的文件。再调用命令hdfs dfs -put将其上传到HDFS。最后调用命令ll查看本地文件(夹)列表,可以看到之前创建的名为test的文件还存在,说明上传到HDFS并不会删除本地文件。
在这里插入图片描述

6. 从HDFS下载文件(夹)到本地

首先调用命令rm将刚刚创建的名为test的本地文件删除。再调用命令hdfs dfs -get将刚刚上传到HDFS的文件下载到本地。最后调用命令hdfs dfs -ls查看HDFS上文件(夹)列表,可以看到之前上传的名为test的文件还存在,说明下载到本地并不会删除HDFS上的文件。
在这里插入图片描述

7. 在HDFS中查看文本文件内容

调用命令hdfs dfs -cat查看HDFS上刚刚创建的名为test的文本文件的全部内容。
在这里插入图片描述
有时文本文件较大,不希望查看全部内容而只希望看到部分。调用命令hdfs dfs -tail查看HDFS上路径“/data/12/2/shakespeare.txt”的文本文件最后1KB内容。
在这里插入图片描述

8. 在HDFS中复制文件(夹)

首先调用命令hdfs dfs -cp将HDFS上的文件“lab11_1/test”复制到“lab11_1/test_bak”。再调用命令hdfs dfs -ls查看复制结果。该命令也可以用于文件夹的复制。
在这里插入图片描述

9. 在HDFS中剪切文件(夹)

首先调用命令hdfs dfs -mv将HDFS上的文件“lab11_1/test”剪切到“lab11_1/test_new”。再调用命令hdfs dfs -ls查看剪切结果。该命令也可以用于文件夹的剪切。
在这里插入图片描述

10. 在HDFS中删除文件(夹)

首先调用命令hdfs dfs -rm删除HDFS上的文件“lab11_1/test_new”。再调用命令hdfs dfs -ls查看删除结果。
在这里插入图片描述
如果需要删除文件夹以及文件夹中的所有文件,则需要在命令之后加上参数-r。调用命令hdfs dfs -rm -r删除HDFS上的文件夹“lab11_1”
在这里插入图片描述

11. 在HDFS中查看文件(夹)占用空间

调用命令hdfs dfs -du查看HDFS上的文件夹“/data/”占用的空间。可以看出,第一列为不计算复制的文件占用空间,第二列为计算复制的文件占用空间。由于HDFS默认的存储策略是复制3份,因此这里第二列的数值是第一列的3倍。
在这里插入图片描述

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值