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)的高可靠性主要是由多种策略及机制共同作用实现的。
云计算环境中HDFS数据块存储策略研究.pdf
8、HDFS内存存储策略支持和“冷热温”存储 网址:...本文介绍HDFS的存储策略以及“冷热温”存储的配置。 本文的前提依赖是hadoop集群环境可以正常的运行。
基于差别概率的HDFS数据放置策略,朱亮亮,卢美莲,HDFS默认的数据放置策略是以均等概率选择数据节点来保证数据均衡地写入数据节点。然而在数据节点性能存在较大差异的实际HDFS集群应�
云计算中HDFS副本管理策略及其应用研究.pdf
HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...
主要介绍了hdfs优缺点,存储策略,还有读写原理,以及hbase一些简单介绍
windows平台下的HDFS文件浏览器,就像windows管理器一样管理你的hdfs文件系统。现在官网已经停止更新这款软件。具体配置如下: HDFS配置页面及端口http://master:50070 配置HDFS服务器 配置WebHDFS HDFS Explorer...
hdfs文件的查看 hdfs fs -cat /文件名
1.3.4 Datanode启动、心跳以及执行名字节点指令流程 26 1.3.5 HA切换流程 27 第2章 Hadoop RPC 29 2.1 概述 29 2.1.1 RPC框架概述 29 2.1.2 Hadoop RPC框架概述 30 2.2 Hadoop RPC的使用 36 2.2.1 ...
在安装好HDFS的前提下,此项目包含HDFS的基本操作,上传,下载,创建文件夹等。
利用Zookeeper对HDFS中Namenode单点失败的改进方法,鲁阳,郑岩,在大数据时代分布式处理的已经成为潮流,而Hadoop是一种应用十分广泛的分布式处理框架。但在Hadoop的使用中,Namenode的单点失败问题一�
MR处理HDFS日志样例
HDFS测试环境配置文件,稳定运行无异常,分享给大家学习参考用;
Hadoop分布式文件系统( HDFS )是一种旨在在商品硬件上运行的分布式文系统。它与现有的分布式文件系统许多相似之处。 但是,与其他分布式文件系统的区别很明显。 HDFS 具有高度的容错能力,旨在部署低成本硬件上。 ...
hdfs 文件的上传,hdfs fs -put /文件名
hdfs文件的下载
文档详细的讲述了Hadoop中HDFS文件操作命令和HDFS编程
1.1 HDFS 产生背景 1.3.1 优点 1.3.2 缺点 1.4 HDFS 组成架构 1.5 HDFS 文件块大小