Hadoop启蒙-HDFS读写流程

1 篇文章 0 订阅
1 篇文章 0 订阅

Hadoop-HDFS读写流程

简介:

HDFS是基于谷歌的"GFS"论文的开源实现的一个分布式文件系统。

优点:

  1. 适合存储大量数据。
  2. 可以运行在廉价计算机上。
  3. 易扩展、高容错。

缺点:

  1. 不支持修改,只能追加。
  2. 小文件过多会降低性能,会导致内存中的元数据量增多,会对mapReduce计算造成影响。
  3. 一个文件同一时间只能一个客户端操作。

NameNode:

  1. 管理文件元数据,并将元数据保存在内存中,以便对外提供更快速的服务。
  2. 通过专门的持久化机制保证数据的安全。

DataNode:

  1. 负责存储数据,文件会按照特定大小切分成多个Block,DataNode就负责存储这些Block和它们的副本。
  2. 定期与NameNode保持心跳,以及向NameNode汇报自己的Block信息。
一、写流程

在这里插入图片描述

  1. 客户端向nameNode申请写入文件。
  2. nameNode校验地址是否有效、以及客户端权限等,如果允许上传,会给客户端发送响应。
  3. 客户端收到nameNode的响应后,开始准备上传文件,按128M的大小将文件切分成若干个block块,先去询问nameNode第一个block块放哪几台dataNode。
  4. nameNode收到上传请求后,会返回三台可用的dataNode节点信息。
  5. 客户端收到dataNode的节点信息后,会与最近的一台dataNode建立pipeline连接。
  6. 第一台dataNode会继续与下一台dataNode建立连接,下一台再与下一台建立连接,整个传输通道连接建立完毕后会依次返回客户端。
  7. 客户端将第一个block发送到第一台dataNode,并以packet(64kb)为基本单位发送。
  8. dataNode在收到packet后,会按照516B为一个chunk进行数据校验,其中512B是数据,4B是校验位。
  9. dataNode1每收到一个packet后本地保存,然后转发给dataNode2并开始接收下一个packet,dataNode2接收完毕后再转发给dataNode3。
  10. 当一个block块传输完毕后,dataNode会给客户端发送响应,同时各个DataNode分别向nameNode汇报自己的block,然后客户端开始上传下一个block,重复3~9过程。
  11. 客户端收到所有block上传完毕后,客户端断开连接,通知NameNode文件上传完毕。
二、读流程

在这里插入图片描述

  1. 客户端向NameNode发送读请求,获取文件的元数据。
  2. NameNode将文件的所有block块所在的DataNode以列表形式返回客户端,并按距离排序。
  3. 客户端就近挑选一台DataNode建立输入流。
  4. 客户端同样以packet为基本单位来接收并校验。
  5. 客户端将下载的所有block块先缓存在本地,然后再写入到最终文件。
  6. 户端同样以packet为基本单位来接收并校验。
  7. 客户端将下载的所有block块先缓存在本地,然后再写入到最终文件。
  8. 传输完成后关闭输入流。

大数据小白,建议先看这篇

如果觉得文章对你有帮助的话,可以微信关注我的公众号:码农小诚
关注我的公众号更多技术文章分享,与你共同成长,回复【555】还有55本java技术书籍,免费送

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小诚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值