2.1 目标和动机
Apache Hadoop的重要组成部分是Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)。HDFS的设计初衷是为了支持高吞吐和超大文件的流式读写操作。传统的大型存储区域网络(Storage Area Network, SAN)和网络附加存储(Network Attached Storage, NAS)给TB级的块设备或文件系统提供了一种集中式的低延时数据访问解决方案。因为SAN和NAS支持全功能POSIX语法,具有很好的存储伸缩性和低延时访问等优点,所以可以完美地满足关系数据库、内容交付系统及类似数据的块存储要求。然而,试想一下这样的场景:成千上万台机器同时启动,并从集中式存储系统中同时读取成百TB的数据。传统存储技术不可能达到这样的规模!
为了解决这个问题,我们可以用一些独立的机器搭建一个高性价比系统。这个系统中的每台机器都拥有自己的I/O子系统、磁盘、RAM、网络接口、CPU,且支持部分POSIX功能(或按需求裁剪)。以下就是HDFS的一些特定目标。
- 可以存储几百万个大型文件,每个文件大小可以超过几十GB;文件系统的容量可达数十PB。
- 利用横向扩展模式(scale-out),使用基于磁盘簇(JBOD)而不是磁盘阵列(RAID)的普通商用服务器实现大规模数据存取,同时,在应用层完成数据复制以实现存储的可用性和高吞吐率。
- 优化是针对大型文件的流式读写操作,而不是为了满足小文件的低延时访问。批量处理的性能比互动响应的实时性更加重要。
- 能容忍机器某些部件故障和磁盘失效。
- 支持MapReduce处理所需要的功能与规模要求,详细内容请阅读第3章。
尽管HDFS可以不依赖MapReduce而独立应用于大型数据集的存储,但如果将它们结合在一起,系统就会如虎添翼。例如,利用HDFS将输入数据分割成数据块分别存储在不同机器上的特点,MapReduce可以将计算任务分配给数据块所在的机器,从而实现数据读取的本地化,提高系统的效率。
时间: 2024-10-05 18:59:33