【Hadoop大数据技术】,2024年最新文末有彩蛋

本文详细介绍了HDFS文件的读写原理,包括客户端如何通过RPC与NameNode交互,以及文件分块、数据传输的过程。此外,还讲述了HDFS的Shell操作,如查看目录、读取文件等。最后,讨论了如何在Eclipse中开发调试HDFS Java程序,包括安装Eclipse、创建项目、添加JAR包和编写Java应用程序。
摘要由CSDN通过智能技术生成

注:EditLog和Edits是同一个东西。Edits是EditLog的文件名,它存储了EditLog的内容。

🕘 2.2 HDFS文件读写原理

🕤 2.2.1 HDFS写文件流程

在这里插入图片描述

以300MB大小的1.txt文件为例,介绍HDFS写文件流程

  1. 客户端发起上传1.txt文件到指定目录的请求,通过RPC(远程过程调用)与NameNode建立通讯。
  2. NameNode检查元数据文件的系统目录树,即检查客户端是否有上传文件的权限,以及文件是否存在等。若系统目录树的父目录不存在该文件相关信息,返回客户端可以上传文件。
  3. 客户端根据分块策略对文件1.txt进行切分,形成3个Block,分别是blk1、blk2和blk3。
  4. 客户端向NameNode请求上传第一个Block,即blk1,以及数据块副本的数量。
  5. NameNode根据副本机制和机架感知向客户端返回可上传blk1的DataNode列表。
  6. 客户端从NameNode接收到blk1上传的DataNode列表,并与虚拟机建立管道(Pipeline)。
  7. Hadoop3向Hadoop2汇报管道建立成功,Hadoop2与Hadoop1汇报管道建立成功;Hadoop1与客户端汇报管道建立成功,客户端与所有DataNode列表中的所有DataNode都建立了管道。
  8. 客户端开始传输blk1,传输过程是以流式写入的方式实现。
    1)将blk1写入到内存中进行缓存。
    2)将blk1按照packet(默认为64K)为单位进行划分。
    3)将第一个packet通过管道发送给Hadoop1。
    4)Hadoop1接收完第一个packet之后,客户端会将第二个packet发送给Hadoop1,同时Hadoop1通过Pipeline将第一个packet发送给Hadoop2。
    5)Hadoop2接收完第一个packet之后,Hadoop1会将第二个packet发送给Hadoop2,同时Hadoop2通过Pipeline将第一个packet发送给Hadoop3。
    6)依次类推直至blk1上传完成。
  9. Hadoop3向Hadoop2发送blk1写入完成的信息,Hadoop2向Hadoop1发送blk1写入完成的信息,最后,Hadoop1向客户端发送blk1写入完成的信息。
    注意:客户端成功上传blk1后,重复第4~9步的流程,依次上传blk2和blk3,最终完成1.txt文件的上传。

练习题:客户端上传文件的时候哪项是正确的?(多选)
A、数据经过 NameNode 传递给 DataNode
B、客户端端将文件切分为多个Block,依次上传
C、客户端只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作
D、客户端发起文件上传请求,通过RPC与NameNode建立通讯。
答案:BD

🕤 2.2.2 HDFS读文件流程

在这里插入图片描述

以300MB大小的1.txt文件为例,介绍HDFS读文件流程

  1. 客户端发起读取1.txt文件的请求,通过RPC与NameNode建立通讯。
  2. NameNode检查元数据文件的系统目录树,即检查客户端是否有读取文件的权限,以及文件是否存在等。
  3. 客户端按照就近原则从NameNode返回的Block列表读取Block。
  4. 客户端将读取所有的Block按照顺序进行合并,最终形成1.txt文件,需要注意的是,如果文件过大导致NameNode无法一次性文件的所有Block列表返回客户端时,会分批次将Block列表返回客户端。

🕒 3. HDFS的Shell操作

HDFS Shell类似于Linu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值