分布式文件系统介绍
什么是分布式文件系统:
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。
常见分布式文件系统:
常见的分布式文件系统有NFS、KFS、AFS、HDFS等。下面我们对NFS、KFS、AFS进行简单介绍:
NFS(Network File System):NFS的实质在于用户间计算机的共享。用户可以联结到共享计算机并像访问本地硬盘一样访问共享计算机上的文件。管理员可以建立远程系统上文件的访问,以至于用户感觉不到他们是在访问远程文件。
KFS(Kosmos distributed file system):是一个专门为数据密集型应用(搜索引擎,数据挖掘等)而设计的存储系统,类似于Google的GFS和Hadoop的HDFS分布式文件系统。 KFS使用C++实现,支持的客户端包括C++,Java和Python。KFS系统由三部分组成,分别是metaserver、chunkserver和client library。
AFS(Andrew File System):是专门为在大型分布式环境中提供可靠的文件服务而设计的。它通过基于单元的结构生成一种可管理的分布式环境。一个单元是某个独立区域中文件服务器和客户机系统的集合,这个独立区域由特定的机构管理。通常代表一个组织的计算资源。用户可以和同一单元中其他用户方便地共享信息,他们也可以和其他单元内的用户共享信息,这取决于那些单元中的机构所授予的访问权限。
这三个系统我们只是简单的了解一下他们的概念,之所以把这些材料收集给大家看主要是想引入我们今天要重点介绍的分布式文件系统——HDFS
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。
HDFS是Hadoop的一部分,而hadoop又曾经是是lucene的一部分:
HDFS概述:
(图2)
分布式操作系统特点:
datanode和namenode都是运行在普通的机器之上的软件,机器典型的都是GNU/Linux,HDFS是用java编写的,任何支持java的机器都可以运行namenode或datanode,利用java语言的超轻便型,很容易将HDFS部署到大范围的机器上。典型的部署是由一个专门的机器来运行namenode软件,集群中的其他每台机器运行一个datanode实例。
大数据集:运行在HDFS之上的程序有很大量的数据集。典型的HDFS文件大小是GB到TB的级别。所以,HDFS被调整成支持大文件。
简单一致性模型:大部分的HDFS程序对文件操作需要的是一次写多次读取的操作模式。一个文件一旦创建、写入、关闭之后就不需要修改了。这个假定简单化了数据一致的问题和并使高吞吐量的数据访问变得可能。一个Map-Reduce程序或者网络爬虫程序都可以完美地适合这个模型。
异构软硬件平台间的可移植性:HDFS被设计成可以简便地实现平台间的迁移,这将推动需要大数据集的应用更广泛地采用HDFS作为平台。
通信协议:所有的通信协议都是在TCP/IP协议之上构建的。一个客户端和指定TCP配置端口的namenode建立连接之后,它和namenode之间通信的协议是Client Protocal。datanode和namenode之间通过Datanode Protocol通信。
硬件故障:硬件故障是常态,而不是异常。整个HDFS系统将由数百或数千个存储着文件数据片断的服务器组成。实际上它里面有非常巨大的组成部分,每一个组成部分都很可能出现故障,这就意味着HDFS里的总是有一些部件是失效的,因此,故障的检测和自动快速恢复是HDFS一个很核心的设计目标。
HDFS的异常状态:
HDFS的主要目标就是在存在故障的情况下也能可靠地存储数据。三个最常见的故障是namenode故障,datanode故障和网络断开。
一个datanode周期性发送一个心跳包到namenode。网络断开会造成一组datanode子集和namenode失去联系。namenode根据缺失的心跳信息判断故障情况。namenode将这些datanode标记为死亡状态,不再将新的IO请求转发到这些datanode上,这些datanode上的数据将对HDFS不再可用,可能会导致一些块的复制因子降低到指定的值。
namenode检查所有的需要复制的块,并开始复制他们到其他的datanode上。重新复制在有些情况下是不可或缺的,例如:datanode失效,副本损坏,datanode磁盘损坏或者文件的复制因子增大。
数据正确性
从datanode上取一个文件块有可能是坏块,坏块的出现可能是存储设备错误,网络错误或者软件的漏洞。HDFS客户端实现了HDFS文件内容的校验。当一个客户端创建一个HDFS文件时,它会为每一个文件块计算一个校验码并将校验码存储在同一个HDFS命名空间下一个单独的隐藏文件中。当客户端访问这个文件时,它根据对应的校验文件来验证从datanode接收到的数据。如果校验失败,客户端可以选择从其他拥有该块副本的datanode获取这个块。
FsImage和Editlog是HDFS的核心数据结构。这些文件的损坏会导致整个集群的失效。因此,namenode可以配置成支持多个FsImage和EditLog的副本。任何FsImage和EditLog的更新都会同步到每一份副本中。namenode对于一个HDFS集群是单点失效的。假如namenode失效,就需要人工的干预。目前,还不支持自动重启和到其它namenode的切换。
NFS、DFS、AFS、HDFS的比较:
|
NFS |
KFS |
AFS |
HDFS |
功能 |
通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
|
专门为数据密集型应用(搜索引擎,数据挖掘等)而设计的存储系统,类似于Google的GFS和Hadoop的HDFS |
能够使来自任何通过这个国家的 AFS 机器能够在文件一经在外地存储就能访问。AFS较NFS有所增强。 |
HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 |
平台支持 |
|
KFS使用C++实现,支持的客户端包括C++,Java和Python |
|
机器典型的都是GNU/Linux,HD用java编写 |
<!--EndFragment-->
相关推荐
在当今信息技术高速发展的背景下,分布式文件系统作为处理大规模数据存储和检索的重要技术,已经成为存储领域的核心技术之一。分布式文件系统允许多个客户端并发访问存储在同一物理或虚拟存储资源中的数据,它能够在...
在现代计算机网络体系结构中,分布式文件系统是一种将数据分散存储在不同物理位置的文件系统,其核心目标是提供高可靠性、高扩展性和高效的数据访问性能。HDFS(Hadoop Distributed File System,Hadoop分布式文件...
### 分布式文件系统的历史与现状 #### 一、引言 随着信息技术的快速发展,分布式文件系统作为一种重要的数据存储和管理技术,在过去的几十年里取得了显著的进步。本文将深入探讨分布式文件系统的起源、发展历程以及...
"分布式文件系统ppt" 分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计是基于客户机 / 服务器模式。 分布式文件系统的特性: 1. ...
在这个场景下,"分布式文件系统 c++编写" 指的是一个用C++实现的分布式文件系统项目,可能是模仿或受到了Google的分布式文件系统GFS(Google File System)的启发。 GFS是Google为了处理大规模数据存储和处理而设计...
分布式文件系统是一种在多台计算机之间共享和管理数据的系统,它允许多个节点同时访问和操作同一份文件,以提高数据的可访问性和处理效率。Chubby是一种由Google开发的分布式文件系统,特别设计用于提供粗粒度的锁...
基于Rust的分布式文件系统项目介绍 随着大数据和云计算技术的快速发展,分布式文件系统作为存储和管理海量数据的关键技术之一,受到了越来越多的关注。Rust作为一种安全、高效且并发性能出色的编程语言,为构建高...
分布式文件系统(Distributed File System, DFS)是将数据分散存储在多台独立的服务器上的一种文件系统。与传统文件系统相比,分布式文件系统的特点、优势以及设计考量等方面存在显著差异。而Hadoop分布式文件系统...
分布式文件系统(Distributed File System, DFS)是计算机网络技术发展与个人计算机普及背景下的产物,是为了解决海量信息存储问题而产生的存储系统架构。它的出现,有效地解决了信息存储容量、数据备份和数据安全性...
分布式文件系统是一种大规模数据存储和管理的技术,它将单一的、大型的数据文件分割成多个小块,分布存储在多台计算机上,通过网络进行通信和协调,以提供高可用性、高并发性和高扩展性。在当今大数据时代,分布式...
Hadoop 大数据开发实战教学教案—03HDFS 分布式文件系统.pdf 本节课程主要介绍 HDFS 的概念、HDFS 存储架构和数据读写流程、HDFS 的 Shell 命令、Java 程序操作 HDFS、Hadoop 序列化、Hadoop 小文件处理、通信机制 ...
本文将对比五种典型的分布式文件系统,包括HDFS、Ceph、MooseFS、GlusterFS和LustreFS,介绍其基本架构、数据分布和查询处理流程,然后对这些系统的优缺点进行分析,最后给出了在不同场景下如何对分布式文件系统进行...
分布式文件系统是一种跨越多台计算机的文件管理系统,它允许用户通过网络访问位于不同地理位置的物理存储资源,从而提供高效、可扩展和高可用性的文件访问服务。这种系统的设计基于客户机/服务器架构,其中,客户端...