hadoop随手笔记

本文详细介绍了HDFS的写入流程,包括packet的构造与发送、心跳机制和数据副本策略。HDFS利用NameNode的RackAware功能进行数据分布,确保数据可靠性。在写入过程中,客户端先向NameNode获取DataNode信息,然后以流式写入数据,通过DataNode间的接力完成数据传输。此外,文章还讨论了HDFS中的互斥锁问题和NameNode的角色。
摘要由CSDN通过智能技术生成


图2.1 HDFS文件系统的架构图

(1)hadoop的信息的传递主要依靠心跳机制:依靠传递packet来想Datanode写入数据,一个packet由多个数据chunk组成,每个chunk对应这一个校验和,当chunk的数目足够多的时候,packet会被写入Dataqueue。其中packet包含两种:心跳packet(里面不含有任何chunk,4个字节存储packet的长度,8个字节存储呢packet在block中的偏移量,8个字节存储呢在Block中的序列号,1个字节用于标识该packet是否是block中的最后一个packet)与数据packet。

(2)在发送packet之前,DataStreamer类首先会从Namenode中获得blockid与block的位置信息,然后会循环的从Dataqueue中取得第一个packet,然后将该packet写入与Datanode所建立的socket 中。当属于一个block的所有packet都发送给Datanode,并且返回了与每个packet所对应的相应信息之后,DataStream会关闭当前的数据block。

(3)在写入数据的时候DataNode节点会在Out/InStream就是数据包传输的管道线性排列,然后会依次按照将数据写入DataNode,然后会按照原路依次向上返回响应的信息,最终返回给客户端,使用responseprocessor用来处理客户端向DataNode发送数据后响应,因为每一个数据包(packet)在DataNode接受之后会有一个反馈,该线程会在客户端运行并且处理的packet的信息也不是最后一个是时候,会循环处理来自DataNode中的响应,如果返回的是失败的响应会记录下索引并抛出异常;在客户端会创建两个队列如Dataqueue与ackqueue队列,其中前一个用来存储将要发送的数据包,而后一个是用来保存已经发送,但是没有收到确认信息的数据包。


有一个文件FileA,100M大小。Client将FileA写入到HDFS上。
HDFS按默认配置。
HDFS分布在三个机架上Rack1,Rack2,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值