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 由 NDFS 系统演变而来,主要解决海量大数据存储的问题,也是目前分布式文件系统中应用比较广泛的一个。 HDFS 存储架构 HDFS 存储架构主要由两个部分组成:NameNode 和 DataNode。 * NameNode(名称节点)...
HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)作为这类系统的一个重要代表,其设计理念和实现细节具有典型的研究和应用价值。 分布式文件系统的一个关键特点是基于计算机集群结构,它能够将大规模...
分布式文件系统hdfs 分布式文件系统hdfs 分布式文件系统hdfs 分布式文件系统hdfs 分布式文件系统hdfs
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错...
分布式系统与Hadoop分布式文件系统(HDFS) 分布式系统是将计算任务分布在多个计算节点上协同工作的计算机系统。它能提升处理能力,并可实现数据的高可用性和可伸缩性。Hadoop是一个开源的框架,广泛应用于大数据...
它是一个分布式文件系统,能够处理大量数据的存储和处理需求。 HDFS架构 HDFS的架构主要包括NameNode和DataNode两个组件。NameNode是Master节点,负责管理命名空间、元数据和Block副本策略。DataNode是Slave节点,...
### 构建HDFS分布式文件系统 ...通过以上步骤,我们可以在CentOS 6.6 X64上成功构建出一个功能完整的HDFS分布式文件系统。这不仅为大数据处理提供了必要的基础设施支持,也为后续的大数据分析应用打下了坚实的基础。
"基于HDFS分布式文件系统的大数据存储优点与功能" 大数据时代,伴随着信息时代的快速发展,数据量的增长速度也在不断增加。为了解决数据存储的问题,世界各国的科学家们不断探索解决方案,涌现出了一些分布式文件...
例如,Ceph是一个开源的、融合进Openstack体系的分布式文件系统,它支持块、文件和对象的存储,并且提供动态子树分割、快照支持等特性。GlusterFS则没有元数据,利用哈希定位,支持多种数据布局和异构存储。HDFS和...
分布式文件系统HDFS是Hadoop项目中重要的组件之一,它专门设计用于存储大规模数据集,具备高容错性、高吞吐量的特点,并能够在廉价硬件上运行。HDFS借鉴了Google的GFS架构,并在Hadoop环境中实现了类似的功能,用于...
它是一个分布式文件系统,能够存储大量的数据,并提供高效的数据读写性能。 分布式文件系统的概念 分布式文件系统是一种文件系统,它将数据分布式存储在多个机器上,以提高数据的存储容量和读写性能。在分布式文件...
《高可用性的HDFS——Hadoop分布式文件系统深度实践》专注于Hadoop分布式文件系统(hdfs)的主流ha解决方案,内容包括:hdfs元数据解析、hadoop元数据备份方案、hadoop backup node方案、avatarnode解决方案以及最新...
Hadoop分布式文件系统(HDFS)是Hadoop核心组件之一,它的设计目标是为了在普通的硬件上提供高吞吐量的数据访问,适用于大规模数据集的存储和处理。HDFS作为一个高度容错的系统,旨在提供高可靠性且易于扩展的分布式...
本项目是一个基于Hadoop HDFS的分布式文件系统备份与恢复系统。它包括备份节点(BackupNode)和数据节点(DataNode)的管理,以及与NameNode的通信。主要功能包括文件系统的元数据管理、编辑日志的同步、文件目录树...
为了解决这些问题,本文提出了一种基于HDFS的智能分布式文件系统(IHDFS),该系统通过大数据去重模块、大数据放置模块、大数据智能迁移模块和大数据编码模块等多种机制来提高用户访问效率和节省存储空间。...
基于springboot+netty+redis+hdfs实现的一个线上分布式网盘系统,毕业设计项目,个人学习,课设等均可,项目经过测试,可完美运行! 项目结构 项目主要分为一下几个模块 web-service 主要功能是页面展示,交互 ...
分布式文件系统HDFS(Hadoop Distributed File System)是Hadoop生态系统中的核心组件之一,以下是对HDFS的详细介绍: 一、定义与背景 HDFS是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件...
而Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)作为分布式文件系统的一种,被广泛应用于大数据处理领域。在对比传统文件系统与分布式文件系统时,需要从多个维度进行分析,这包括文件系统的架构...