3.1 分布式文件系统

3.1.1 计算机集群结构

HDFS节点分几种 hdfs把节点分为两类_数据

3.1.2 分布式文件系统的结构

HDFS节点分几种 hdfs把节点分为两类_命名空间_02

两类节点

1.主节点(Master Node) 或称为 名称节点(NameNode)

负责文件和目录的创建、删除和重命名等,同时管理着数据节点和文件块的映射关系。保存元数据(关于数据的数据)。

2.从节点(Slave Node) 或称为 数据节点(DataNode)

负责数据的存储和读取。

3.采用多副本存储

防止计算机集群中的节点可能发生故障,保证数据的完整性。


3.1.3 分布式文件系统的设计需求

1.透明性

2.并发控制

3.文件复制

4.硬件和操作系统的异构性

5.可伸缩性

6.容错

7.安全


3.2 HDFS简介

实现目标:

1.兼容廉价的硬件设备

2.流数据读写

3.大数据集

4.简单的文件模型:一次写入,多次读取。

5.强大的跨平台兼容性

局限性:

1.不适合低延迟数据访问

2.无法高效存储大量小文件

3.不支持多用户写入及任意修改文件


3.3 HDFS的相关概念

3.3.1 块

采取块的好处:

1.支持大规模文件存储

2.简化系统设计

3.适合数据备份

3.3.2 名称节点和数据节点

HDFS节点分几种 hdfs把节点分为两类_数据_03

名称节点的启动:

在名称节点启动的时候,它会将FsImage文件中的内容加载到内存中,之后再执行 EditLog文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数 据支持客户端的读操作。 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件和一个 空的EditLog文件。


3.3.3 第二名称节点

解决名称节点运行期间EditLog不断变大的问题。

第二名称节点是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元 数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是单独运行在一台机器上。

HDFS节点分几种 hdfs把节点分为两类_HDFS节点分几种_04


3.4 HDFS体系结构

3.4.1 HDFS体系结构概述

HDFS节点分几种 hdfs把节点分为两类_HDFS节点分几种_05


3.4.2 HDFS命名空间管理

1.HDFS的命名空间包含目录、文件和块。

2.在HDFS1.0体系结构中,在整个HDFS集群中只有一个命名空间,并且只有唯一一个名称节点,该节点负责对这个命名空间进行管理 。

3.HDFS使用的是传统的分级文件体系,因此,用户可以像使用普通文件系统一样,创建、删除目录和文件,在目录间转移文件,重命名文件等


3.4.3 通信协议

• HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输

• 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的

• 客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互

• 名称节点和数据节点之间则使用数据节点协议进行交互

• 客户端与数据节点的交互是通过RPC(Remote Procedure Call)来实现的。在设计上,名称节点不会主动发起RPC,而是响应来自客户端和数据节点的RPC请求


3.4.4 HDFS体系结构的局限性

(1)命名空间的限制:名称节点是保存在内存中的,因此,名称节点能够容纳的对象(文件、块)的个数会受到内存空间大小的限制。

(2)性能的瓶颈:整个分布式文件系统的吞吐量,受限于单个名称节点的吞吐量。

(3)隔离问题:由于集群中只有一个名称节点,只有一个命名空间,因此,无法对不同应用程序进行隔离。

(4)集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个集群变得不可用。


3.5 HDFS的存储原理

3.5.1 数据存储策略

1.数据存放

HDFS节点分几种 hdfs把节点分为两类_HDFS节点分几种_06

副本的放置策略

默认的冗余复制因子为3。

第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点

第二个副本:放置在与第一个副本不同的机架的节点上

第三个副本:与第一个副本相同机架的其他节点上

更多副本:随机节点

2.数据读取

调用API获取机架ID。

3.数据复制

采用流水线复制策略,通过请求获得数据节点列表。

3.5.2 数据错误与恢复

1.名称节点出错

两种机制:1)把名称节点上的元数据信息同步存储到其他文件系统(如远程挂载的网络文件系统NFS)。

2)运行一个第二名称节点,当作备份。

2.数据节点出错

依靠‘心跳’信息,判断是否宕机。宕机后会补充备份。

3.数据出错

对数据包进行校验(使用md5和shal)。