传统文件系统
HDFS文件系统
分布式文件系统,是建立结点(物理机器)的结构之上的,所以首先本部分将首先看看计算机物理集群结构的基本特点。随后,在此基础上,设计逻辑层面的结构,以最大化利用物理集群结构的特点。
所谓逻辑结构的设计,即在组件层面、进程层面的设计,到达此层面,底层的物理结构便不需要考虑了。即,可以理想认为所有的逻辑元素都在一个拥有无限资源的超级计算机上。
HDFS设计的目标
- 兼容廉价的硬件设备
- 流数据读写
- 大数据集
- 简单的文件模型
- 强大的跨平台兼容性
后面的设计,分别对应解决上面目标中的一个或者几个,所以有必要经常回顾下此处的目标。
计算机集群的基本结构
- 分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计
算机集群 - 与之前使用多个处理器和专用高级硬件的并行化处理装置不同的是,目前的分布式文
件系统所采用的计算机集群,都是由普通硬件构成的,这就大大降低了硬件上的开销(普通硬件,意味着易发生错误,降低可靠性,后面需要通过某种机制(如副本机制)将这种可靠性弥补回来)
建构在上述物理结构之上的逻辑结构
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点” (Master Node)或者也被称为“名称结点” (NameNode),另一类叫“从节点”(Slave Node)或者也被称为“数据节点” (DataNode)
HDFS的基本架构
这里以hadoop1为例。
HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)(如图3-4所示)。
- 名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。
- 集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据
块的创建、删除和复制等操作。 - 每个数据节点的数据实际上是保存在本地Linux文件系统中的
【对于主从结构的理解】主从结构,站在图的角度来看,其形态更符合星形的结构。而这种结构中,结点是不对等的,入度、出度不同,意味着彼此影响的也是不同的。
HDFS命名空间管理
- HDFS的命名空间包含目录、 文件和块
- 在HDFS1.0体系结构中, 在整个HDFS集群中只有一个命名空间, 并且只有唯一一个
名称节点, 该节点负责对这个命名空间进行管理 - HDFS使用的是传统的分级文件体系, 因此, 用户可以像使用普通文件系统一样, 创
建、 删除目录和文件, 在目录间转移文件, 重命名文件等
通信协议
- HDFS是一个部署在集群上的分布式文件系统, 因此, 很多数据需要通过网络进行
传输 - 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的
- 客户端通过一个可配置的端口向名称节点主动发起TCP连接, 并使用客户端协议与
名称节点进行交互 - 名称节点和数据节点之间则使用数据节点协议进行交互
- 客户端与数据节点的交互是通过RPC(Remote Procedure Call) 来实现的。 在设
计上, 名称节点不会主动发起RPC, 而是响应来自客户端和数据节点的RPC请求
客户端
- 客户端是用户操作HDFS最常用的方式, HDFS在部署时都提供了客户端
- HDFS客户端是一个库, 暴露了HDFS文件系统接口, 这些接