分布式文件系统HDFS
Posted 走出一条属于自己的路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式文件系统HDFS相关的知识,希望对你有一定的参考价值。
一、分布式文件系统
1、HDFS实现目标
兼容廉价的硬件设备、实现流数据读写、支持大数据集、支持简单的文件模型、强大的跨平台兼容性
2、局限性
不适合低延迟数据访问(实时性不高)、无法高效储存大量小文件、不支持多用户写入及修改文件
3、分布式文件系统的结构
文件系统一般会把磁盘空间划分为每512字节一组,称为“磁盘块”,它是文件系统读写操作的最小单位,文件系统的块通常是磁盘块的整数倍,即每次读写的数据量必须是磁盘块大小的整数倍。
块是数据读写的基本单元。
4、名称节点与数据节点
名称节点负责文件和目录的创建、删除和重命名等,同时管理着数据节点和文件块的映射关系,因此客户端只有访问名称节点才能找到请求的文件块所在的位置,进而到相应位置读取所需文件块。数据节点负责数据的存储和读取,在存储时,由名称节点分配存储位置,然后由客户端把数据直接写入相应数据节点;在读取时,客户端从名称节点获得数据节点和文件块的映射关系,然后就可以到相应位置访问文件块。数据节点也要根据名称节点的命令创建、删除数据块和冗余复制。
二、HDFS的相关概念
1、块
块是最核心的概念。
当客户端需要访问一个文件时,首先从名称节点获得组成这个文件的数据块的位置列表,然后根据位置列表获取实际存储各个数据块的数据节点的位置,最后数据节点根据数据块信息在本地Linux文件系统中找到对应的文件,并把数据返回给客户端。
2、HDFS采用块技术的优点
支持大规模文件存储、简化系统设计、适合数据备份
3、名称节点
名称节点负责管理分布式文件系统的明明空间,保存了两个核心的数据结构,FsImage和EditLog。FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据,操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作。
三、HDFS体系结构
1、HDFS命名空间管理
HDFS的命名空间包含目录、文件和块。
2、通信协议
所有的HDFS通信协议都是构建在TCP/IP协议基础之上的。客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互。
3、HDFS体系结构的局限性
(1)命名空间的限制。名称节点是保存在内存中的,因此名称节点能够容纳对象的个数会受到内存空间大小的限制。
(2)性能的瓶颈。整个分布式文件系统的吞吐量受限于单个名称节点的吞吐量。
(3)隔离问题。由于集群中只有一个名称节点,只有一个命名空间,因此无法对不同应用程序进行隔离。
(4)集群的可用性。一旦这个唯一的名称节点发生故障,会导致整个集群变得不可用。
四、HDFS的存储原理
1、数据的冗余存储
(1)加快数据传输速度。当多个客户端需要访问同一个文件时,可以让各个客户端分别从不同的数据块副本中读取数据,这就大大加快了数据传输速度。
(2)容易检查数据错误。HDFS的数据节点之间通过网络传输数据,采用多个副本可以很容易判断数据传输是否出错。
(3)保证数据的可靠性。即使某个数据节点出现故障失效,也不会造成数据丢失。
2、数据存取策略
(1)数据存放
如果在集群内发起写操作请求,则把第一个副本位置放置在发起写操作请求的数据节点上,实现就近写入数据。如果是来自集群外部的写操作请求,则从集群内部挑选一台磁盘不太满、CPU不太忙的数据节点,作为第一个副本的存放地。第二个副本会被放置在与第一个副本不同的机架的数据节点上。第三个副本会被放置在与第一个副本相同的机架的其他节点上。如果还有更多的副本,则继续从集群中随机选择数据节点进行存放。
(2)数据读取
(3)数据复制
3、数据错误与恢复
以上是关于分布式文件系统HDFS的主要内容,如果未能解决你的问题,请参考以下文章