前言
这一篇感觉是进入hadoop生态圈的第一步,了解hdfs的构造。
hdfs设计的初衷
其实hdfs是山寨的gfs,是开源社区的仿造关于gfs的那篇论文开发出来的分布式文件系统。所以hdfs和gfs的设计目的初衷时相同的。
- 超大文件(TB,PB级文件)
- 高容错性 (保证数据的不丢失)
- 高吞吐量
hdfs的优点
- 可以满足大数据量的存储
- 使用普通低廉的硬盘设备,但是硬盘损坏后数据不会丢失。
- 使用廉价硬盘,但是整体读写性能较好
hdfs的缺点
- 不适合小数据
- 读取延迟时间长
- 随机读取能力差
- 架构复杂
hdfs怎么保存超大文件
假设有一个100T的文件,但是硬盘最大的只有1T,所以这些数据就要使用100块硬盘。这其实就是文件的分块存储,hdfs在软件的级别上实现了文件的分块存储。
hdfs为什么可以保证数据不丢失
保证数据不丢失基本只有一种方式——冗余数据。在hdfs用默认所有的数据块都会有3份备份,具体几份可以自己设定。
hdfs为什么硬盘低廉也可以实现高吞吐
假设由1T的数据,如果由一块普通的硬盘存储,将数据全部读出需要2.5个小时,但是如果有10块硬盘,将数据分块存储在10个硬盘里,进行并行的读取,速度就提高了10倍。hdfs的原理也是相同的。
hdfs为什么不适合小数据
不是hdfs不能存储小数据,而是存储小数据的时候性能不如linux文件系统(原因后续会讲),所以不适合。
hdfs为什么读取延迟长
hdfs为了提高吞吐量,每次需要初始化,启动时间较长,所以读取延迟增加。
结尾语
计算机的技术虽然不同,但是想法都是共同的,比如这里提升吞吐量就是并行,保证数据不丢失只有备份冗余,对大文件也只有分块存储。