3.1 HDFS的简介
HDFS 实现的目标
- 兼容廉价的硬件设备
- 支持大数据集
- 实现流数据读写(这是与传统文件系统最大不同的地方,传统文件系统是以块为数据单位读写的,而HDFS是全部或者大部分一起读写)
- 支持简单的文件模型(对文件模型进行简化,牺牲了某些功能,来获得能批处理的特性)
- 强大的扩平台兼容性
自身的局限性:
- 不适合低延迟数据访问(不能非常精确到某一个数据,即不能满足实时的数据处理需求,实时处理由HBase实现,因为HBase具备随机读写特性)
- 无法高效存储大量小文件
- 不支持多用户写入及任意修改文件(即只允许追加,不允许修改!!!!)
3.2 相关概念
块 : 整个HDFS当中最核心的概念。
普通文件系统的块 与 HDFS 的块
联系:都是为了分摊磁盘读写开销,也就是在大量数据间分摊磁盘寻址的开销。
区别:HDFS的一个块比普通文件系统的块大很多。HDFS的块默认大小为64MB。
设计块的原因:
- 支持面向大规模数据存储
- 降低分布式节点的寻址开销
- 如果块过大会导致 MapReduce 就一两个任务在执行,完全牺牲了 MapReduce 的并行度,发挥不了分布式并行处理的效果。
- 寻址要经过三级寻址。即先找元数据目录,然后找数据节点,最后从数据节点取出数据,如果块太小,会导致后续寻址开销非常大。