Hadoop8-HDFS设计与实现

1. HDFS是为大数据集设计的一种可扩展、高可用、高可靠的分布式文件系统,适合一次写入,多次读的场景。

2. HDFS重要组件

    2.1 NameNode

        2.1.1 元信息

                         逻辑:Namespace的组织,命名空间

                         物理:存储在磁盘上的edit log和fsimage

        2.1.2 响应客户端请求

        2.1.3 心跳,向DN发送一些删除的命令等

    2.2 DataNode

        2.2.1 心跳机制,周期性的向NN汇报本机上的块。

        2.2.2 物理上,数据的存储-file+checksum。

        2.2.3 响应客户端请求

3. 架构

4. 读写过程

5. 容错机制

    5.1 多副本,DN

    5.2 心跳机制,DN

    5.3 数据完整性,file+checksum DN,日志持久化 NN

    5.4 快照

    5.4 三种错误

        Client错误

        NN元数据错误

        DN错误,数据完整性

        网络割裂

6. 访问接口

7. 空间回收

    7.1 文件的删除和恢复

    7.2 减少副本系数

 

重要问题:

1. NN启动时,DN启动时

Namenode启动后会进入一个称为安全模式的特殊状态。处于安全模式的Namenode是不会进行数据块的复制的。Namenode从所有的 Datanode接收心跳信号和块状态报告。块状态报告包括了某个Datanode所有的数据块列表。每个数据块都有一个指定的最小副本数。当Namenode检测确认某个数据块的副本数目达到这个最小值,那么该数据块就会被认为是副本安全(safely replicated)的;在一定百分比(这个参数可配置)的数据块被Namenode检测确认是安全之后(加上一个额外的30秒等待时间),Namenode将退出安全模式状态。接下来它会确定还有哪些数据块的副本没有达到指定数目,并将这些数据块复制到其他Datanode上。

当一个Datanode启动时,它会扫描本地文件系统,产生一个这些本地文件对应的所有HDFS数据块的列表,然后作为报告发送到Namenode,这个报告就是块状态报告。DN在启动后会周期性的向NN汇报块状态。

2. HA的实现机制

3. 读写过程

写:应用程序的写操作被透明地重定向到这个临时文件。当这个临时文件累积的数据量超过一个数据块的大小,客户端才会联系Namenode。Namenode将文件名插入文件系统的层次结构中,并且分配一个数据块给它。然后返回Datanode的标识符和目标数据块给客户端。接着客户端将这块数据从本地临时文件上传到指定的Datanode上。当文件关闭时,在临时文件中剩余的没有上传的数据也会传输到指定的Datanode上。然后客户端告诉Namenode文件已经关闭。此时Namenode才将文件创建操作提交到日志里进行存储。如果Namenode在文件关闭前宕机了,则该文件将丢失。

复制,当客户端向HDFS文件写入数据的时候,一开始是写到本地临时文件中。假设该文件的副本系数设置为3,当本地临时文件累积到一个数据块的大小时,客户端会从Namenode获取一个Datanode列表用于存放副本。然后客户端开始向第一个Datanode传输数据,第一个Datanode一小部分一小部分(4 KB)地接收数据,将每一部分写入本地仓库,并同时传输该部分到列表中第二个Datanode节点。第二个Datanode也是这样,一小部分一小部分地接收数据,写入本地仓库,并同时传给第三个Datanode。最后,第三个Datanode接收数据并存储在本地。因此,Datanode能流水线式地从前一个节点接收数据,并在同时转发给下一个节点,数据以流水线的方式从前一个Datanode复制到下一个。

4. HDFS联邦机制

  • 为了水平扩展Namenode,Federation使用了多个独立的Namenode/NameSpace。这些Namenode之间是联合的,也就是说,他们之间相互独立且不需要互相协调,各自分工,管理自己的区域。分布式的datanode被用作通用的数据块存储存储设备。每个DataNode要向集群中所有的namenode注册,且周期性的向所有namenode发送心跳和块报告,并执行来自所有namenode的命令。
  • 所谓Block Pool(块池)就是属于单个命名空间的一组block(块)。

5. 均衡策略

HDFS的架构支持数据均衡策略。如果某个Datanode节点上的空闲空间低于特定的临界点(使用空间达到80%以上?),按照均衡策略系统就会自动地将数据从这个Datanode移动到其他空闲的Datanode。当对某个文件的请求突然增加,那么也可能启动一个计划创建该文件新的副本,并且同时重新平衡集群中的其他数据。这些均衡策略目前还没有实现。

6. HDFS的可靠性?

HDFS的主要目标就是即使在出错的情况下也要保证数据存储的可靠性。常见的三种出错情况是:Namenode出错, Datanode出错和网络割裂(network partitions)。

磁盘数据错误,心跳检测和重新复制-NN+DN

集群均衡-读性能,均衡存储

数据完整性-DN

元数据磁盘错误-NN

快照-备份

 

        

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值