HDFS存储原理

来源:互联网 发布:对接淘宝库存管理软件 编辑:程序博客网 时间:2024/05/22 01:28

整理下漫画,非常适合初学者理解

  • 角色出演

    这里写图片描述
    如上图所示,HDFS存储相关角色与功能如下:

Client:客户端,系统使用者,调用HDFS API操作文件;与NN交互获取文件元数据;与DN交互进行数据读写。

Namenode:元数据节点,是系统唯一的管理者。负责元数据的管理;与client交互进行提供元数据查询;分配数据存储节点等。

Datanode:数据存储节点,负责数据块的存储与冗余备份;执行数据块的读写操作等。

  • 写入数据
    1.发送写数据请求

这里写图片描述
HDFS中的存储单元是block。文件通常被分成64或128M一块的数据块进行存储。与普通文件系统不同的是,在HDFS中,如果一个文件大小小于一个数据块的大小,它是不需要占用整个数据块的存储空间的。http://www.tuicool.com/articles/MBz26b
2.文件切分
这里写图片描述
3.DATANODE分配
这里写图片描述
这里写图片描述
4.数据写入
这里写图片描述
这里写图片描述
5.写入完成
这里写图片描述
这里写图片描述
这里写图片描述
6.角色定位
这里写图片描述

  • HDFS读文件
    1.用户需求
    这里写图片描述
    HDFS采用的是“一次写入多次读取”的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。
    2.从namenode获取元数据信息
    这里写图片描述
    这里写图片描述
    这里写图片描述
    3.下载数据
    这里写图片描述
    前文提到在写数据过程中,数据存储已经按照客户端与DataNode节点之间的距离进行了排序,距客户端越近的DataNode节点被放在最前面,客户端会优先从本地读取该数据块。
  • HDFS容错机制——第一部分:故障类型及监测方法
    1.三类故障
    a.节点失败
    这里写图片描述
    2.网络故障
    这里写图片描述
    3.数据损坏(脏数据)
    这里写图片描述
    2.故障检测机制
    a.节点失败检测机制
    这里写图片描述
    hadoop1的secondarynamenode同步namenode元数据,手动切换支持冷备。hadoop2,分activenamenode和standbynamenode支持热备,journalnodes监控namenode。
    这里写图片描述
    这里写图片描述
    b.通信故障检测机制
    这里写图片描述
    c.数据错误检测机制
    这里写图片描述
    这里写图片描述
    这里写图片描述
    3.回顾:心跳信息与数据块报告
    这里写图片描述
    HDFS存储理念是以最少的钱买最烂的机器并实现最安全、难度高的分布式文件系统(高容错性低成本),从上可以看出,HDFS认为机器故障是种常态,所以在设计时充分考虑到单个机器故障,单个磁盘故障,单个文件丢失等情况。
  • 容错第二部分:读写容错
    1.这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    2.读容错
    这里写图片描述
    这里写图片描述

  • 容错第三部分:数据节点(DN)失效
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

  • 备份规则
    这里写图片描述
    1.机架与数据节点
    这里写图片描述
    2.副本放置策略
    这里写图片描述
    数据块的第一个副本优先放在写入数据块的客户端所在的节点上,但是如果这个客户端上的数据节点空间不足或者是当前负载过重,则应该从该数据节点所在的机架中选择一个合适的数据节点作为本地节点。

如果客户端上没有一个数据节点的话,则从整个集群中随机选择一个合适的数据节点作为此时这个数据块的本地节点。
这里写图片描述
HDFS的存放策略是将一个副本存放在本地机架节点上,另外两个副本放在不同机架的不同节点上。

这样集群可在完全失去某一机架的情况下还能存活。同时,这种策略减少了机架间的数据传输,提高了写操作的效率,因为数据块只存放在两个不同的机架上,减少了读取数据时需要的网络传输总带宽。这样在一定程度上兼顾了数据安全和网络传输的开销。
这里写图片描述
这里写图片描述

0 0
原创粉丝点击