大数据技术内容梳理(持续更新)

HDFS

HDFS 读写数据的流程?

读数据流程:

  1. 请求下载文件/user/test_file.mp4 客户端先将请求发送到NameNode.
  2. NameNode 向客户端 返回目标文件的元数据。
  3. 客户端获取到元数据后,根据Block的位置向DataNode请求读对应Block的数据。

写数据流程:

  1. 向NameNode请求上传文件/user/test_file.mp4
  2. NameNode 做一系列的检查, 包括:
    • 检查权限
    • 检查目录结构

然后向客户端响应是否可以上传文件。

  1. 客户端接到可以上传文件的响应后,向NameNode请求上传第一个Block(0-128M),请求返回存储位置(DataNode的地址)。
    此刻NameNode进行副本节点的规划,选择存储数据的DataNode节点:

    • 本地节点
    • 其他机架的一个节点
    • 其他机架的另外的一个节点
  2. NameNode 将此存储规划的方案(DataNode1,DataNode2,DataNode3)元数据发送给客户端,采用这三个节点存储数据。

  3. 客户端开始尝试和DataNode建立连接并上传数据。
    分别与DataNode1,DataNode2,DataNode3请求建立Block传输通道: ByteBuffer

  4. 客户端等待DataNode响应ACK成功应答。

    如果没有收到DataNode响应ACK成功应答呢?

    当 DataNode 突然挂掉了,客户端接收不到这个 DataNode 发送的 ack 确认,客户端会通
    知 NameNode,NameNode 检查并确认该块的副本与规定的不符,NameNode 会通知闲置的
    DataNode 去复制副本,并将挂掉的 DataNode 作下线处理。等挂掉的 DataNode 节点恢复后, 删除该节点中曾经拷贝的不完整副本数据。

  5. 一切顺利后,接下来客户端向DataNode传输数据 Packet(64K)

  6. 当传输数据全部完成后,客户端通知NameNode写入数据完成。

当HDFS拥有大量小文件时,产生的影响以及如何优化?

  • 影响

    • 任何体量的文件,无论大文件还是小文件,元
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值