【大数据基础-Hadoop-1】详细分析hdfs读写流程阐述hadoop读写流程

目录

 

读流程

写流程

 


在大数据面试过程中hadoop的namenode读写流程是经常会问到的问题

 

读流程

访问namenode,告知要访问的文件

hdfs对client做身份信息验证,认证的方式有两种,一种是通过信任的客户端,由其指定用户名;第二种是通过诸如kerboers的强认证机制

检查文件的所有者以及其设定的访问权限,如果文件存在,且该用户对其有访问权限

此时namenode 会告诉hdfs客户端这个文件的第一个数据块的标识以及保存该数据块的datanode列表,此列表根据client和datanode之间的距离做了排序

有了数据块的标识和datanode列表主机名,hdfs便可以直接访问最合适的datanode读取所需要数据的数据块

这个过程直到该文件的所有数据块读取完成或HDFS客户端关闭文件流

 

写流程

hdfs clint通过hdfs 相关api发送请求,打开要写入的文件。

如果该用户有写入文件的权限,那么该请求将被送达namenode,并建立该文件的元数据,但此时新建立的元数据并未和任何数据块相关联,此时hdfs客户端会收到打开文件成功的响应,此时就可以写入数据了

当客户端将数据写入流时,数据会被自动拆分成数据包,并将数据包保存在内存队列中

客户端会起一个独立的线程,他从队列中读取数据,并向namenode请求一组datanode列表,以便写入下一个数据块的多个副本

hdfs客户端将直接连接到列表中的第一个datanode,而该datanode又连接到第二个datanode,第二个又连接到第三个datanode,建立一个数据块的复制管道

复制管道中的每一个datanode都会确认所收到的数据包已经写入磁盘。hdfs客户端维护着一个列表,记录着哪些数据包尚未收到确认信息,每收到一个响应,客户端便知道数据已经成功写入管道中的datanode,客户端便知道数据已经成功写入到管道中的一个datanode

当数据块被写入列表中的datanode之后,HDFS客户端重新向namenode申请写下一组datanode,最终全部写入datanode,关闭数据管道并通知Namenode文件操作已经完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值