HDFS读写流程

这篇具有很好参考价值的文章主要介绍了HDFS读写流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读数据流程

HDFS读写流程

  1. 客户端向NameNode请求文件的位置:客户端想要访问一个文件时,会向NameNode发送一个请求,要求获取该文件在HDFS上的位置信息。

  2. NameNode将位置信息返回给客户端:NameNode接收到客户端的请求后,会返回该文件所在的DataNode节点的IP地址和块ID等信息。

  3. 客户端连接DataNode获取数据:客户端根据NameNode返回的信息,连接包含所需数据块的DataNode并请求读取数据。

  4. DataNode返回数据给客户端:DataNode收到客户端的读取请求,从本地磁盘读取相应的数据块,并将其返回给客户端。

  5. 客户端合并数据:如果所请求的数据块不止一个,客户端可以根据需要将多个数据块的数据合并成一个完整的文件。

  6. 客户端关闭文件:当客户端完成对文件的访问后,它会通知HDFS以便释放相关资源。

hdfs在读取文件时,其中一个block坏掉了怎么办?

当 HDFS 读取数据时遇到了一个损坏的 block,处理这种情况的方法如下:

  1. HDFS 自动处理

如果 HDFS 发现某个 block 损坏了,它会自动尝试从其他的副本中读取相同的数据。HDFS 的默认行为是在损坏副本的基础上创建新的副本,以保证数据块数量达到预期。

  1. 人工处理

如果 HDFS 自动处理不能满足需求,可以手动处理。 首先需要确定到底哪个 block 已经损坏。可以使用以下方式:

  • 可以通过 Hadoop 自带的 checksum 功能计算每个 block 的校验和,并与存储在 NameNode 上的校验和进行比较。 如果两个校验和不匹配,那么就意味着文件的该 block 已经损坏了。
  • 还可以通过 DFS Health Reporter 和 DataNode Logs 来获取更多有关坏掉 block 的信息。

一旦知道了哪个 block 损坏了,我们需要采取适当的措施来纠正这个问题,例如:

  • 如果只有一个副本损坏了,在修复或替换该副本之前,应将其删除以确保读取数据时不会遇到任何错误。
  • 如果多个副本坏掉了,需要从备份中恢复该 block。
  • 如果不能从备份中恢复块,则需要采取其他措施,例如手动创建一些数据来替换该 block,或使用分散存储系统(如 RAID)来保护数据的完整性。

总之,在处理 HDFS 中损坏的 block 时,应先让系统尝试自动修正问题。 如果自动修复无法成功,则必须手动修复问题以确保 HDFS 文件系统的正常

写数据流程

HDFS读写流程

  1. 客户端向NameNode请求将数据写入HDFS。
  2. NameNode检查目标文件是否存在,如果不存在,则创建一个新文件。
  3. 分配一组数据节点给该文件,并确定每个数据节点将负责存储哪些块。
  4. 地址返回给客户端。
  5. 客户端选择其中一个数据节点作为首选写入节点,并向其发送写入请求。
  6. 数据节点接收到写入请求后,将数据缓存在本地磁盘中,并确认客户端已经有相应的权限进行写入操作。
  7. 当数据量达到一定大小后,数据节点按照预设的块大小划分成多个块,每个块存储在一个DataNode上。
  8. 数据节点向客户端发送确认消息,表示可以开始向DataNode写入数据。
  9. 客户端从文件中读取数据并发送至首选写入节点。
  10. 写入节点将数据写入本地磁盘缓存,并向副本节点通知需要进行数据复制的指令。
  11. 副本节点复制数据到本地磁盘缓存,并将确认写入节点:数据块已成功复制。
  12. 所有数据块都已被写入数据节点,写入过程全部完成。
  13. 客户端接受写入确认消息并结束本次写入操作。

HDFS在写数据的时候,如果其中一个DataNode突然挂掉了怎么办?

在HDFS写数据时,如果其中一个DataNode突然挂掉了,HDFS会自动检测到该节点不可用并尝试将数据复制到其他可用的DataNode上。这是由于HDFS中每个块都会被副本到多个节点上,通常默认情况下是三个副本。因此,在数据写入期间,如果其中一个DataNode发生故障,HDFS可以从其他 DataNode 取得副本数据进行恢复。

