hdfs为什么适合小文件
‘壹’ hadoop框架是如何处理大量小文件的
hdfs不适合存小文件,要处理大量小文件,2个办法。一 ,小文件合并成大文件再存。二,安装hbase,以数据的形式存小文件。
‘贰’ HDFS分布式文件系统具有哪些优点
HDFS分布式文件系统具有以下优点:
支持超大文件
支持超大文件。超大文件在这里指的是几百M,几百GB,甚至几TB大小的文件。一般来说hadoop的文件系统会存储TB级别或者PB级别的数据。所以在企业的应用中,数据节点有可能有上千个。
检测和快速应对硬件故障
在集群的环境中,硬件故障是常见的问题。因为有上千台服务器连接在一起,这样会导致高故障率。因此故障检测和自动恢复是hdfs文件系统的一个设计目标。
流式数据访问
Hdfs的数据处理规模比较大,应用一次需要访问大量的数据,同时这些应用一般都是批量处理,而不是用户交互式处理。应用程序能以流的形式访问数据集。主要的是数据的吞吐量,而不是访问速度。
简化的一致性模型
大部分hdfs操作文件时,需要一次写入,多次读取。在hdfs中,一个文件一旦经过创建、写入、关闭后,一般就不需要修改了。这样简单的一致性模型,有利于提高吞吐量。
缺点
低延迟数据访问
低延迟数据。如和用户进行交互的应用,需要数据在毫秒或秒的范围内得到响应。由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟来说,不适合用hadoop来做。
大量的小文件
Hdfs支持超大的文件,是通过数据分布在数据节点,数据的元数据保存在名字节点上。名字节点的内存大小,决定了hdfs文件系统可保存的文件数量。虽然现在的系统内存都比较大,但大量的小文件还是会影响名字节点的性能。
多用户写入文件、修改文件
Hdfs的文件只能有一次写入,不支持写入,也不支持修改。只有这样数据的吞吐量才能大。
不支持超强的事务
没有像关系型数据库那样,对事务有强有力的支持。
‘叁’ hadoop的优点有哪些 a处理超大文件 b低延迟访问数据
一、 Hadoop 特点
1、支持超大文件
一般来说,HDFS存储的文件可以支持TB和PB级别的数据。
2、检测和快速应对硬件故障
在集群环境中,硬件故障是常见性问题。因为有上千台服务器连在一起,故障率高,因此故障检测和自动恢复hdfs文件系统的一个设计目标。假设某一个datanode节点挂掉之后,因为数据备份,还可以从其他节点里找到。namenode通过心跳机制来检测datanode是否还存在
3、流式数据访问
HDFS的数据处理规模比较大,应用一次需要大量的数据,同时这些应用一般都是批量处理,而不是用户交互式处理,应用程序能以流的形式访问数据库。主要的是数据的吞吐量,而不是访问速度。访问速度最终是要受制于网络和磁盘的速度,机器节点再多,也不能突破物理的局限,HDFS不适合于低延迟的数据访问,HDFS的是高吞吐量。
4、简化的一致性模型
对于外部使用用户,不需要了解hadoop底层细节,比如文件的切块,文件的存储,节点的管理。
一个文件存储在HDFS上后,适合一次写入,多次写出的场景once-write-read-many。因为存储在HDFS上的文件都是超大文件,当上传完这个文件到hadoop集群后,会进行文件切块,分发,复制等操作。如果文件被修改,会导致重新出发这个过程,而这个过程耗时是最长的。所以在hadoop里,不允许对上传到HDFS上文件做修改(随机写),在2.0版本时可以在后面追加数据。但不建议。
5、高容错性
数据自动保存多个副本,副本丢失后自动恢复。可构建在廉价机上,实现线性(横向)扩展,当集群增加新节点之后,namenode也可以感知,将数据分发和备份到相应的节点上。
6、商用硬件
Hadoop并不需要运行在昂贵且高可靠的硬件上,它是设计运行在商用硬件的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常高的。HDFS遇到上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。
二、HDFS缺点
1、不能做到低延迟
由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟数据访问,不适合hadoop,对于低延迟的访问需求,HBase是更好的选择,
2、不适合大量的小文件存储
由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量,根据经验,每个文件、目录和数据块的存储信息大约占150字节。因此,如果大量的小文件存储,每个小文件会占一个数据块,会使用大量的内存,有可能超过当前硬件的能力。
3、不适合多用户写入文件,修改文件
Hadoop2.0虽然支持文件的追加功能,但是还是不建议对HDFS上的 文件进行修改,因为效率低。
对于上传到HDFS上的文件,不支持修改文件,HDFS适合一次写入,多次读取的场景。
HDFS不支持多用户同时执行写操作,即同一时间,只能有一个用户执行写操作。
‘肆’ hdfs为什么不适合处理大量的小文件
在HDFS中,namenode将文件系统中的元数据存储在内存中,因此,HDFS所能存储的文件数量会受到namenode内存的限制。一般来说,每个文件、目录、数据块的存储信息大约占150个字节,根据当前namenode的内存空间的配置,就可以计算出大约能容纳多少个文件了。
有一种误解就是,之所以HDFS不适合大量小文件,是因为即使很小的文件也会占用一个块的存储空间。这是错误的,HDFS与其它文件系统不同,小于一个块大小的文件,不会占用一个块的空间。
‘伍’ hdfs适合存储多大的单个文件
首先hdfs是建立在多个机器文件系统上的一个逻辑上的文件系统。它的底层数据以数据块方式存储,块大小可进行调整。
假如你设置一个数据块大小为256M,上传一个1G的文件,它底层会将这个文件分成4块存储,每个块256M。你在hdfs上看到的是一个完整的文件,随时可对这个文件进行操作,无需关注它的存储。就像你在操作系统上操作文件一样,无需关注它存在那个磁盘哪个扇区
‘陆’ Hadoop存储小文件有什么问题,希望有人能回答全面些
hadoop主要是hdfs和maprece两大框架,hdfs用来存储文件,maprece用来处理文件进行计算。1.首先,对于hdfs,dn负责存储文件,以及文件的副本,而nn负责存储文件的元数据,例如文件的块信息,以及位置信息等,这些数据会保存在nn的内存中,当存在很多的小文件时,每个小文件nn存储的元数据都是一样的,所以N个小文件会占用nn大量的内存,增大nn的负担。
2.而对于maprece来说,map的输入默认是一个输入文件对应一个map任务,所以如果不做特殊处理在使用maprece处理这些小文件时会一个小文件产生一个map。这样的话每个map只处理一个小文件,会造成很大的资源浪费,同时也会降低maprece的执行效率。
以上是我自己的理解,可能还有其他的原因。建议去网上自行搜索一些文章阅读。
‘柒’ 小文件适合hadoop吗
不适合
现在HDFS里比较大的一个问题是小文件太多,造成元数据处理负担太重。
单纯从存储角度,文件越大越好。但是其他答案也指出了,文件太大可能其他处理会受影响。
如果是GB这个级别的,还是很适合HDFS的。
‘捌’ hdfs小文件过多,会带来什么问题
因为在hdfs 中,数据的元数据信息是保存在NameNode上的,hdfs本身的作用就是用来存储海量文件的,首先小文件过多的话,会增加NameNode 的压力,,因为NameNode是要接收集群中所有的DataNode的心跳信息,来确定元数据的信息变化的,另外,文件中可使用的block块的个数是有限制的,hadoop用来处理数据的话,小文件的延迟,和数据量虽然很小,但是有些地方和大文件所耗的时间相同,所以最好做优化,避免这种情况的发生。
‘玖’ hdfs的特点有哪些
hdfs的特点
一、hdfs的优点
1.支持海量数据的存储:一般来说,HDFS存储的文件可以支持TB和PB级别的数据。
2.检测和快速应对硬件故障:在集群环境中,硬件故障是常见性问题。因为有上千台服务器连在一起,故障率很高,因此故障检测和自动恢复hdfs文件系统的一个设计目标。假设某一个datanode挂掉之后,因为数据是有备份的,还可以从其他节点里找到。namenode通过心跳机制来检测datanode是否还存活。
3.流式数据访问:(HDFS不能做到低延迟的数据访问,但是HDFS的吞吐量大)=》Hadoop适用于处理离线数据,不适合处理实时数据。HDFS的数据处理规模比较大,应用一次需要大量的数据,同时这些应用一般都是批量处理,而不是用户交互式处理。应用程序能以流的形式访问数据库。主要的是数据的吞吐量,而不是访问速度。访问速度最终是要受制于网络和磁盘的速度,机器节点再多,也不能突破物理的局限。
4.简化的一致性模型:对于外部使用用户,不需要了解hadoop底层细节,比如文件的切块,文件的存储,节点的管理。一个文件存储在HDFS上后,适合一次写入,多次读取的场景。因为存储在HDFS上的文件都是超大文件,当上传完这个文件到hadoop集群后,会进行文件切块,分发,复制等操作。如果文件被修改,会导致重新触发这个过程,而这个过程耗时是最长的。所以在hadoop里,2.0版本允许数据的追加,单不允许数据的修改。
5.高容错性:数据自动保存多个副本,副本丢失后自动恢复。可构建在廉价的机器上,实现线性扩展。当集群增加新节点之后,namenode也可以感知,将数据分发和备份到相应的节点上。
6.商用硬件:Hadoop并不需要运行在昂贵且高可靠的硬件上。它是设计运行在商用硬件(在各种零售店都能买到的普通硬件)的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常高的。HDFS遇到上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。
二、HDFS缺点(局限性)
1、不能做到低延迟数据访问:由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟数据访问,不适合hadoop。对于低延迟的访问需求,HBase是更好的选择。
2、不适合大量的小文件存储 :由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量。根据经验,每个文件、目录和数据块的存储信息大约占150字节。因此,如果有一百万个小文件,每个小文件都会占一个数据块,那至少需要300MB内存。如果是上亿级别的,就会超出当前硬件的能力。
3、修改文件:对于上传到HDFS上的文件,不支持修改文件。Hadoop2.0虽然支持了文件的追加功能,但是还是不建议对HDFS上的文件进行修改。因为效率低下。HDFS适合一次写入,然后多次读取的场景。
4、不支持用户的并行写:同一时间内,只能有一个用户执行写操作。
‘拾’ 在hadoop项目结构中h dfs指的是什么
HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。
HDFS 具有以下优点:
1、高容错性
数据自动保存多个副本。它通过增加副本的形式,提高容错性。某一个副本丢失以后,它可以自动恢复,这是由 HDFS 内部机制实现的,我们不必关心。
2、适合批处理
它是通过移动计算而不是移动数据。它会把数据位置暴露给计算框架。
3、适合大数据处理
处理数据达到 GB、TB、甚至PB级别的数据。能够处理百万规模以上的文件数量,数量相当之大。能够处理10K节点的规模。
4、流式文件访问
一次写入,多次读取。文件一旦写入不能修改,只能追加。它能保证数据的一致性。
5、可构建在廉价机器上
它通过多副本机制,提高可靠性。它提供了容错和恢复机制。比如某一个副本丢失,可以通过其它副本来恢复。
HDFS 也有它的劣势,并不适合所有的场合:
1、低延时数据访问
比如毫秒级的来存储数据,这是不行的,它做不到。它适合高吞吐率的场景,就是在某一时间内写入大量的数据。但是它在低延时的情况下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。
2、小文件存储
存储大量小文件(这里的小文件是指小于HDFS系统的Block大小的文件(默认64M))的话,它会占用 NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。
3、并发写入、文件随机修改
一个文件只能有一个写,不允许多个线程同时写。仅支持数据 append(追加),不支持文件的随机修改。