HDFS是一个不错的分布式文件系统,它有很多的优点,但也存在有一些缺点。目前而言,它在以下几个方面就效率不佳:
低延时访问
HDFS不太适合于那些要求低延时(数十毫秒)访问的应用程序,因为HDFS是设计用于大吞吐量数据的,这是以一定延时为代价的。HDFS是单Master的,所有的对文件的请求都要经过它,当请求多时,肯定会有延时。当前,对于那些有低延时要求的应用程序,HBase
是一个更好的选择。现在HBase的版本
是0.20,相对于以前的版本,在性能上有了很大的提升,它的口号就是goes real time。
使用缓存或多master设计可以降低client的数据请求压力,以减少延时。还有就是对HDFS系统内部的修改,这就得权衡大吞吐量与低延时了,HDFS不是万能的银弹。
大量小文件
因为Namenode把文件系统的元数据放置在内存中,所以文件系统所能容纳的文件数目是由Namenode的内存大小来决定。一般来说,每一个文件、文件夹和Block需要占据150字节左右的空间,所以,如果你有100万个文件,每一个占据一个Block,你就至少需要300MB内存。当前来说,数百万的文件还是可行的,当扩展到数十亿时,对于当前的硬件水平来说就没法实现了。还有一个问题
就是,因为Map task的数量是由splits来决定的,所以用MR处理大量的小文件时,就会产生过多的Map task,线程管理开销将会增加作业时间。举个例子,处理10000M的文件,若每个split为1M,那就会有10000个Map tasks,会有很大的线程开销;若每个split为100M,则只有100个Map tasks,每个Map task将会有更多的事情做,而线程的管理开销也将减小很多。
要想让HDFS能处理好小文件,有不少方法:
1、利用SequenceFile、MapFile、Har等方式归档小文件,这个方法的原理就是把小文件归档起来管理,HBase就是基于此的。对于这种方法,如果想找回原来的小文件内容,那就必须得知道与归档文件的映射关系。
2、横向扩展,一个Hadoop
集群能管理的小文件有限,那就把几个Hadoop集群拖在一个虚拟服务器后面,形成一个大的Hadoop集群。google也是这么干过的。
3、多Master设计,这个作用显而易见了。正在研发中的GFS II也要改为分布式多Master设计,还支持Master的Failover,而且Block大小改为1M,有意要调优处理小文件啊。
附带个Alibaba DFS的设计,也是多Master设计,它把Metadata的映射存储和管理分开了,由多个Metadata存储节点
和一个查询Master节点组成。
Alibaba DFS
(目前下载不了,加群60534259吧(Hadoop技术交流),群共享里有下 :))
多用户写,任意文件修改
目前Hadoop只支持单用户写,不支持并发多用户写。可以使用Append操作在文件的末尾添加数据,但不支持在文件的任意位置进行修改。这些特性可能会在将来的版本中加入,但是这些特性的加入将会降低Hadoop的效率,就拿GFS来说吧,这篇文章
里就说了google自己的人都用着Multiple Writers很不爽。
利用Chubby、ZooKeeper之类的分布式协调服务来解决
一致性问题。
分享到:
相关推荐
HDFS 可靠性策略 HDFS(Hadoop Distributed File System)作为一种分布式文件系统,其高可靠性主要是由多种策略及机制共同作用实现的。下面我们来分析这些策略和机制,对分布式文件系统的高可靠性进行详细的解释。 ...
然而,在面对小文件存储、频繁的数据更新以及低延迟数据访问等场景时,HDFS则存在一定的局限性。针对这些不足之处,开发者通常会选择与其他技术(如HBase)结合使用,以弥补HDFS在这方面的不足。
在大数据处理场景中,为了优化性能和降低成本,HDFS支持了多种存储策略,包括“冷热温”存储策略以及内存存储策略——LAZY PERSIST。 一、HDFS内存存储策略支持 1. LAZY PERSIST介绍 LAZY PERSIST是一种内存存储...
4. 高可靠性与高效数据访问:改进的存储策略在保证高可靠性的同时,还需要考虑如何保持高效的数据访问性能。因为数据的分布直接影响到读写速度和延迟,因此存储策略需要在两者之间取得平衡。 5. 云资源的动态性:...
副本管理策略是HDFS中极为重要的一部分,它涉及到如何创建、存储、复制以及删除数据副本。 数据副本技术的优势主要体现在以下三个方面: 1. 数据的可用性和可靠性:在分布式系统中,数据副本能够分散存储在不同的...
1. HDFS架构:理解HDFS的基本组件,如DataNodes、NameNodes和Client,以及它们之间的交互机制。 2. 路由节点(Router):了解路由节点如何作为客户端与NameNodes之间的桥梁,提供元数据服务和数据访问。 3. 数据块...
HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...
HDFS也存在一些缺点,如不适合低延迟数据访问、不适合大量小文件存储、不支持并发写入和文件随机修改等。这限制了HDFS在某些应用场景中的使用。 HDFS是一种高效、可靠的分布式文件系统,非常适合大数据处理和批处理...
在这个“HDFS实例基本操作”中,我们将深入探讨如何在已经安装好的HDFS环境中执行基本操作,包括文件上传、下载以及创建文件夹。 一、HDFS的基本架构 HDFS基于主从结构,主要由NameNode和DataNode组成。NameNode...
**HDFS管理工具HDFS Explorer** HDFS Explorer是一款专为Windows平台设计的HDFS文件管理系统,它使得用户能够像操作本地文件系统一样便捷地管理和浏览Hadoop分布式文件系统(HDFS)。尽管官方已经停止更新此软件,...
HDFS 文件系统基本文件命令、编程读写 HDFS HDFS(Hadoop Distributed File System)是一种分布式文件系统,用于存储和管理大规模数据。它是 Hadoop 云计算平台的核心组件之一,提供了高效、可靠、可扩展的数据存储...
hdfs源码分析整理 在分布式文件系统中,HDFS(Hadoop Distributed File System)扮演着核心角色,而HDFS的源码分析则是深入了解HDFS架构和实现机理的关键。本文将对HDFS源码进行详细的分析和整理,涵盖了HDFS的目录...
hdfs文件的查看 hdfs fs -cat /文件名
分布式存储系统是一种允许文件通过网络在多台主机上共享的文件系统,它...然而,由于HDFS不支持高并发写入和小文件处理,对于这些场景,通常需要与其他分布式存储系统一起使用,或者考虑使用HDFS的改进版或者替代产品。
安装过程中,用户需要解压相应的tar.gz文件,按照使用说明进行配置,包括但不限于设置HDFS地址、FTP服务器端口、用户权限等。在部署完成后,用户可以使用任何FTP客户端连接到该服务,实现对HDFS数据的读取、写入和...
HDFS基本命令 HDFS(Hadoop Distributed File System)是一种分布式文件系统,提供了对大规模数据的存储和管理能力。在HDFS中,基本命令是最基础也是最常用的命令,掌握这些命令是使用HDFS的基础。本节我们将详细...
2. NameNode:Master,负责管理 HDFS 的名称空间、管理数据块映射信息、配置副本策略、处理客户端读写请求。 3. DataNode:Slave,负责存储实际的数据块、执行数据块的读/写操作。 4. Secondary NameNode:辅助 ...
【HDFS 透明加密KMS】是Hadoop分布式文件系统(HDFS)提供的一种安全特性,用于保护存储在HDFS中的数据,确保数据在传输和存储时的安全性。HDFS透明加密通过端到端的方式实现了数据的加密和解密,无需修改用户的应用...