GFS:Google File System
HDFS:Hadoop Distribute File System
首先,有一点要确认的是,作为GFS的一个最重要的实现,HDFS设计目标和GFS是高度一致的。在架构、块大小、元数据等的实现上,HDFS与GFS大致一致。但是,在某些地方,HDFS与GFS又有些不同。如:
1、 快照(Snapshot):
GFS中的快照功能是非常强大的,可以非常快的对文件或者目录进行拷贝,并且不影响当前操作(读/写/复制)。GFS中生成快照的方式叫copy-on-write。也就是说,文件的备份在某些时候只是将快照文件指向原chunk,增加对chunk的引用计数而已,等到chunk上进行了写操作时,Chunk Server才会拷贝chunk块,后续的修改操作落到新生成的chunk上。
而HDFS暂时并不支持快照功能,而是运用最基础的复制来完成。想象一下,当HBase上的数据在进行重新划分时(过程类似于hash平衡),HDFS需要对其中的所有数据(P/T级的)进行复制迁移,而GFS只需要快照,多不方便!
2、 记录追加操作(append):
在数据一致性方面,GFS在理论上相对HDFS更加完善。
a) GFS提供了一个相对宽松的一致性模型。GFS同时支持写和记录追加操作。写操作使得我们可以随机写文件。记录追加操作使得并行操作更加安全可靠。
b) HDFS对于写操作的数据流和GFS的功能一样。但是,HDFS并不支持记录追加和并行写操作。NameNode用INodeFileUnderConstruction属性标记正在进行操作的文件块,而不关注是读还是写。DataNode甚至看不到租约!一个文件一旦创建、写入、关闭之后就不需要修改了。这样的简单模型适合于Map/Reduce编程。
3、 垃圾回收(GC):
a) GFS垃圾回收采用惰性回收策略,即master并不会立即回收程序所删除的文件资源。 GFS选择以一种特定的形式标记删除文件(通常是将文件名改为一个包含时间信息的隐藏名字),这样的文件不再被普通用户所访问。Master会定期对文件的命名空间进行检查,并删除一段时间前的隐藏文件(默认3天)。
b) HDFS并没有采用这样的垃圾回收机制,而是采取了一种更加简单但是更容易实现的直接删除方式。
c) 应该说延迟回收和直接删除各有优势。延迟回收为那些“不小心“的删除操作留了后路。同时,回收资源的具体操作时在Master结点空闲时候完成,对GFS的性能有很好的提高。但是延迟回收会占用很大的存储空间,假如某些可恶的用户无聊了一直创建删除文件怎么办?
试分析下这种不同。有人说,GFS在功能上非常完善,非常强大,而HDFS在策略上较之简单些,主要是为了有利于实现。但实际上,GFS作为存储平台早已经被广泛的部署在Google内部,存储Google服务产生或者要处理的数据,同时用于大规模数据集的研究与开发工作。因此GFS并不仅仅是理论上的研究,而是具体实现。作为GFS的后辈与开源实现,HDFS在技术上应该是更加成熟的,不可能为了“偷懒”而简化功能。因此,简化说应该是不成立的。
个人认为,GFS与HDFS的不同是由于“专”与“通”的区别。众所周知,Hadoop是一个开源软件/框架,在设计之初就考虑到了用户(面向世界上的所有个人、企业)在需求上的差异,比如数据密集型(如淘宝的数据存储)、计算密集型(百度的PR算法)、混合型等等。而GFS在设计之初就对目标比较明确,都是Google的嘛,因此GFS可以对其主要功能进行性能上的优化。
说到这里,突然想起了某件事。曾经某个公司的Boss吹牛B:“我不关心J2EE,实际上在大公司里面用J2EE的很少,都有自己的一些框架。测试过了,我们在用自己开发的框架时候性能就是以前用J2EE的时候的7倍左右。”唬的我一跳一跳的,好牛啊!!后来想了一下,其实不是这个公司技术比SUN要强,而是J2EE是一个开源框架,其应用范围非常广,因此不能做到面面俱到。而他们公司自己开发的框架肯定是对其主要业务逻辑方面做了专门的优化和改进,甚至删除了或者弱化了许多对他们来说作用不大的模块。
貌似这个和GFS与HDFS的关系好像!!
分享到:
相关推荐
HDFS的设计目标是处理大规模数据,因此在实现上考虑了容错和可用性。例如,通过心跳机制和Block Report,DataNode定期向NameNode报告状态,确保NameNode对集群的实时监控。当NameNode检测到某个DataNode失联或数据块...
通过对HDFS与GFS的对比分析,我们可以看到两者在设计目标上的高度一致性,同时也发现了HDFS在某些高级功能方面的不足之处。随着技术的进步和需求的变化,HDFS将持续优化和完善,以适应更广泛的应用场景。
GFS 的高可用是通过“冗余+自动故障转移”的思路实现的,包括服务高可用、文件存储高可用。master 高可用是通过冗余了一台影子 master 实现的;chunk-server 高可用是通过冗余服务实现的;文件存储高可用是通过每一...
这种设计使得HDFS能够在廉价硬件上实现高可用性和可扩展性。HDFS具有副本机制,自动在不同节点间复制数据,以防止单点故障,同时提高读取效率。 在Hadoop中,MapReduce与HDFS协同工作,形成了强大的数据处理能力。...
Google文件系统(GFS)是谷歌设计并实现的面向大规模数据密集型应用...尽管HDFS和GFS在某些技术细节上有所不同,但它们的核心思想是一致的,这使得HDFS能够成为开源世界中的一个重要组件,并广泛应用于大数据处理领域。
使用这些jar包,可以实现创建、读取、写入、移动和删除HDFS上的文件和目录等操作。 以下是HDFS的一些关键知识点: 1. 分布式存储:HDFS将大文件分割成块(默认为128MB或256MB),并将这些块复制到集群的不同节点上...
为了实现容错,每个Block默认会有3个副本分布在不同的DataNode上。文件的元数据和Block数据是分离存储的,元数据存储在NameNode中,而Block数据则存储在DataNode上。NameNode通过维护文件系统的命名空间和元数据来...
HDFS是基于Google的GFS(Google File System)设计的开源文件系统,属于Hadoop生态系统的一部分。它将大文件分割成块(通常为128MB或256MB),并将这些块复制到多台机器上,以提高容错性和可用性。HDFS的主要特点...
在子服务器管理上,GFS的Chunk Server通过Chubby的独占锁来确认状态,而HDFS的DataNode则依赖心跳。HDFS有安全模式,确保数据块副本数量安全,而GFS没有。HDFS的空间回收机制更为保守,文件删除后数据不立即清除,...
HDFS借鉴了GFS的很多概念,并在此基础上进行了优化和改进,以适应更广泛的企业级应用。 总的来说,GFS是分布式存储领域的经典之作,它展示了如何在大规模分布式环境中实现高效、可靠的文件存储。通过深入理解和学习...
HDFS的设计灵感来源于Google的GFS(Google File System),它将大型文件分割成块,并将这些块分布在多台服务器上,从而实现数据的高可用性和容错性。HDFS的核心思想是主从结构,由NameNode作为中心节点管理文件系统...
HDFS将大文件分割成块,每个块通常为128MB或256MB,分布在集群的不同节点上,确保单个节点故障时数据的可用性。这种设计模式使得HDFS能处理PB级别的数据,并且支持并行处理,提高了数据访问效率。 HDFS架构主要由...
### Google三大论文与Hadoop生态系统的关键技术 #### 一、Google三大论文概述 Google三大论文分别指的是《Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》和《Bigtable: A ...
这些数据块会被分散存储在不同的DataNode上,并且每个数据块都有多个副本以提高数据的可靠性。NameNode负责管理文件系统的名字空间以及文件块的分布和副本信息;DataNode则负责存储实际的数据块,执行数据块的读写...
“支持GFS HDFS存储及外部存储”意味着MariaDB可以与Google File System (GFS) 和Hadoop Distributed File System (HDFS) 这样的分布式文件系统无缝集成。GFS和HDFS是两种广泛用于大数据存储的分布式文件系统,它们...
HDFS的设计理念来源于Google的GFS(Google File System)论文,由Doug Cutting和Mike Cafarella在2005年实现其核心功能,并在2006年开始得到了Yahoo!等公司的支持和发展。 #### 单节点命名服务器架构的优势与局限 ...
在分布式存储系统中,Hadoop Distributed File System (HDFS) 是一个关键组件,它提供了高度容错性和可扩展性,确保数据的可靠存储。本文将深入探讨HDFS高可用(High Availability, HA)配置,以及如何配置相关文件...