HDFS架构与可靠性

HDFS是一个分布式文件系统,基于流数据模式访问和处理超大文件的需求而开发的,可以运用在海量物理机集群上,具备的,高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征,适用于海量数据存储的场景。HDFS架构由HDFSClient、NameNode、SecondaryNameNode、DataNode组成

Block数据块

基本存储单位,一般为128M(Hadoop1.x默认64M,Hadoop2.x默认128M)

基本的读写单位,类似于磁盘的页,每次读写一块

每个块默认复制三分存储到多台机器

NameNode

  1. 存储文件的metadata,运行时所有metadata数据都保存到内存,因此整个HDFS可存储的文件数受限于NameNode的内存大小
  2. 一个Block在NameNode中对应一条记录(一般一个block占用150字节),如果是大量的小文件,会消耗大量内存。同时map task的数量是由splits来决定的,所以用MapReduce处理大量的小文件时,就会产生过多的map task,线程管理开销将会增加作业时间。处理大量小文件的速度远远小于处理同等大小的大文件的速度。因此Hadoop建议存储大文件,对于大量小文件,可以采用压缩、合并小文件的优化策略,例如设置文件的输入类型为CombineFileInputFormate格式
  3. 数据会定时保存到本地磁盘,但不保存block的位置信息,而是由DataNode注册时上报和运行时维护(NameNode中与DataNode相关的信息并不保存到NameNode的文件系统中,而是NameNode每次重启后,动态重建)
  4. NameNode失效则整个HDFS都失效了,所以要保证NameNode的可用性

Secondary NameNode

定时与NameNode进行同步(定期合并文件系统镜像和编辑日志,然后把合并后的传给NameNode,替换其镜像,并清空编辑日志,类似于CheckPoint机制),但NameNode失效后仍需要手工将其设置成主机

DataNode

存储数据模型:
1、文件线性切割成块(Block)
2、Block分散存储在集群节点中
3、单一文件Block大小一致,文件与文件可以不一致
4、Block可以设置副本数,副本分散在不同节点中
    副本数不要超过节点数量
    承担计算
5、文件上传可以设置Block大小和副本数
6、已上传的文件Block副本数可以调整,大小不变
7、只支持一次写入多次读取,同一时刻只有一个写入者
8、可以append追加数据

HDFS是如何保证可靠性的

1.冗余副本策略

  可以在 hdfs-site.xml 中设置复制因子指定副本数量

  所有数据块都可副本

DataNode 启动时,遍历本地文件系统,产生一份 HDFS 数据块和本地文件的对应关系列表 (blockreport) 汇报给 Namenode

2.机架策略

HDFS 的"机架感知",通过节点之间发送一个数据包,来感应它们是否在同一个机架

一般在本机架放一个副本,在其他机架再存放一个副本,这样可以防止机架失效时丢失数据,也可以提高带宽利用率

3.心跳机制

NameNode 周期性从 DataNode 接受心跳信息和块报告

NameNode 根据块报告验证元数据

  没有按时发送心跳的 DataNode 会被标记为宕机,不会再给他任何 I/O 请求

  如果 DataNode 失效造成副本数量下降,并且低于预先设定的值,NameNode 会检测出这些数据库,并在合适的时机从新复制

  引发重新复制的原因还包括数据副本本身损坏,磁盘错误,复制因子被增大等

4.安全模式

NameNode 启动时会先经过一个 "安全模式" 阶段

  安全模式阶段不会产生数据写

  在此阶段 NameNode 收集各个 DataNode 的报告, 当数据块达到最小副本数以上时,会被认为是"安全"的

  在一定比例(可设置) 的数据块被确定为"安全" 后 ,在过若干时间,安全模式结束

  当检测到副本数不足的数据块是,该块会被复制,直到达到最小副本数

5.效验和 

  在文件创立时,每个数据块都产生效验和

  效验和会作为单独一个隐藏文件保存在命名空间下

  客户端获取数据时可以检查效验和是否相同,从而发现数据块是否损坏

  如果正在读取的数据块损坏,则可以继续读取其他副本

6.回收站

  删除文件时,其实是放入回收站 /trash

  回收站里的文件是可以快速恢复的

  可以设置一个时间值,当回收站里文件的存放时间超过了这个值,就被彻底删除,并且释放占用的数据块

7.元数据保护

  映像文件和事物日志是 NameNode 的核心数据.可以配置为拥有多个副本

  副本会降低 NameNode 的处理速度,但增加安全性

NameNode 依然是单点,如果发生故障要手工切换

8、快照机制

      快照支持在一个特定时间存储一个数据拷贝,快照可以将失效的集群回滚到之前一个正常的时间点上。HDFS已经支持元数据快照。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值