具体来说,HDFS有一个名为“replication factor”的概念,它显示了要在网络中存储特定块数据的副本数。当我们在HDFS写入数据时,数据会被分成固定大小的块并在不同的DataNode上进行复制。默认情况下,副本数是3,但是您也可以根据需要进行更改。

当DataNode节点出现问题时,HDFS会根据复制因子查找另外两个节点上的数据副本,以保证数据的完整性。在后续操作中,HDFS将停止向故障节点传输块数据,直到其恢复正常运行。

因此,即便在写入数据时有某些异常状况,最终HDFS也会确保数据安全地持久化到集群中去。文章来源地址https://www.toymoban.com/news/detail-493156.html

到了这里,关于HDFS读写流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • zookeeper源码(08)请求处理及数据读写流程

    用于接收客户端连接、管理客户端session、处理客户端请求。 代表一个客户端连接对象: 从网络读写数据 数据编解码 将请求转发给上层组件或者从上层组件接收响应 管理连接状态,比如:enableRecv、sessionTimeout、stale、invalid等 保存当前的packetsReceived、packetsSent、lastCxid、last

    2024年02月19日
    浏览(27)
  • HDFS中的NAMENODE元数据管理(超详细)

    在HDFS中,元数据主要值得是文件相关的元数据,有namenode管理维护。从广义的角度来说,因为namenode还需要管理众多的DataNode结点,因此DataNode的位置和健康状态信息也属于元数据 在hdfs中,文件相关的元数据具有两种类型: 文件自身属性信息 文件名称、权限、修改时间,文件

    2024年02月13日
    浏览(41)
  • HDFS读写流程详细过程

    HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。 适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

    2024年02月08日
    浏览(23)
  • hdfs的读写流程

    1.client发起文件上传请求,通过rpc与namenode建立通讯,namenode检查目标文件是否已经存在,父目录是否存在,返回是否可以上传 2.client请求第一个block该传输到哪些datanode服务器上 3.namenode根据配置文件中指定的备份数量及副本放置策略进行文件分配,返回可用DataNode地址,如:

    2024年02月16日
    浏览(29)
  • HDFS读写流程

    客户端向NameNode请求文件的位置:客户端想要访问一个文件时,会向NameNode发送一个请求,要求获取该文件在HDFS上的位置信息。 NameNode将位置信息返回给客户端:NameNode接收到客户端的请求后,会返回该文件所在的DataNode节点的IP地址和块ID等信息。 客户端连接DataNode获取数据:

    2024年02月09日
    浏览(23)
  • 【Hadoop面试】HDFS读写流程

    HDFS(Hadoop Distributed File System)是GFS的开源实现。 HDFS是一个典型的主/备(Master/Slave)架构的分布式系统,由一个名字节点Namenode(Master) +多个数据节点Datanode(Slave)组成。其中Namenode提供元数据服务,Datanode提供数据流服务,用户通过HDFS客户端与Namenode和Datanode交互访问文件系统。

    2024年02月04日
    浏览(30)
  • 大数据:HDFS存储原理,fsck命令查看文件副本状态,namenode元数据,edits流水账,fsimage合并,hdfs读取数据

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月05日
    浏览(50)
  • HDFS写流程源码分析(一)-客户端

    环境为hadoop 3.1.3 以下代码创建并写入文件。 Configuration 加载了hadoop的配置信息,下为其静态代码块,可以看到眼熟的配置文件名称。 FileSystem 是Hadoop文件系统的抽象类,有许多实现(如下图),hdfs便是其分布式文件系统的具体实现。 这里我们关注的为 DistributedFileSystem 。 上

    2024年02月11日
    浏览(43)
  • 从零开始的Hadoop学习(六)| HDFS读写流程、NN和2NN工作机制、DataNode工作机制

    1.1 HDFS写数据流程 1.1.1 剖析文件写入 (1)客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。 (2)NameNode 返回是否可以上传。 (3)客户端请求第一个 Block 上传到哪几个 DataNode 服务上。 (4)NameNode 返回 3个 DataN

    2024年02月10日
    浏览(39)
  • hdfs-namenode

    namenode解析: 维护整个文件系统目录结构树,文件、目录的各种信息(相当于ls -l),还有文件(对应的数据块列表)存放在hdfs各个节点的信息; 接受客户端(用户)的访问(操作)请求; Namenode(存储的信息主要存储在以下4个文件)主要有以下4个文件控制它的配置【错误

    2024年02月11日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包