0
点赞
收藏
分享

微信扫一扫

大数据组件学习6 —— HDFS(二)

蓝哆啦呀 2022-04-23 阅读 71
hadoop

之前说了HDFS的组件,尤其是 NN, DN, 2NN的工作机制,这回整理下HDFS的block块与副本机制,读写过程

1. HDFS的block块

HDFS中存储的文件都以block的形式放在DN中,Hadoop 2.X中采用每个block的默认大小128M, 可以调整,主要看网络IO,磁盘IO的能力,设置太小,寻址时间过长,设置太大MR处理时间过长

以block存储文件的好处:

  • 可存储比磁盘空间大的文件
  • 块的形式可以简化存储子系统
  • 块的形式非常适合数据备份从而提供系统容错性  

2.副本机制

就是每个块有几个,默认的副本因子为3

3. HDFS的数据读写过程

3.1 写入

  • client通过建立RPC通信询问NN能否写入文件,NN检查文件是否存在,父目录在哪里,是否可以写入文件 
  • Client 请求第一个block应写到哪些DN上,NN根据文件备份数量和机架感知机制返回可以写入的DN的地址
  • Client通过RPC调用与第一个DataNode A 建立连接,A收到请求后会调用B, 再调用C,4者建立连接,形成一个pipeline
  • client以packet的形式将数据发送给A,A得到数据后将数据发送给B, B再发给C, B和C收到packet后返回一个ack信号,A收到ack之后,再给client返回一个pipeline ack, 这样就完成了一个block的写入
  • 第一个block在A B C都写入成功后,再写第二个,不断重复   

3.2 读取 

  • Client发送RPC请求,NN返回block所在的地址列表
  • 这里block的地址列表中节点的选择遵循两个原则:距离Client距离近,心跳信号反馈不超时 
  • Client从这些节点中并行读取数据,底层是建立 Socket Stream, 调用父类 DataInputFormat的read方法 
  • 每读完一个block, 进行checksum, 若Client发现错误,则通知NN, 给出下一个拥有该副本的DN, 从该DN读取 

注意: HDFS数据的写入是串行的,读取却是并行的  

举报

相关推荐

0 条评论