分布式文件系统HDFS基本原理
HDFS是一个分布式文件系统,具有良好的扩展性、容错性以及易用的API。核心思想是将文件切分成等大的数据块,以多副本的形式存储到多个节点上。HDFS采用了经典的主从软件架构,其中主服务被称为NameNode,管理文件系统的元信息,而从服务被称为DataNode,存储实际的数据块,DataNode与NameNode维护了周期性的心跳,为了防止NameNode出现单点故障,HDFS允许一个集群中存在主备NameNode,并通过ZooKeeper完成Active NameNode的选举工作。HDFS提供了丰富的访问方式,用户可以通过HDFS shell,HDFS API,数据收集组件以及计算框架等存取HDFS上的文件。
一、分布式文件系统背景
在大数据场景中,存在两种解决方案:纵向扩展(scale-up)和横向扩展(scale-out)。
纵向扩展利用现有的存储系统,通过不断增加存储容量来满足数据增长的需求;
横向扩展则是以网络连接的节点为单位扩大存储容量(集群)。
由于纵向扩展存在价格昂贵、升级困难以及总存在物理瓶颈等问题,大数据领域通常会采用横向扩展方案。横向扩展的难点在于如何构建一个分布式文件系统,解决以下这些问题。
- 因故障导致丢失数据:横向扩展集群中采用的节点通常是普通的商用服务器,因机械故障、网络故障、人为失误、软件bug等原因导致服务器宕机或服务挂掉是常见的现象,这就要求分布式文件系统能够很好地处理各种故障。(即良好的容错性)。
- 文件通常较大:在大数据应用场景中,GB级别的文件是很常见的,且这样的文件数量极多,这与传统文件系统的使用场景是很不同的,这就要求分布式文件系统在IO操作以及块大小方面进行重新设