Hadoop之所以成为能够让用户可以轻松架构和使用的分布式计算平台,用户可以在其上管理、开发和并行处理大数据的应用,其根本就是由于HDFS起的基础作用。
HDFS主要由以下优点:
1)、支持操大文件,一般来说,一个Hadoop文件系统可以轻松的存储TB、PB级别的数据。
2)、检测和快速应对硬件故障,在大量通用的廉价硬件构建的集群上,特别是硬件故障很常见,一班的HDFS系统由成百上千台存储着数据文件的服务器组成,越多的服务器也就意味着高故障率,因此故障检测和制动恢复就是HDFS的一个设计目标。
3)、流式数据访问方式,HDFS要处理的数据规模都比较大,应用程序一次需要访问大量数据,适用于批量处理而非用户交互式处理数据,HDFS以流式方式访问数据,注重的是数据的高吞吐量而非访问速度。
4)、简化的一致性模型,大部分的HDFS的数据操纵文件都是一次写入,多次读取,一个文件一旦经过创建、写入和关闭后,一半就不需要修改了,这样简单的一致性模型,有利于提供高吞吐量的数据访问模型。
对于上述设计目标,我们会发现,这些在一些场景中是优势,但是在默写情况下,会成为其局限性,主要有以下几点:
1)、不适合低延迟的数据访问,HDFS是为处理大规模的数据而生的,主要是为达到高的数据吞吐量而设计的,这就会以高延迟作为代价,故不适合低延迟的数据访问。
如果想在Hadoop上对数据做低延迟或实时的数据访问,在其上HBase是一个很好的解决方案。
2)、不能搞笑的存储大量小文件,在HDFS中,有NameNode(Master)节点来管理文件系统的元数据,已相应客户端请求返回文件位置等,因此文件数量大小的限制就由NameNode(具体的来说是由其内存大小)来决定;另外,在一次数据访问中,更多的小文件也意味着更多的磁盘寻址操作,以及更多的文件的打开与关闭的开销,这会大大降低数据的吞吐量,这都有违HDFS的设计目标,也会给NameNode带来更大的工作压力。
3)、不支持多用户的数据写入和随机访问与修改文件,在一个HDFS写操作中只能有一个用户对一个文件写操作,并且自能通过追加的方式将数据写到文件末尾,在读一个文件的时候也只能从文件头部顺序读取文件数据。
目前HDFS还不支持多个用户对同一个文件的并发写操作、随机访问和修改数据。
下面我们来看看HDFS的体系结构:
HDFS采用了主从(Master/Slaves)体系结构,互相配合,形成整个分布式文件系统。将服务器集群中的服务器节点分成两类节点:NameNode节点和DataNode节点,其中NameNode是Master节点而DataNode是Slaves节点。
我们再看一下HDFS中的相关的概念:
Block:
我们知道,操作系统中都有文件块(Block)的概念,稳健以块的形式存储在磁盘中,文件块是系统读写操作的最小的单位。
HDFS中的Block是一种抽象的概念,它比操作系统中的文件块儿要打的多,和Linux单机系统上的文件相同,HDFS中的文件也是被分成块而来存储的,其默认大小为64M,一般情况下可以将之调大。
HDFS是针对大文件设计的分布式系统,使用HDFS Block有以下好处:
1)、可以保存比存储节点的单一磁盘更大的文件,在HDFS上,将大数据文件分成块Blocks,可以保存在不同节点的磁盘上。
2)、简化存储子系统,简单化是所有系统的追求,特别是在各章种类繁多的分布式系统,将管理“块(Block)”和“文件”区分开,简化了存储管理,也消除了分布式文件系统管理的复杂性。
3)、提供更好的容错,有利于数据复制。
NameNode:
NameNode节点上HDFS主从结构中主节点,维护者整个HDFS文件系统的文件目录树,元数据信息和文件的数据块索引,即每个文件对应的数据块列表。这些信息以文件命名空间镜像FSImage和编辑日志Edit Log。
FSImage中保存着某一时刻的HDFS文件目录树、元数据和数据块索引等信息,而后续的对这信息系的修改则保存在编辑日志中;然后在另外一个时间节点上有Secondary NameNode节点将之合并并替换掉老的FSImage。
NameNode节点还提供对客户端的请求响应。
该节点有单点故障问题,该节点如出故障,则整个集群都会出问题。
Secondary NameNode:
第二名字节点主要用于定期合并NameNode节点上的命名空间镜像文件和编辑日志,和名字节点一样,每个集群都有一个Secondary NameNode的独立节点。
Secondary NameNode和NameNode的区别在于他不接受或记录HDFS的任何实时变化,只是根据集群配置的时间间隔不停的获取HDFS的某一个时间节点的FSImage和编辑日志,合并得到一个新的命名空间镜像FSImage,然后该镜像会上传到NameNode,替换原有的镜像文件,并清空编辑日志。
NameNode节点是HDFS集群中的单一故障点,通过Secondary NameNode的检查点,可以减少停机时间并减低NameNode节点中元数据丢失的风险。但是Secondary NameNode不支持NameNode节点的故障自动回复,须手人工干预。
DataNode:
DataNode是HDFS集群中的数据节点,所用数据块儿都存储在DataNode节点上,客户端从DataNode节点存储或读取数据。
在HDFS中在DataNode上是以Linux系统上普通文件进行保存。在客户端操作文件块Block时,先由NameNode节点告知客户端诗句块所在的节点地文职,然后客户端直接与DataNode节点通信,处理与数据块对应的Linux上的本地文件。DataNode节点还会和其他DataNode进行通信,复制数据块,保证数据的冗余。
DataNode作为从节点,会不断地通过“心跳”向NameNode节点报告其上的数据信息。
- 大小: 87.1 KB
分享到:
相关推荐
**HDFS(Hadoop Distributed File System)** 是一种分布式文件系统,具有高容错性的特点,并且旨在部署于成本较低的硬件之上。HDFS提供了高吞吐量访问应用程序数据的能力,非常适合处理超大数据集的应用。它的应用...
### Hadoop分布式文件系统的模型分析 #### 一、引言 Hadoop分布式文件系统(Hadoop Distributed File System,...通过对HDFS与传统分布式文件系统的对比分析,为研究者提供了深入理解Hadoop分布式文件系统的重要参考。
在现代计算机网络体系结构中,分布式文件系统是一种将数据分散存储在不同物理位置的文件系统,其核心目标是提供高可靠性、高扩展性和高效的数据访问性能。HDFS(Hadoop Distributed File System,Hadoop分布式文件...
### Hadoop分布式文件系统(HDFS):关键技术与实践 #### 摘要 Hadoop分布式文件系统(HDFS)是Hadoop项目的核心组件之一,旨在为大规模数据集提供高效可靠的存储解决方案。HDFS的设计原则强调了数据的分布式存储与...
Hadoop分布式文件系统(HDFS)是Hadoop核心组件之一,它的设计目标是为了在普通的硬件上提供高吞吐量的数据访问,适用于大规模数据集的存储和处理。HDFS作为一个高度容错的系统,旨在提供高可靠性且易于扩展的分布式...
HDFS体系结构: HDFS采用Master/Slave的架构来存储数据,主要由四个部分组成: 1. HDFS Client:文件切分、文件上传、与NameNode交互、与DataNode交互、命令管理HDFS。 2. NameNode:master,管理HDFS的名称空间、...
HDFS的体系结构: HDFS的体系结构主要由四个部分组成:HDFS Client、NameNode、DataNode和SecondaryNameNode。HDFS Client负责文件切分和上传,NameNode负责管理HDFS的名称空间和数据块映射,DataNode负责存储实际...
HDFS 是 Hadoop 的一个分布式文件系统,是 Hadoop 应用程序使用的主要分布式存储。HDFS 被设计成适合运行在通用硬件上的分布式文件系统。 在 HDFS 体系结构中有两类结点:一类是 NameNode,又叫“名称结点”;另一类...
"HDFS体系结构详解" HDFS(Hadoop Distributed File System)是一种分布式文件系统,旨在存储和管理大规模数据。...HDFS体系结构是Hadoop的核心组件,提供了高效、可靠、可扩展的分布式文件系统解决方案。
HDFS支持传统的文件组织体系结构。用户或者程序可以创建目录,并在目录中存储文件。名字空间的结构和大多现有文件系统类似。你可以创建、删除文件,把文件从一个目录移动到另一个目录,或者重命名文件。 5. 设计...
### Hadoop分布式文件系统(HDFS)架构及源码分析 #### 一、HDFS的架构和设计分析 ##### 1.1 引言 Hadoop分布式文件系统(HDFS)是一种专门为运行在通用硬件上的分布式文件系统而设计的解决方案。与其他分布式文件...
通过本实验,我们学习了HDFS的基本概念和常用的操作命令,熟悉了HDFS在Hadoop体系结构中的角色,并且掌握了HDFS的Java API。这些知识将帮助我们更好地理解和使用HDFS在数据存储和处理中的应用。
分布式文件系统HDFS(Hadoop Distributed File System)是Hadoop大数据存储解决方案的核心组件之一,它是一个高度容错性的系统,设计用于在廉价硬件上运行。HDFS提供高吞吐量的数据访问,非常适合大规模数据集的应用...
通过本次上机练习,学生可以更好地理解HDFS在Hadoop体系结构中的角色,并掌握HDFS的基本操作,从而为后续的学习和应用打下基础。 在本次上机练习中,学生需要完成以下任务: 1. 理解HDFS在Hadoop体系结构中的角色 ...
首先介绍分布式文件系统的基本概念、结构和设计需求,然后介绍Hadoop分布式文件系统HDFS,详细阐述它的重要概念、体系结构、存储原理和读写过程,最后,介绍了一些HDFS编程实践方面的知识
Hadoop分布式文件系统(HDFS)是一种分布式文件系统,旨在部署在普通硬件设备上。由于其分布式的设计,可以由成百上千台服务器组成,且每个服务器存储文件系统的一部分数据,因此适用于大规模数据处理。HDFS强调的是...