这是我参与「第四届青训营 」笔记创作活动的的第6天。
HDFS原理
HDFS(Hadoop Distributed File System)是一个分布式文件系统。它具有高容错性并提供了高吞吐量的数据访问,非常适合大规模数据集上的应用,它提供了一个高度容错性和高吞吐量的海量数据存储解决方案。
- 高吞吐量访问: HDFS 的每个 Block 分布在不同的 Rack 上,在用户访问时,HDFS 会计算使用最近和访问量最小的服务器给用户提供。由于 Block 在不同的 Rack 上都有备份,所以不再是单数据访问,速度和效率是非常快的。另外 HDFS 可以并行从服务器集群中读写,增加了文件读写的访问带宽。 - 容错性: 系统故障不可避免,如何做到故障之后的数据恢复和容错处理是至关重要的。HDFS 通过多方面保证数据的可靠性,多份复制并且分布到物理位置的不同服务器上,数据校验功能、后台的连续自检数据一致性功能都为高容错提供了可能。 - 线性扩展: 因为 HDFS 的 Block 信息存放到 NameNode 上,文件的 Block 分布到 DataNode 上,当扩充的时候仅仅添加 DataNode 数量,系统可以在不停止服务的情况下做扩充,不需要人工干预。
HDFS框架
- DataNode
DataNode负责文件数据的存储和读写操作,HDFS将文件数据分割成若干数据块( Block ) ,每个DataNode存储一部分数据块,这样文件就分布存储在整个HDFS 服务器集群中。应用程序客户端( Client )可以并行对这些数据块进行访问,从而使得HDFS可以在服务器集群规模上实现数据并行访问,极大地提高了访问速度。
- NameNode
NameNode负责整个分布式文件系统的元数据(MetaData )管理,也就是文件路径名、数据块的ID以及存储位置等信息,相当于操作系统中文件分配表(FAT )的角色。HDFS为了保证数据的高可用,会将一个数据块复制为多份(默认3份),并将多份相同的数据块存储在不同的机架的服务器上。这样当有磁盘损坏,或者某个DataNode服务器宕机,甚至某个交换机宕机时,系统能通过其备份的数据块进行查找。