根据GFS中主服务器/块服务器的设计,HDFS采用主服务器/从属服务器架构。HDFS集群是由一个NameNode 和一定数目的DataNode组成,NameNode是一个中心服务器,负责管理文件系统的名称空间和客户端对文件的访问。DataNode节点在集群是一个节点一个,负责管理节点上附带的存储。
NameNode执行文件系统的名称空间操作,如打开、关闭、重命名文件和目录,同时决定到具体数据节点的映射。
DataNode在NameNode的指挥下进行块的创建、删除和复制。
HDFS被设计成一个大集群中可靠地存储海量文件的系统。它将每个文件存储成块序列,除了最后一个块,所有块的大小相同。文件的所有块都会被复制,每个文件的块大小和复制因子都是可配置的。HDFS中的文件是单用户写模式,任何时候只能有一个用户写入(控制好同步)。NameNode全权管理块的复制,周期性地从集群中的DataNode接受心跳包和一个数据库报告(Blockreport)。心跳包的接收表示该数据节点正常工作,而数据块报告包括该数据节点所有的块组成的列表。
NameNode存储HDFS的元数据,对于任何修改文件元数据的操作,NameNode都用一个Editlog的事物日志记录下来。创建文件、修改文件都会在Editlog插入一条记录,NameNode在本地OS的文件系统中存储这个Editlog。整个文件系统的名称空间,包括块到文件的映射、文件的属性,都存储在FsImage的文件中,这个文件也放在NameNode所在系统的文件系统中。
所有HDFS通信协议都是建立在TCP/IP协议上,客户端通过一个可配置的端口连接到NameNode,通过各个端协议组件与NameNode交互,DataNode使用Datanode Protocol与NameNode交互。
使用HDFS的应用都是处理大数据集的,典型的块大小时64M,所以,文件一般按照64M大小分割,分割的块存储在不同的数据节点。
客户端创建文件的请求并没有立即发给NameNode,会将文件数据缓存到本地的一个临时文件。应用的写操作被透明的重定向到这个临时文件。当这个临时文件累计的数据超过一个块的大小,客户端才会联系NameNode,NameNode将文件名插入文件系统的层次结构中,并给它分配一个数据库,然后返回数据节点的标示符和目标数据库给客户端。客户端将本地临时文件刷新到指定的DataNode。当文件关闭时,在临时文件中剩余的没有刷新的数据也会传输到指定的DataNode,然后客户端通知节点文件已经关闭,NameNode将文件创建操作提交到持久存储。如果NameNode在文件关闭前挂了,则文件就丢失了。
HDFS写数据采用流水线式复制方式。客户端向HDFS文件写数据时,一开始是写入本地临时文件,假设文件的复制因子是3,则客户端会从NameNode获取一张数据节点列表来存放副本。然后向第一个datanode传输数据,第一个datanode一小部分一小部分(4kb)接收数据,将每部分写入本地仓库,并且同时将该部分传输到第二个datanode。第二个datanode也是边收边传,一小部分一小部分接收,存储在本地仓库,同时传给第三个datanode,第三个datanode仅仅是接收并存储。
分享到:
相关推荐
标题中的“google大数据论文 mapreduce hdfs bigtable”揭示了三篇重要的谷歌论文,它们深入探讨了大数据处理的关键技术。MapReduce、HDFS(Hadoop分布式文件系统)和Bigtable都是谷歌在大数据处理领域的核心创新,...
MapReduce是一种编程模型,由Google提出,广泛应用于大数据处理,尤其是在Hadoop生态系统中。在这个场景下,我们可能会涉及到以下几个关键知识点: 1. **Hadoop分布式文件系统(HDFS)**:HDFS是Apache Hadoop项目...
HDFS是Apache Hadoop项目的一部分,其设计灵感来源于Google的GFS(Google File System)。在Java环境中,HDFS的API通常通过jar包提供,使得开发人员能够方便地在自己的应用程序中集成HDFS功能。 在这个名为“hdfs的...
首先,Hadoop是一个由Apache软件基金会开发的分布式存储和计算平台,它基于Google发表的几篇论文(Google File System, MapReduce, BigTable),Hadoop系统设计用来运行在廉价的硬件上,并能处理大量数据集。...
HDFS最初由Google公司的GFS(Google File System)论文启发而来,自2003年10月公开发布后,已成为大数据存储领域中不可或缺的核心技术。 HDFS的设计目标是运行在大量廉价商用机器组成的集群之上,这些机器的硬件...
HDFS(Hadoop Distributed File System)是Apache Hadoop的核心子项目,基于Google File System论文,旨在解决大规模数据存储问题。它是一个分布式文件系统,能够处理大量数据的存储和处理需求。 HDFS架构 HDFS的...
首先,我们要知道HDFS的设计理念是基于Google的GFS(Google File System)。它的核心设计目标是高容错性、高可扩展性和高吞吐量。HDFS将大文件分割成块,每个块通常为128MB或256MB,分布在集群的不同节点上,确保...
在分布式存储领域,Hadoop HDFS(Hadoop Distributed File System)是广泛使用的开源文件系统,它为大数据处理提供了高容错、高吞吐量的数据访问。为了与HDFS进行交互,开发者通常需要在本地环境中配置相应的Java库...
10. 实战应用:HDFS广泛应用于互联网公司,如Facebook、Google等,用于处理日志分析、推荐系统、机器学习等多种业务场景。学习和掌握HDFS,对于从事大数据相关工作至关重要。 通过这个深入理解Hadoop HDFS的高级...
HDFS的设计灵感来源于Google的GFS(Google File System),它将大型文件分割成块,并将这些块分布在多台服务器上,从而实现数据的高可用性和容错性。HDFS的核心思想是主从结构,由NameNode作为中心节点管理文件系统...
HDFS是基于Google的GFS(Google File System)设计的开源文件系统,属于Hadoop生态系统的一部分。它将大文件分割成块(通常为128MB或256MB),并将这些块复制到多台机器上,以提高容错性和可用性。HDFS的主要特点...
《MapReduce框架与HDFS框架解析》 MapReduce和HDFS是大数据处理领域的核心组件,它们构成了Hadoop生态系统的基础。Hadoop,一个由Apache软件基金会开发的开源项目,深受业界欢迎,其设计灵感来源于谷歌发表的两篇...
- **背景**: 基于Google发表的GFS(Google File System)论文,HDFS被设计用于在大规模廉价商用计算机集群上运行,以满足“一次写入,多次读取”的文件访问需求。 - **架构特点**: - **分布式存储**: 数据被分割成...
首先,HDFS的设计理念基于Google的GFS(Google File System)论文,旨在处理海量数据,提供高吞吐量的数据访问。它将大文件分割成多个块,并将这些块分布在多台机器上,确保即使部分节点故障,数据仍然可以被访问。...
4. `lib/*`:Hadoop项目的lib目录下还可能包含其他依赖的JAR包,如`slf4j-api.jar`(日志框架)、`protobuf.jar`(Google的协议缓冲区库,用于序列化和反序列化数据)以及各种网络和安全相关的库。 在实际应用中,...
2. **GoogleFS**:Google设计的一种专有分布式文件系统,主要用于内部的大规模数据处理。 3. **FastDFS**:一种轻量级的开源分布式文件系统,适用于中小规模的应用场景。 4. **Windows Server DFS**:Microsoft ...