hdfs学习进程1

block块与副本数的概念

  1. 块:dfs.blocksize :134217728 / 128M
  2. 副本数:dfs.replication 1 / 3 (学习过程设置为1,正常生产中设置为3),副本数指的是一个块的复制数。
  3. 面试:一个文件160m,副本数2,块大小128m,实际存储空间多少?块数量多少? 答案:块的数量为22=4,实际存储空间为1602

HDFS架构设计

  1. NN 主 名称节点 hdfs属于主从结构
  2. SNN 第二名称节点 --》NN (SNN里面存的是NN的内容,)
  3. DN 从 数据节点

NN :文件系统的命名空间

  1. namenode里面包括文件名称、文件目录结构、文件属性(创建时间 权限 副本数)以及文件对应哪些数据块,这些数据块对应分布到哪些datanode节点上,blockmap,namenode节点不会持久化存储这种映射关系,集群在启动时和运行时,datanode定期发送blockreport 给namenode,所以namenode在内存中动态维护这种映射关系。
  2. nn的作用:管理文件系统的命名空间,维护文件系统树,以两种文件永久保存在磁盘。两种文件分别是:命名空间镜像文件fsimage、编辑日志editlog

DataNode:存储数据块和块的校验和

  1. 对于块的校验和,DataNode会统计块的数目,假如一个文件的几个块合在一起,没办法形成一个文件,说明块损坏,那么此时就会从其他副本中调取。如果三个副本都损坏了,那么此时50070的web界面会显示异常。
  2. 与NN通信:netty 每隔三秒发送一个心跳包,每10次心跳发送一个blockReport。主要作用:就是进行文件数据块的读写。

SNN:第二名称节点

  1. 其存储的内容主要为NN中的两个文件。命名空间镜像文件fsimage、编辑日志 editlog
  2. 作用:定期合并fsimage+editlog文件为新的fsimage,推送给NN,称为检查点,checkpoint
  3. 参数:dfs.namenode.checkpoint.period: 3600 (hdfs,作用于namenode进程,检查点,周期(以秒为单位)也就是一小时检查一次)
  4. fsimage: 镜像文件 文件系统树 全量 14:00
  5. editlog:操作日志 读写的操作记录 增量 14:00-14:30
  6. 比如在15:00,就是14:00fsimage + 14:00~15:00editlog 合并成一个新的image
    15:00 fsimage
    14:00的fsimage 就相当于右边snn里面的从nn节点拿来的edit+image,即为new image。14:00~15:00editlog 就相当于nn中从edits变为edit.new的内容。15:00 fsimage就相当于最终的newimage+最终的edits
    在这里插入图片描述

副本放置策略

  1. 数据是以块存储在datanode节点
    在这里插入图片描述
  2. 图中可以看出DN1 DN2 这两台机器在机架rack1上面,DN3 DN4在机架rack2上面
  3. 在这里插入图片描述
  4. 副本放置参考上图,第一个副本:假设我提交文件的所在机器就是datanode节点,那么第一个块就存储在本节点上;(就近原则)如果不是,就随机挑选一台磁盘不太慢的 cpu不太繁忙的节点上; (如果只有一个机架,就在左边图上选择其他机器放置其他副本)如果不止一个机架,就如下放置 把第二个副本放置在于第一个副本的不同的机架的节点上。把第三个副本放置在与第二个副本相同的机架的不同的节点上。

猜你喜欢

转载自blog.csdn.net/qq_42694416/article/details/83757851