热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

HDFS——HDFS整体设计架构和原理

在我们学习HDFS之前,首先要了解分布式文件系统的概念,分布式文件系统有很多,HDFS只是其中的一种而已。那么分布式文件系统是什么呢,又有哪些优

    在我们学习HDFS之前,首先要了解分布式文件系统的概念,分布式文件系统有很多,HDFS只是其中的一种而已。那么分布式文件系统是什么呢,又有哪些优点?

    随着现在数据量越来越多,在一个操作系统管辖的范围存不下了,那么就需要分配到更多的操作系统管理的磁盘中,但是这样又不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就产生了分布式文件管理系统。

    分布式文件系统是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。分布式文件系统主要有下面两个特点:

      1)通透性。让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地磁盘一般。

      2)容错性。即使系统中有某些结点脱机,整体来说系统仍然可以持续运作而不会有数据丢失。(这一点后面会详细解释)

    分布式文件系统有很多,hafs只是其中一种。适用于一次写入多次查询的情况,不支持并发写操作,小文件不适合。(下面也会解释)

HDFS设计架构

    我们先看一下系统体系图

    

    想要看懂这张图,我们先得了解这几个基本概念:

    块(block):我们可以看到图中有 “读取数据块” 的字样,那么数据块是什么呢?块在文件系统里面通常是指固定大小的逻辑单元,HDFS的文件就是被分成块进行存储,每个HDFS块的默认大小是64MB。我们做文件的备份和查找也都是以块为单元进行的,那么这么做的好处是什么?

    NameNode:管理节点,存放元数据,元数据又包括两个部分:1.文件与数据块的映射表,2.数据块与数据节点的映射表。这里也就可以解释为什么HDFS不适合存储小文件了,因为不管是存大文件或是小文件都是需要在NameNode里写入元数据,显然存小文件是不划算的。

    DataNode:HDFS的工作节点,存放数据块。

    HDFS为了保证对硬件上的容错,对任何一个数据块都是默认存三份,因为任何一个节点都可能发生故障,为了保证数据不被丢失,数据块就有多分冗余。

    在上图中,A,B,C,D都是64MB的数据块,而且默认都有三份,其中两份在同一机架上,在另一个机架上也有一份。这样即使一个节点挂了,还可以在同一机架的另一个节点上找到相同数据块。即使整个机架挂了,也可以在另一个机架上找到。

    我们可以举个例子来理解整个过程:NameNode 相当于一个仓库管理员,他需要维护自己的一个账本,而 DataNode 相当于一个仓库,在仓库里面存放数据,客户端相当于送货人或者提货人。当我们要存数据(货物)的时候,送货人想将货物放到仓库里,首先要跟仓库管理员打交道,即发送一个请求,仓库管理员先查看账本(包含各个仓库的信息),看看哪些仓库可以用之类的,然后告诉送货员你把货物送到某个仓库里面去

心跳检测

    每个DataNode定期向NameNode发送心跳消息,来汇报自己的状况:是否还处于Active状态,网络是否断开之类的。

    

Secondary NameNode

    二级 NameNode ,定期同步元数据映像文件和修改日志,当 NameNode 发生故障时,Secondary NameNode可用来恢复文件系统。为了防止 NameNode 发生故障时,元数据丢失。大部分情况下,当NameNode 正常工作时,Secondary NameNode 只做备份工作,而不接受请求。

    切记:Secondary NameNode 不是 NameNode 的热备进程,也就是说它是无法直接替代 NameNode 进行工作的

    


推荐阅读
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 该平台旨在为大型企业提供一个高效、灵活且可扩展的分布式微服务架构解决方案。它采用模块化、微服务化和热部署的设计理念,结合当前最先进且无商业限制的主流开源技术,如Spring Cloud、Spring Boot2、MyBatis、OAuth2和Element UI,实现前后端分离的系统管理平台。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 从码农到创业者:我的职业转型之路
    在观察了众多同行的职业发展后,我决定分享自己的故事。本文探讨了为什么大多数程序员难以成为架构师,并阐述了我从一家外企离职后投身创业的心路历程。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 在本周的白板演练中,Apache Flink 的 PMC 成员及数据工匠首席技术官 Stephan Ewen 深入探讨了如何利用保存点功能进行流处理中的数据重新处理、错误修复、系统升级和 A/B 测试。本文将详细解释保存点的工作原理及其应用场景。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
author-avatar
温倩0918
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有