`
hary候琴
  • 浏览: 3347 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop分布式文件系统HDFS的工作原理详述

阅读更多

 

 

转载自http://www.ppvke.com/Blog/archives/21606

 

 

 

最活跃的大数据学习社区

Hadoop分布式文件系统HDFS的工作原理详述

1

Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布 式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。要理解HDFS的内 部工作原理,首先要理解什么是分布式文件系统。

1.分布式文件系统

多台计算机联网协同工作(有时也称为一个集群)就像单台系统一样解决某种问题,这样的系统我们称之为分布式系统。

分布式文件系统是分布式系统的一个子集,它们解决的问题就是数据存储。换句话说,它们是横跨在多台计算机上的存储系统。存储在分布式文件系统上的数据自动分布在不同的节点上。

分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理来自网络和其它地方的超大规模数据提供所需的扩展能力。

2.分离元数据和数据:NameNode和DataNode

存储到文件系统中的每个文件都有相关联的元数据。元数据包括了文件名、i节点(inode)数、数据块位置等,而数据则是文件的实际内容。

在传统的文件系统里,因为文件系统不会跨越多台机器,元数据和数据存储在同一台机器上。

为了构建一个分布式文件系统,让客户端在这种系统中使用简单,并且不需要知道其他客户端的活动,那么元数据需要在客户端以外维护。HDFS的设计理念是拿出一台或多台机器来保存元数据,并让剩下的机器来保存文件的内容。

NameNode和DataNode是HDFS的两个主要组件。其中,元数据存储在NameNode上,而数据存储在DataNode的集群上。 NameNode不仅要管理存储在HDFS上内容的元数据,而且要记录一些事情,比如哪些节点是集群的一部分,某个文件有几份副本等。它还要决定当集群的 节点宕机或者数据副本丢失的时候系统需要做什么。

存储在HDFS上的每份数据片有多份副本(replica)保存在不同的服务器上。在本质上,NameNode是HDFS的Master(主服务器),DataNode是Slave(从服务器)。

3.HDFS写过程

NameNode负责管理存储在HDFS上所有文件的元数据,它会确认客户端的请求,并记录下文件的名字和存储这个文件的DataNode集合。它把该信息存储在内存中的文件分配表里。

例如,客户端发送一个请求给NameNode,说它要将“zhou.log”文件写入到HDFS。那么,其执行流程如图1所示。具体为:

第一步:客户端发消息给NameNode,说要将“zhou.log”文件写入。(如图1中的①)

第二步:NameNode发消息给客户端,叫客户端写到DataNode A、B和D,并直接联系DataNode B。(如图1中的②)

第三步:客户端发消息给DataNode B,叫它保存一份“zhou.log”文件,并且发送一份副本给DataNode A和DataNode D。(如图1中的③)

第四步:DataNode B发消息给DataNode A,叫它保存一份“zhou.log”文件,并且发送一份副本给DataNode D。(如图1中的④)

第五步:DataNode A发消息给DataNode D,叫它保存一份“zhou.log”文件。(如图1中的⑤)

第六步:DataNode D发确认消息给DataNode A。(如图1中的⑤)

第七步:DataNode A发确认消息给DataNode B。(如图1中的④)

第八步:DataNode B发确认消息给客户端,表示写入完成。(如图1中的⑥)

HDFS

图1 HDFS写过程示意图

在分布式文件系统的设计中,挑战之一是如何确保数据的一致性。对于HDFS来说,直到所有要保存数据的DataNodes确认它们都有文件的副本 时,数据才被认为写入完成。因此,数据一致性是在写的阶段完成的。一个客户端无论选择从哪个DataNode读取,都将得到相同的数据。

4.HDFS读过程

为了理解读的过程,可以认为一个文件是由存储在DataNode上的数据块组成的。客户端查看之前写入的内容的执行流程如图2所示,具体步骤为:

第一步:客户端询问NameNode它应该从哪里读取文件。(如图2中的①)

第二步:NameNode发送数据块的信息给客户端。(数据块信息包含了保存着文件副本的DataNode的IP地址,以及DataNode在本地硬盘查找数据块所需要的数据块ID。) (如图2中的②)

第三步:客户端检查数据块信息,联系相关的DataNode,请求数据块。(如图2中的③)

第四步:DataNode返回文件内容给客户端,然后关闭连接,完成读操作。(如图2中的④)

HDFS

图2 HDFS读过程示意图

客户端并行从不同的DataNode中获取一个文件的数据块,然后联结这些数据块,拼成完整的文件。

5.通过副本快速恢复硬件故障

当一切运行正常时,DataNode会周期性发送心跳信息给NameNode(默认是每3秒钟一次)。如果NameNode在预定的时间内没有收到 心跳信息(默认是10分钟),它会认为DataNode出问题了,把它从集群中移除,并且启动一个进程去恢复数据。DataNode可能因为多种原因脱离 集群,如硬件故障、主板故障、电源老化和网络故障等。

对于HDFS来说,丢失一个DataNode意味着丢失了存储在它的硬盘上的数据块的副本。假如在任意时间总有超过一个副本存在(默认3个),故障 将不会导致数据丢失。当一个硬盘故障时,HDFS会检测到存储在该硬盘的数据块的副本数量低于要求,然后主动创建需要的副本,以达到满副本数状态。

6.跨多个DataNode切分文件

在HDFS里,文件被切分成数据块,通常每个数据块64MB~128MB,然后每个数据块被写入文件系统。同一个文件的不同数据块不一定保存在相同的DataNode上。这样做的好处是,当对这些文件执行运算时,能够通过并行方式读取和处理文件的不同部分。

当客户端准备写文件到HDFS并询问NameNode应该把文件写到哪里时,NameNode会告诉客户端,那些可以写入数据块的 DataNode。写完一批数据块后,客户端会回到NameNode获取新的DataNode列表,把下一批数据块写到新列表中的DataNode上。

作者:周兆熊

分享到:
评论

相关推荐

    基于Hadoop与FFmpeg的多媒体分布式处理系统的设计.pdf

    在探讨基于Hadoop与FFmpeg的多媒体分布式处理系统设计的过程中,我们可以从几个关键方面来深入分析系统的设计与实施,这些方面包括Hadoop的分布式文件系统(HDFS)、MapReduce编程模型、FFmpeg在多媒体处理上的应用...

    Hadoop之hdfs架构详解共2页.pdf.zip

    【标题】"Hadoop之hdfs架构详解共2页.pdf.zip" 提供的主题是关于Hadoop的分布式文件系统HDFS(Hadoop Distributed File System)的深入解析,这是一份两页的PDF文档,可能涵盖了HDFS的核心概念、设计原则、工作流程...

    windows平台使用hadoop hdfs文件进行中文分词的示例代码

    在Windows平台上,利用Hadoop HDFS(分布式文件系统)处理大量数据已经成为常见的操作。本示例将详述如何使用Eclipse集成开发环境(IDE)的Hadoop插件,执行一个基于HDFS的中文分词任务,对《唐诗三百首》进行分析,...

    Hadoop入门手册

    3. **HDFS**:详细讲解Hadoop的分布式文件系统,包括HDFS的工作原理、数据块的概念、副本策略、容错机制以及如何进行文件读写操作。 4. **MapReduce**:MapReduce是Hadoop的主要计算模型,它将大型任务分解为多个小...

    阿里云 专有云企业版 V3.8.2 文件存储HDFS 技术白皮书 20200417.pdf

    【阿里云专有云企业版 V3.8.2 文件存储HDFS 技术白皮书】详述了阿里云为企业级用户提供的高效、稳定、安全的分布式文件系统——HDFS(Hadoop Distributed File System)服务。文件存储HDFS是基于开源HDFS经过优化和...

    hbase分析报告白皮书

    《HBase分析报告白皮书》详述了HBase这一分布式开源数据库的特性与应用,其基于Hadoop分布式文件系统,旨在处理大规模数据。本文将深入解析HBase的关键概念、设计目标以及与Hadoop的关系。 首先,HBase是模仿Google...

    hadoop_完全分布式模式安装和配置

    本教程将详述如何在虚拟机环境中搭建一个完全分布式模式的Hadoop集群。这个过程包括了多个步骤,从基础设备准备到Hadoop守护进程的启动和监控,确保所有组件能够协同工作。 一、基础设备 首先,我们需要一个具有...

    演讲: Hadoop与数据分析

    通常,这样的演讲会讲解Hadoop的核心组件,如HDFS(Hadoop分布式文件系统)和MapReduce,这两个组件是Hadoop处理大数据的基础。 【标签】"源码"和"工具"提示我们,演讲可能涉及Hadoop的源代码层面,可能是讲解其...

    行业分类-设备装置-一种基于Hadoop平台的分布式重复数据删除系统和方法.zip

    2. **分布式系统**:解释分布式系统的工作原理,如何通过网络连接多台计算机协同处理任务,以及其带来的高可用性和可扩展性。 3. **重复数据删除**:阐述重复数据删除的必要性,如节省存储空间,减少备份时间,提高...

    [Hadoop实战]中文版 韩冀中译

    Hadoop的核心组件包括HDFS(Hadoop分布式文件系统)、MapReduce计算模型和YARN(Yet Another Resource Negotiator,另一种资源协调者)。 1. HDFS(Hadoop分布式文件系统)是Hadoop用来存储大规模数据的基础结构。...

    Hadoop权威指南,hadoop权威指南pdf,Hadoop

    HDFS是一种高容错性的分布式文件系统,能够高效地在廉价硬件上存储和处理大规模数据。MapReduce则是一个编程模型,用于大规模数据集的并行计算。 2. **HDFS详解**:HDFS的设计原则是可靠性和可用性,通过副本机制...

    HADOOP安装文档

    Hadoop的核心组件之一是Hadoop分布式文件系统(HDFS),它是一个高度容错性的系统,适合部署在廉价的硬件上。HDFS以数据块的形式存储数据,并且支持数据的多副本,以确保高可用性和数据安全性。文档提到的"存储数据...

    hadoop中文实战

    HDFS是Hadoop的数据存储系统,它通过分布式的方式存储海量数据,提供高容错性和高可用性;MapReduce则是Hadoop的并行计算模型,将大任务分解为多个小任务,在集群中并行执行,极大地提高了处理效率。 在HDFS部分,...

    基于Hadoop的列车管理系统设计.docx

    HDFS是一个分布式文件系统,能以高容错性存储大量数据;MapReduce则是并行处理大数据的计算框架,将复杂任务拆分成可并行执行的部分。此外,还涉及Hadoop在大数据处理中的应用,如数据清洗、数据集成和数据分析,...

    hadoop安装与移交.zip

    这个文件可能是详细的步骤指南,涵盖如何配置和启动Hadoop分布式文件系统(HDFS)以及YARN(Yet Another Resource Negotiator),这两个是Hadoop的核心组件。此外,还可能涉及如何设置Hadoop的高可用性(HA)和故障...

    大数据技术_85实用知识库分享20240618002626

    ##### 第16篇 Hadoop分布式文件系统2-HDFS架构原理 - **架构设计**:详细描述了HDFS的架构设计,包括其如何存储和管理大量数据。 - **故障恢复机制**:解释了HDFS如何处理故障恢复等问题。 ##### 第17篇 Hadoop...

    Hadoop技术培训大纲.pdf

    《Hadoop技术培训大纲》详述了大数据处理领域中的核心框架——Hadoop,以及与其相关的生态系统。本大纲分为多个模块,全面介绍了Hadoop的基础概念、安装配置、主要组件、HDFS工作原理、MapReduce编程模型,以及与...

    云计算第三版精品课程配套PPT课件含习题(30页)第5章 Hadoop 2.0 主流开源云架构(四).pptx

    - **分布式文件系统 HDFS**:详述HDFS的原理、工作流程,包括数据块、副本策略、故障恢复和扩展性。 - **分布式操作系统 YARN**:作为Hadoop 2.0的核心,YARN将JobTracker的功能拆分为ResourceManager和...

    hadoop权威指南第四版.Hadoop.The.Definitive.Guide.4th

    HDFS是一个分布式文件系统,它允许数据在多台服务器上分布存储,以实现高可用性和容错性;MapReduce则是一种编程模型,用于大规模数据集的并行计算,它将大型任务拆分成小部分,然后在集群中的多个节点上并行执行。 ...

Global site tag (gtag.js) - Google Analytics