`
ld_hust
  • 浏览: 170285 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Hadoop分布式文件系统:架构和设计要点Ⅰ(转)

阅读更多

一、前提和设计目标
1、硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是HDFS的核心架构目标。
2、跑在HDFS上的应用与一般的应用不同,它们主要是以流式读为主,做批量处理;比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。
3HDFS以支持大数据集合为目标,一个存储在上面的典型文件大小一般都在千兆至T字节,一个单一HDFS实例应该能支撑数以千万计的文件。
4HDFS应用对文件要求的是write-one-read-many访问模型。一个文件经过创建、写,关闭之后就不需要改变。这一假设简化了数据一致性问题,使高吞吐量的数据访问成为可能。典型的如MapReduce框架,或者一个web crawler应用都很适合这个模型。
5、移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好,HDFS提供给应用这样的接口。
6、在异构的软硬件平台间的可移植性。

二、NamenodeDatanode
    HDFS采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。DatanodeNamenode的指挥下进行block的创建、删除和复制。NamenodeDatanode都是设计成可以跑在普通的廉价的运行linux的机器上。HDFS采用java语言开发,因此可以部署在很大范围的机器上。一个典型的部署场景是一台机器跑一个单独的Namenode节点,集群中的其他机器各跑一个Datanode实例。这个架构并不排除一台机器上跑多个Datanode,不过这比较少见。

单一节点的Namenode大大简化了系统的架构。Namenode负责保管和管理所有的HDFS元数据,因而用户数据就不需要通过Namenode(也就是说文件数据的读写是直接在Datanode上)。

三、文件系统的namespace
   HDFS支持传统的层次型文件组织,与大多数其他文件系统类似,用户可以创建目录,并在其间创建、删除、移动和重命名文件。HDFS不支持user quotas和访问权限,也不支持链接(link),不过当前的架构并不排除实现这些特性。Namenode维护文件系统的namespace,任何对文件系统namespace和文件属性的修改都将被Namenode记录下来。应用可以设置HDFS保存的文件的副本数目,文件副本的数目称为文件的 replication因子,这个信息也是由Namenode保存。

四、数据复制
    HDFS被设计成在一个大集群中可以跨机器地可靠地存储海量的文件。它将每个文件存储成block序列,除了最后一个block,所有的block都是同样的大小。文件的所有block为了容错都会被复制。每个文件的block大小和replication因子都是可配置的。Replication因子可以在文件创建的时候配置,以后也可以改变。HDFS中的文件是write-one,并且严格要求在任何时候只有一个writerNamenode全权管理block的复制,它周期性地从集群中的每个Datanode接收心跳包和一个Blockreport。心跳包的接收表示该Datanode节点正常工作,而Blockreport包括了该Datanode上所有的block组成的列表。


1、副本的存放,副本的存放是HDFS可靠性和性能的关键。HDFS采用一种称为rack-aware的策略来改进数据的可靠性、有效性和网络带宽的利用。这个策略实现的短期目标是验证在生产环境下的表现,观察它的行为,构建测试和研究的基础,以便实现更先进的策略。庞大的HDFS实例一般运行在多个机架的计算机形成的集群上,不同机架间的两台机器的通讯需要通过交换机,显然通常情况下,同一个机架内的两个节点间的带宽会比不同机架间的两台机器的带宽大。
    通过一个称为Rack Awareness的过程,Namenode决定了每个Datanode所属的rack id。一个简单但没有优化的策略就是将副本存放在单独的机架上。这样可以防止整个机架(非副本存放)失效的情况,并且允许读数据的时候可以从多个机架读取。这个简单策略设置可以将副本分布在集群中,有利于组件失败情况下的负载均衡。但是,这个简单策略加大了写的代价,因为一个写操作需要传输block到多个机架。
    在大多数情况下,replication因子是3HDFS的存放策略是将一个副本存放在本地机架上的节点,一个副本放在同一机架上的另一个节点,最后一个副本放在不同机架上的一个节点。机架的错误远远比节点的错误少,这个策略不会影响到数据的可靠性和有效性。三分之一的副本在一个节点上,三分之二在一个机架上,其他保存在剩下的机架中,这一策略改进了写的性能。

2、副本的选择,为了降低整体的带宽消耗和读延时,HDFS会尽量让reader读最近的副本。如果在reader的同一个机架上有一个副本,那么就读该副本。如果一个HDFS集群跨越多个数据中心,那么reader也将首先尝试读本地数据中心的副本。

3SafeMode
    Namenode启动后会进入一个称为SafeMode的特殊状态,处在这个状态的Namenode是不会进行数据块的复制的。Namenode从所有的 Datanode接收心跳包和BlockreportBlockreport包括了某个Datanode所有的数据块列表。每个block都有指定的最小数目的副本。当Namenode检测确认某个Datanode的数据块副本的最小数目,那么该Datanode就会被认为是安全的;如果一定百分比(这个参数可配置)的数据块检测确认是安全的,那么Namenode将退出SafeMode状态,接下来它会确定还有哪些数据块的副本没有达到指定数目,并将这些block复制到其他Datanode

分享到:
评论

相关推荐

    Hadoop分布式文件系统:架构和设计要点

    《Hadoop分布式文件系统:架构和设计要点》 Hadoop分布式文件系统(HDFS)是为处理大规模数据而设计的一种可扩展、可靠的分布式文件系统。本文将深入探讨其架构和设计的核心要点。 首先,HDFS的设计目标是针对硬件...

    Hadoop分布式文件系统:架构和设计要点.pdf

    ### Hadoop分布式文件系统:架构和设计要点 #### 一、前提和设计目标 Hadoop分布式文件系统(HDFS)的设计初衷是为了解决大规模数据处理的问题,特别是针对那些需要处理TB甚至PB级别数据的应用程序。为了实现这一...

    Hadoop分布式文件系统-架构和设计要点

    "Hadoop分布式文件系统架构和设计要点" Hadoop分布式文件系统(HDFS)是一种专门为大数据存储和处理而设计的分布式文件系统。它的架构和设计要点是基于以下几点考虑: 1. 硬件错误是常态,而非异常情况。HDFS 可能...

    Hadoop分布式文件系统-架构和设计要点(翻译).pdf

    "Hadoop分布式文件系统-架构和设计要点" Hadoop分布式文件系统(HDFS)是Hadoop生态系统中的核心组件之一,负责存储和管理大规模数据。HDFS的架构和设计要点主要体现在以下几个方面: 1. 硬件错误是常态,而非异常...

    Hadoop分布式文件系统-架构和设计要点[定义].pdf

    Hadoop分布式文件系统架构和设计要点 Hadoop分布式文件系统(HDFS)是一种高度可靠、可扩展、可维护的分布式文件系统,专门为大规模数据处理和存储而设计。下面是HDFS的架构和设计要点: 一、前提和设计目标 1. ...

    Hadoop分布式文件系统架构和设计要点.pdf

    《Hadoop分布式文件系统架构和设计要点》 Hadoop分布式文件系统(HDFS)是大数据处理领域中的核心组件,其设计目标主要针对大规模数据集的存储和处理。首先,HDFS设计的前提是硬件错误频繁发生,因此系统必须具备...

    流式实时分布式计算系统的设计要点.pdf

    流式实时分布式计算系统的设计要点主要涉及如何处理和分析在极短时间内产生的海量数据,以支持在线或近线系统对实时数据的处理需求。流式计算已经成为互联网公司处理大数据的关键技术,它支持多样的业务场景,包括...

    [Hadoop权威指南(第2版)].(Hadoop:The.Definitive.Guide).文字版.pdf

    - **分布式文件系统**:介绍了Hadoop分布式文件系统(HDFS)的关键特性,如数据冗余、故障恢复机制等。 - **MapReduce框架**:深入探讨了MapReduce的架构设计原理,包括任务调度、资源管理等方面。 - **性能优化**:...

    计算机-后端-Hadoop架构在政府采购系统中的研究与应用.pdf

    数据库使用Hadoop分布式数据库,能够存储和处理大量数据。 4. 系统测试和验证 本文通过测试,验证了Hadoop平台在政府采购系统中的可行性。测试结果表明,基于Hadoop平台的政府采购系统能够满足政府数据处理的需求...

    Hadoop海量级分布式存储

    为了更好地理解Hadoop,本文将重点介绍其核心概念、架构设计和应用场景,并对HDFS和MapReduce的工作机制进行详细的阐释,同时提供一个部署Hadoop分布式存储集群的案例,帮助读者全面掌握Hadoop的知识要点和实施技巧...

    Hadoop架构实验ppt

    ### Hadoop架构实验知识点概述 #### 一、Hadoop安装部署模式详解 Hadoop支持三种主要的部署模式:单机模式、伪分布式模式以及分布式模式。 1. **单机模式**: - **定义**:这是Hadoop默认的运行模式,无需额外...

    云计算环境下分布式文件系统的应用性能分析

    本文标题《云计算环境下分布式文件系统的应用性能分析》以及描述中提到的内容,主要聚焦于在云计算环境中,分布式文件系统如Lustre和Hadoop分布式文件系统(HDFS)的性能比较。该研究提出了一种基于Hadoop的Lustre...

    基于Hadoop平台的分布式搜索引擎.zip

    "SearchEngine-master"项目为我们提供了一个实践平台,通过学习和研究,我们可以更好地理解和掌握在Hadoop上构建搜索引擎的技术要点。在面对不断增长的数据量和日益复杂的查询需求时,这样的技术方案无疑具有重要的...

Global site tag (gtag.js) - Google Analytics