什么是分布式文件系统HDFS?

2024-12-25 23:00:41
推荐回答(1个)
回答1:

HDFS是基于流数据模式访问和处理超大文件的需求而开发的,它可以运行于廉价的商用服务器上。总的来说,可以将 HDFS的主要特点概括为以下几点:
(1 )处理超大文件
这里的超大文件通常是指数百 MB、甚至数百TB 大小的文件。目前在实际应用中, HDFS已经能用来存储管理PB(PeteBytes)级的数据了。在 Yahoo!,Hadoop 集群也已经扩展到了 4000个节点。
(2 )流式地访问数据
HDFS的设计建立在更多地响应“一次写入,多次读取”任务的基础之上。这意味着一个数据集一旦由数据源生成,就会被复制分发到不同的存储节点中,然后响应各种各样的数据分析任务请求。在多数情况下,分析任务都会涉及数据集中的大部分数据,也就是说,对HDFS 来说,请求读取整个数据集要比读取一条记录更加高效。
(3 )运行于廉价的商用机器集群上
Hadoop设计对硬件需求比较低,只须运行在廉价的商用硬件集群上,而无须昂贵的高可用性机器上。廉价的商用机也就意味着大型集群中出现节点故障情况的概率非常高。这就要求在设计 HDFS时要充分考虑数据的可靠性、安全性及高可用性。
正是由于以上的种种考虑,我们会发现现在的 HDFS在处理一些特定问题时不但没有优势,而且有一定的局限性,主要表现在以下几个方面。
(1 )不适合低延迟数据访问
如果要处理一些用户要求时间比较短的低延迟应用请求,则 HDFS不适合。HDFS 是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。目前有一些补充的方案,比如使用HBase,通过上层数据管理项目来尽可能地弥补这个不足。
(2 )无法高效存储大量小文件
在Hadoop 中需要用 NameNode来管理文件系统的元数据,以响应客户端请求返回文件位置等,因此文件数量大小的限制要由 NameNode来决定。例如,每个文件、索引目录及块大约占 100字节,如果有100 万个文件,每个文件占一个块,那么至少要消耗 200MB内存,这似乎还可以接受。但如果有更多文件,那么 NameNode的工作压力更大,检索处理元数据的时间就不可接受了。
(3 )不支持多用户写入及任意修改文件
在HDFS 的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。目前 HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。