hdfs原理

Hbase技术原理及优化措施研究

Hdfs简介

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

Hdfs原理

2.1 结构

Hdfs集群中包含三种类型的节点,namenode、secondaryNameNode,datanode。其结构图如下

        1. Namenode负责管理文件系统的命名空间和客户端对文件的访问。NameNode会保存文件系统的具体信息,包括文件信息、文件被分割成具体block块的信息、以及每一个block块归属的DataNode的信息。

        2. Datanode负责存储数据,hdfs中所有的文件都存储在datanode中。文件以block的形式存储在datanode中。Datanode周期性的将其所有的block块信息发送给NameNode。

        3. Namenode存放文件系统树及所有文件、目录的元数据。元数据持久化为2种形式:namespcae image(fileImage)、edit log。Secondary节点定期合并主Namenode的namespace image和edit log, 避免edit log过大,通过创建检查点checkpoint来合并。它会维护一个合并后的namespace image副本, 可用于在Namenode完全崩溃时恢复数据。

2.2 文件写入原理

业务应用调用HDFS Client提供的API打开文件

        1. HDFS Client联系Namenode获取到文件信息(数据块、datanode位置信息)

        2. 业务应用调用read API读取文件

        3. HDFS Client根据从Namenode获取到的信息,联系Datanode,获取的相应数据块(Client采用就近原则读取数据)

        4. HDFS Client会与多个Datanode通讯获取数据块

        5. 数据读取完成后,业务调用close关闭连接


2.3 文件读取原理


2.4 目录合并原理

        1. SecondaryNameNode会定期和NameNode通信,请求其停止使用EditLog文件,暂时将新的写操作写到一个新的文件edit.new上来,这个操作是瞬间完成,上层写日志的函数完全感觉不到差别;

       2.  SecondaryNameNode通过HTTP GET方式从NameNode上获取到FsImage和EditLog文件,并下载到本地的相应目录下;

       3. SecondaryNameNode将下载下来的FsImage载入到内存,然后一条一条地执行EditLog文件中的各项更新操作,使得内存中的FsImage保持最新;这个过程就是EditLog和FsImage文件合并;

       4. SecondaryNameNode执行完(3)操作之后,会通过post方式将新的FsImage文件发送到NameNode节点上

       5. NameNode将从SecondaryNameNode接收到的新的FsImage替换旧的FsImage文件,同时将edit.new替换EditLog文件,通过这个过程EditLog就变小了

        

参考资料: https://blog.csdn.net/weixin_38750084/article/details/82963235

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容