写在前面

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系

解答

HDFS 即 Hadoop Distributed File System,Hadoop 分布式文件系统。
HDFS 是 Hadoop 大数据体系的核心组成部分,主要解决海量大数据文件存储的问题。
在开源大数据技术领域中,HDFS 是事实上的存储标准,绝大多数的大数据框架都利用 HDFS 进行数据存储。

在这里插入图片描述

补充

HDFS 的优点

  1. 高容错性

上传的数据自动保存多个副本(默认三个),如果某一个 Datanode上的副本丢失,HDFS会自动复制其他Data Node上的副本。

HDFS进行文件读写时,会进行校验如果出错,有重新读写机制。

HDFS定期(可配置)对节点上的文件块进行校验,避免数据损坏。

在 Hadoop3.x 版本中已经使用占用存储空间更少的文件纠删码技术来提高容错性。

  1. 适合大数据的处理

Hadoop集群中的节点可以有上千个,HDFS可以在上面构建超大容量的分布式文件系统。HDFS不仅支持存储TB级别甚至PB级别的单个文件,还能够处理百万规模的数据。

  1. 高并发访问能力

HDFS采用了多副本机制,当多节点并发访问时,可以根据就近原则为其提供副本数据,提高集群的吞吐量。

  1. 流式文件写入

HDFS的设计是建立在“一次写入、多次读写”的基础上,这意味着一个文件旦写入就很少被更改。

大数据的分析任务是建立在全部数据之上,对HDFS来说,读取整个文件要比读取具体某条数据更加高效

  1. 可构建在廉价机器上

Hadoop可以运行在廉价的商用计算机上,这就意味着集群中出现节点故障的概率非常高。

为了避免数据的丢失和任务的中断,HDFS通过其容错机制和恢复机制保障整个集群的正常运行,不影响用户使用。

HDFS的缺点

  1. 不适合低延迟数据访问

HDFS针对大数据吞吐量做了优化,牺牲了数据获取的延迟,所以对于低延迟来说,不适合用HDFS来做。

它适合高吞吐率的场景,即在某一时间内写入大量的数据。

但是它在低延时的情况下是不行的,比如毫秒级以内读取数据。

  1. 无法高效存储大量的小文件

因为HDFS把文件系统的元数据(存储文件、目录、块信息等)放置在内存中, 文件系统所能容纳的文件数目是由HDFS中 Name Node节点的内存大小来决定,而Name Node的内存是有限的。

小文件存储的寻道时间会超过文件的读取时间,这违背了HDFS的设计初衷。

还有一个问题就是,因为 MapReduce中Map任务启动的数量是由输入分片来决定的,所以用 Mapreduce处理大量的小文件时,就会产生过多的进程,增加程序开销时间。

  1. 不支持多用户写入文件、修改文件

在HDFS中一个文件只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。

目前HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改读写。

上一篇 下一篇