`

从HDFS看分布式文件系统的设计需求

    博客分类:
  • java
阅读更多

    分布式文件系统的设计目标大概是这么几个:透明性、并发控制、可伸缩性、容错以及安全需求等。我想试试从这几个角度去观察HDFS的设计和实现,可以更清楚地看出HDFS的应用场景和设计理念。
    首先是透明性,如果按照开放分布式处理的标准确定就有8种透明性:访问的透明性、位置的透明性、并发透明性、复制透明性、故障透明性、移动透明性、性能透明性和伸缩透明性。对于分布式文件系统,最重要的是希望能达到5个透明性要求:
1)访问的透明性:用户能通过相同的操作来访问本地文件和远程文件资源。HDFS可以做到这一点,如果HDFS设置成本地文件系统,而非分布式,那么读写 分布式HDFS的程序可以不用修改地读写本地文件,要做修改的是配置文件。可见,HDFS提供的访问的透明性是不完全的,毕竟它构建于java之上,不能 像NFS或者AFS那样去修改unix内核,同时将本地文件和远程文件以一致的方式处理。
2)位置的透明性:使用单一的文件命名空间,在不改变路径名的前提下,文件或者文件集合可以被重定位。HDFS集群只有一个Namenode来负责文件系 统命名空间的管理,文件的block可以重新分布复制,block可以增加或者减少副本,副本可以跨机架存储,而这一切对客户端都是透明的。
3)移动的透明性,这一点与位置的透明性类似,HDFS中的文件经常由于节点的失效、增加或者replication因子的改变或者重新均衡等进行着复制或者移动,而客户端和客户端程序并不需要改变什么,Namenode的edits日志文件记录着这些变更。
4)性能的透明性和伸缩的透明性:HDFS的目标就是构建在大规模廉价机器上的分布式文件系统集群,可伸缩性毋庸置疑,至于性能可以参考它首页上的一些benchmark。

    其次是并发控制,客户端对于文件的读写不应该影响其他客户端对同一个文件的读写。要想实现近似原生文件系统的单个文件拷贝语义,分布式文件系统需要做出复 杂的交互,例如采用时间戳,或者类似回调承诺(类似服务器到客户端的RPC回调,在文件更新的时候;回调有两种状态:有效或者取消。客户端通过检查回调承 诺的状态,来判断服务器上的文件是否被更新过)。HDFS并没有这样做,它的机制非常简单,任何时间都只允许一个写的客户端,文件经创建并写入之后不再改 变,它的模型是 write-one-read-many , 一次写,多次读。这与它的应用场合是一致,HDFS的文件大小通常是兆至T级的,这些数据不会经常修改,最经常的是被顺序读并处理,随机读很少,因此 HDFS非常适合MapReduce框架或者web crawler应用。HDFS文件的大小也决定了它的客户端不能像某些分布式文件系统那样缓存常用到的几百个文件。

    第三,文件复制功能,一个文件可以表示为其内容在不同位置的多个拷贝。这样做带来了两个好处:访问同个文件时可以从多个服务器中获取从而改善服务的伸缩 性,另外就是提高了容错能力,某个副本损坏了,仍然可以从其他服务器节点获取该文件。HDFS文件的block为了容错都将被备份,根据配置的 replication因子来,默认是3。副本的存放策略也是很有讲究,一个放在本地机架的节点,一个放在同一机架的另一节点,另一个放在其他机架上。这 样可以最大限度地防止因故障导致的副本的丢失。不仅如此,HDFS读文件的时候也将优先选择从同一机架乃至同一数据中心的节点上读取block。

    第四,硬件和操作系统的异构性。由于构建在java平台上,HDFS的跨平台能力毋庸置疑,得益于java平台已经封装好的文件IO系统,HDFS可以在不同的操作系统和计算机上实现同样的客户端和服务端程序。

    第五,容错能力,在分布式文件系统中,尽量保证文件服务在客户端或者服务端出现问题的时候能正常使用是非常重要的。HDFS的容错能力大概可以分为两个方面:文件系统的容错性以及Hadoop本身的容错能力。文件系统的容错性通过这么几个手段:
1)在Namenode和Datanode之间维持心跳检测,当由于网络故障之类的原因,导致Datanode发出的心跳包没有被Namenode正常收 到的时候,Namenode就不会将任何新的IO操作派发给那个Datanode,该Datanode上的数据被认为是无效的,因此Namenode会检 测是否有文件block的副本数目小于设置值,如果小于就自动开始复制新的副本并分发到其他Datanode节点。
2)检测文件block的完整性,HDFS会记录每个新创建的文件的所有block的校验和。当以后检索这些文件的时候,从某个节点获取block,会首先确认校验和是否一致,如果不一致,会从其他Datanode节点上获取该block的副本。
3)集群的负载均衡,由于节点的失效或者增加,可能导致数据分布的不均匀,当某个Datanode节点的空闲空间大于一个临界值的时候,HDFS会自动从其他Datanode迁移数据过来。
4)Namenode上的fsimage和edits日志文件是HDFS的核心数据结构,如果这些文件损坏了,HDFS将失效。因而, Namenode可以配置成支持维护多 个 FsImage Editlog的拷贝。任何对 FsImage或者 Editlog的修改,都将同步到它们的副本上。 它总是选取最近的一致的 FsImage Editlog使用。 Namenode HDFS是单点存在,如果 Namenode所在的机器错误,手工的干预是必须的。
5)文件的删除,删除并不是马上从Namenode移出namespace,而是放在/ trash目录随时可恢复,直到超过设置时间才被正式移除。
    再说Hadoop本身的容错性,Hadoop支持升级和回滚,当升级Hadoop软件时出现bug或者不兼容现象,可以通过回滚恢复到老的Hadoop版本。
    最后一个就是安全性问题,HDFS的安全性是比较弱的,只有简单的与unix文件系统类似的文件许可控制,未来版本会实现类似NFS的kerberos验证系统。

    总结下:HDFS作为通用的分布式文件系统并不适合,它在并发控制、缓存一致性以及小文件读写的效率上是比较弱的。但是它有自己明确的设计目标,那就是支 持大的数据文件(兆至T级),并且这些文件以顺序读为主,以文件读的高吞吐量为目标,并且与MapReduce框架紧密结合。
 

17
2
分享到:
评论
4 楼 tobeno1 2009-09-09  
很清晰,厉害!
3 楼 dennis_zane 2008-08-18  
@geradle

blogjava上的killme2008即是我,两处都发
2 楼 geradle 2008-08-17  
拷贝,粘帖。
1 楼 fire01312 2008-08-17  
谢谢了 拜读过了

相关推荐

    基于HDFS的分布式文件系统.pdf

    IHDFS系统的设计基于HDFS的分布式架构,通过对HDFS的改进和优化,实现了智能化的分布式文件存储系统。该系统的核心组件包括大数据去重模块、大数据放置模块、大数据智能迁移模块和大数据编码模块等。其中,大数据...

    基于HDFS分布式文件系统的大数据存储优点与功能.pdf

    "基于HDFS分布式文件系统的大数据存储优点与功能" 大数据时代,伴随着信息时代的快速发展,数据量的增长速度也在不断增加。为了解决数据存储的问题,世界各国的科学家们不断探索解决方案,涌现出了一些分布式文件...

    基于Hadoop的微博分布式存储系统的设计及构建_论文.doc

    Hadoop 框架底层的 HDFS 分布式文件系统具有很高的容错性和很高的传输速率,并且易于扩充。基于 HDFS 之上的 Hbase 是基于列族的非传统性数据库,可以为用户提供更好的实时读写数据。通过对 Hbase 的设计来减少...

    HDFS分布式文件系统(1).pdf

    hdfs 分布式文件系统。HDFS是基于流数据模式访问和处理超大文件的需求而开发的,它可以运行于廉价的商用服务器上。总的来说,可以将 HDFS的主要特点概括为以下几点:(1 )处理超大文件 (2 )流式地访问数据 (3...

    第2讲_分布式文件系统HDFS.pdf

    它是一个分布式文件系统,能够处理大量数据的存储和处理需求。 HDFS架构 HDFS的架构主要包括NameNode和DataNode两个组件。NameNode是Master节点,负责管理命名空间、元数据和Block副本策略。DataNode是Slave节点,...

    分布式文件系统简要对比与分析.pdf

    本文将对比五种典型的分布式文件系统,包括HDFS、Ceph、MooseFS、GlusterFS和LustreFS,介绍其基本架构、数据分布和查询处理流程,然后对这些系统的优缺点进行分析,最后给出了在不同场景下如何对分布式文件系统进行...

    Chapter3-厦门大学-林子雨-大数据技术原理与应用-第三章-分布式文件系统HDFS(2016年1月26日版本)

    首先介绍分布式文件系统的基本概念、结构和设计需求,然后介绍Hadoop分布式文件系统HDFS,详细阐述它的重要概念、体系结构、存储原理和读写过程,最后,介绍了一些HDFS编程实践方面的知识

    Hadoop分布式文件系统:架构和设计.doc

    Hadoop分布式文件系统的设计目标是满足大规模数据处理的需求,解决大规模数据存储和处理的问题。Hadoop分布式文件系统的设计考虑了以下几点: * 大规模数据集:Hadoop分布式文件系统需要能够存储和管理大规模数据集...

    分布式系统设计 分布式控制系统的设计

    6. **分布式存储**:分布式文件系统(如HDFS)和分布式数据库(如Cassandra、HBase)是分布式系统中的重要组成部分,提供高效、可靠的数据存储和访问。 7. **通信协议**:如RPC(远程过程调用)和消息队列(MQ)等...

    厦门大学-林子雨-大数据技术原理与应用(第2版教材)-第3章-分布式文件系统HDFS

    内容提要:首先介绍分布式文件系统的基本概念、结构和设计需求,然后介绍Hadoop分布式文件系统HDFS,详细阐述它的重要概念、体系结构、存储原理和读写过程,最后,介绍了一些HDFS编程实践方面的知识。

    HDFS文件系统基本文件命令、编程读写HDFS

    HDFS(Hadoop Distributed File System)是一种分布式文件系统,用于存储和管理大规模数据。它是 Hadoop 云计算平台的核心组件之一,提供了高效、可靠、可扩展的数据存储和管理解决方案。 HDFS 的优点包括: 1. 高...

    一种优化分布式文件系统的文件合并策略.pdf

    分布式文件系统的发展历程中,从NFS到PVFS、Lustre、GFS以及HDFS,它们都在不断进化以满足更高的性能、可扩展性和可靠性需求。目前的研究趋势主要集中在系统性能分析和优化,这涉及到对文件系统的深入理解,以及通过...

    Chapter3-厦门大学-林子雨-大数据技术原理与应用-第3讲-分布式文件系统HDFS(中国大学MOOC2018年春季学期)1

    本节将对分布式文件系统HDFS进行详细的介绍,包括分布式文件系统的定义、HDFS相关概念、HDFS体系结构、HDFS存储原理、HDFS数据读写过程、HDFS编程实践等。 分布式文件系统是指将文件分布存储到多个计算机节点上,...

    分布式文件系统-HDFS1

    HDFS,全称Hadoop Distributed File System,是分布式文件系统,设计目标是高容错性和高可扩展性,使得数据能够在多台机器之间高效地分发和访问。 HDFS采用了Master-Slave架构,主要由NameNode、SecondaryNameNode...

    云原生的开源分布式文件系统及应用实践.pptx

    生态强相关的分布式文件系统,如HBase配合HDFS,针对特定应用设计,导致资源利用率低,因为每个应用都需要独立的集群。对象存储主要适用于自研应用,不适用于需要对象存储接口的传统数据库备份。而分布式块存储由于...

    深度-分布式文件系统设计要点.docx

    分布式文件系统设计来说,持久化是至关重要的特性。在传统的文件系统中,数据通常存储在单个物理设备上,而分布式文件系统通过在网络中的多台机器上分散数据,确保即使单个节点失效,数据也能被保护。为了实现持久化...

    分布式文件系统的写性能优化.pdf

    传统的分布式文件系统如GFS、HDFS等虽然具有大容量和可扩展性,但在读写性能上仍有提升空间。因此,上述的优化策略对于解决这一问题提供了有价值的参考。 在实际应用中,这些优化策略可以结合使用,例如,通过增大...

    面向BIM数据的分布式文件存储系统设计与实施.pdf

    【分布式文件存储系统设计与实施】面向BIM数据的存储挑战 随着BIM(Building Information Modeling,建筑信息模型)技术在国内的快速发展,BIM数据的快速增长对存储系统提出了新的要求,如高可用性、负载均衡和横向...

    分布式文件系统概要设计-10.docx

    在选择和设计分布式文件系统时,需要根据业务需求和技术目标来权衡这些因素。例如,如果需要处理大量小文件,MogileFS或FastDFS可能是好选择;如果追求高性能和灵活的数据模型,则MongoDB可能更为合适。在实际应用中...

    阿里云 专有云企业版 V3.5.2 分布式文件系统DFS 用户指南 - 20180831.pdf

    分布式文件系统DFS是一种高性能、高可扩展性的文件系统,旨在满足企业级应用程序的需求。它提供了高可靠性、可扩展性、安全性和高性能的文件存储解决方案。分布式文件系统DFS支持多种文件系统协议,包括NFS、CIFS、...

Global site tag (gtag.js) - Google Analytics