返回顶部
首页 > 资讯 > 精选 >Hadoop分布式文件系统HDFS架构分析
  • 420
分享到

Hadoop分布式文件系统HDFS架构分析

2023-06-27 14:06:47 420人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“hadoop分布式文件系统hdfs架构分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Hadoop分布式文件系统HDFS架构分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Hadoo

本文小编为大家详细介绍“hadoop分布式文件系统hdfs架构分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Hadoop分布式文件系统HDFS架构分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Hadoop分布式文件系统(HDFS)是一种基于Java的分布式文件系统,它具有容错性、可伸缩性和易扩展性等优点,它可在商用硬件上运行,也可以在低成本的硬件上进行部署。HDFS是一个分布式存储的Hadoop应用程序,它提供了更接近数据的接口。

HDFS架构

hdfs架构图如下图所示:

Hadoop分布式文件系统HDFS架构分析

HDFS具有主/从架构。HDFS集群由单个Namenode,和多个datanode构成。

NameNode:管理文件系统命名空间的主服务器和管理客户端对文件的访问组成,如打开,关闭和重命名文件和目录。负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系,维护目录树,接管用户的请求。如下图所示:

Hadoop分布式文件系统HDFS架构分析

将文件的元数据保存在一个文件目录树中2、在磁盘上保存为:fsimage 和 edits3、保存datanode的数据信息的文件,在系统启动的时候读入内存。

DataNode:(数据节点)管理连接到它们运行的节点的存储,负责处理来自文件系统客户端的读写请求。DataNodes还执行块创建,删除

Client:(客户端)代表用户通过与nameNode和datanode交互来访问整个文件系统,HDFS对外开放文件命名空间并允许用户数据以文件形式存储。用户通过客户端(Client)与HDFS进行通讯交互。

**块和复制:**我们都知道linux操作系统中的磁盘的块的大小默认是512,而hadoop2.x版本中的块的大小默认为128M,那为什么hdfs中的存储块要设计这么大呢?其目的是为了减小寻址的开销。只要块足够大,磁盘传输数据的时间必定会明显大于这个块的寻址时间。

那为什么要以块的形式存储文件,而不是整个文件呢?1、因为一个文件可以特别大,可以大于有个磁盘的容量,所以以块的形式存储,可以用来存储无论大小怎样的文件。2、简化存储系统的设计。因为块是固定的大小,计算磁盘的存储能力就容易多了3、以块的形式存储不需要全部存在一个磁盘上,可以分布在各个文件系统的磁盘上,有利于复制和容错,数据本地化计算

块和复本在hdfs架构中分布如下图所示:

Hadoop分布式文件系统HDFS架构分析

既然namenode管理着文件系统的命名空间,维护着文件系统树以及整颗树内的所有文件和目录,这些信息以文件的形式永远的保存在本地磁盘上,分别问命名空间镜像文件fsimage和编辑日志文件Edits。datanode是文件的工作节点,根据需要存储和检索数据块,并且定期的向namenode发送它们所存储的块的列表。那么就知道namenode是多么的重要,一旦那么namenode挂了,那整个分布式文件系统就不可以使用了,所以对于namenode的容错就显得尤为重要了,hadoop为此提供了两种容错机制

就是通过对那些组成文件系统的元数据持久化,分别问命名空间镜像文件fsimage(文件系统的目录树)和编辑日志文件Edits(针对文件系统做的修改操作记录)。磁盘上的映像FsImage就是一个Checkpoint,一个里程碑式的基准点、同步点,有了一个Checkpoint之后,NameNode在相当长的时间内只是对内存中的目录映像操作,同时也对磁盘上的Edits操作,直到关机。下次开机的时候,NameNode要从磁盘上装载目录映像FSImage,那其实就是老的Checkpoint,也许就是上次开机后所保存的映像,而自从上次开机后直到关机为止对于文件系统的所有改变都记录在Edits文件中;将记录在Edits中的操作重演于上一次的映像,就得到这一次的新的映像,将其写回磁盘就是新的Checkpoint(也就是fsImage)。但是这样有很大一个缺点,如果Edits很大呢,开机后生成原始映像的过程也会很长,所以对其进行改进:每当 Edits长到一定程度,或者每隔一定的时间,就做一次Checkpoint,但是这样就会给namenode造成很大的负荷,会影响系统的性能。于是就有了SecondaryNameNode的需要,这相当于NameNode的助理,专替NameNode做Checkpoint。当然,SecondaryNameNode的负载相比之下是偏轻的。所以如果为NameNode配上了热备份,就可以让热备份兼职,而无须再有专职的SecondaryNameNode。所以架构图如下图所示:

Hadoop分布式文件系统HDFS架构分析

SecondaryNameNode工作原理图:

Hadoop分布式文件系统HDFS架构分析

SecondaryNameNode主要负责下载NameNode中的fsImage文件和Edits文件,并合并生成新的fsImage文件,并推送给NameNode,工作原理如下:

secondarynamenode请求主namenode停止使用edits文件,暂时将新的写操作记录到一个新的文件中;2、secondarynamenode从主namenode获取fsimage和edits文件(通过Http get)3、secondarynamenode将fsimage文件载入内存,逐一执行edits文件中的操作,创建新的fsimage文件。4、secondarynamenode将新的fsimage文件发送回主namenode(使用http post).5、namenode用从secondarynamenode接收的fsimage文件替换旧的fsimage文件;用步骤1所产生的edits文件替换旧的edits文件。同时,还更新fstime文件来记录检查点执行时间。6、最终,主namenode拥有最新的fsimage文件和一个更小的edits文件。当namenode处在安全模式时,管理员也可调用hadoop dfsadmin –saveNameSpace命令来创建检查点。

从上面的过程中我们清晰的看到secondarynamenode和主namenode拥有相近内存需求的原因(因为secondarynamenode也把fsimage文件载入内存)。因此,在大型集群中,secondarynamenode需要运行在一台专用机器上。

创建检查点的触发条件受两个配置参数控制。通常情况下,secondarynamenode每隔一小时(有fs.checkpoint.period属性设置)创建检查点;此外,当编辑日志的大小达到64MB(有fs.checkpoint.size属性设置)时,也会创建检查点。系统每隔五分钟检查一次编辑日志的大小。

三、HDFS读数据流程

HDFS读数据流程如下图所示:

Hadoop分布式文件系统HDFS架构分析

客户端通过FileSystem对象(DistributedFileSystem)的open()方法来打开希望读取的文件。

DistributedFileSystem通过远程调用(rpc)来调用namenode,获取到每个文件的起止位置。对于每一个块,namenode返回该块副本的datanode。这些datanode会根据它们与客户端的距离(集群的网络拓扑结构)排序,如果客户端本身就是其中的一个datanode,那么就会在该datanode上读取数据。DistributedFileSystem远程调用后返回一个FSDatainputStream(支持文件定位的输入流)对象给客户端以便于读取数据,然后FSDataInputStream封装一个DFSInputStream对象。该对象管理datanode和namenode的IO。

客户端对这个输入流调用read()方法,存储着文件起始几个块的datanode地址的DFSInputStream随即连接距离最近的文件中第一个块所在的datanode,通过数据流反复调用read()方法,可以将数据从datanode传送到客户端。当读完这个块时,DFSInputStream关闭与该datanode的连接,然后寻址下一个位置最佳的datanode。

客户端从流中读取数据时,块是按照打开DFSInputStream与datanode新建连接的顺序读取的。它也需要询问namenode来检索下一批所需块的datanode的位置。一旦客户端完成读取,就对FSDataInputStream调用close()方法。

注意:在读取数据的时候,如果DFSInputStream在与datanode通讯时遇到错误,它便会尝试从这个块的另外一个临近datanode读取数据。他也会记住那个故障datanode,以保证以后不会反复读取该节点上后续的块。DFSInputStream也会通过校验和确认从datanode发送来的数据是否完整。如果发现一个损坏的块, DFSInputStream就会在试图从其他datanode读取一个块的复本之前通知namenode。

读到这里,这篇“Hadoop分布式文件系统HDFS架构分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Hadoop分布式文件系统HDFS架构分析

本文链接: https://lsjlt.com/news/311229.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Hadoop分布式文件系统HDFS架构分析
    本文小编为大家详细介绍“Hadoop分布式文件系统HDFS架构分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Hadoop分布式文件系统HDFS架构分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Hadoo...
    99+
    2023-06-27
  • 分布式文件系统HDFS的示例分析
    小编给大家分享一下分布式文件系统HDFS的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 从RAID说起大数据技术主要要解决的问题的是大规模数据的计算处理问题,那么首先要解决的就是大规模数据的存储问题。大规模数据存...
    99+
    2023-06-19
  • HDFS分布式文件系统如何设计
    这篇文章将为大家详细讲解有关HDFS分布式文件系统如何设计,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。正文HDFS的设计以及概念  HDFS集群是典型的 master/slave 架构,master 节...
    99+
    2023-06-02
  • Hadoop源码分析五hdfs架构原理剖析
    目录1、 hdfs架构如果在hadoop配置时写的配置文件不同,启动的服务也有所区别namenode的下方是三台datanode。namenode左右两边的是两个zkfc。namen...
    99+
    2024-04-02
  • Hadoop体系结构之HDFS的示例分析
    这篇文章将为大家详细讲解有关Hadoop体系结构之HDFS的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。    HDFS采用主从(Master/Slave)结构模型,一个HD...
    99+
    2023-06-03
  • 分布式与服务化的ERP系统架构设计分析
    本篇内容主要讲解“分布式与服务化的ERP系统架构设计分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分布式与服务化的ERP系统架构设计分析”吧!ERP之痛曾几何时,我混迹于电商、珠宝行业4年多...
    99+
    2023-06-02
  • PHP 分布式系统架构与实践
    php 分布式系统架构通过将不同组件分布在网络互联的机器上实现可伸缩性、性能和容错性。该架构包括应用服务器、消息队列、数据库、缓存和负载均衡器。将 php 应用迁移到分布式架构的步骤包括...
    99+
    2024-05-04
    php 分布式系统 laravel docker 库存管理
  • 架构解析:Go WaitGroup在分布式系统中的应用
    在分布式系统中,Go的WaitGroup可以用于协调并发任务的执行。WaitGroup是一个计数信号量,可以用于等待一组并发任务完成...
    99+
    2023-10-08
    Golang
  • j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 分布式架构
    介绍<modules>        <!-- jeesz 工具jar -->   &nbs...
    99+
    2024-04-02
  • 怎样分析JEESZ分布式架构平台
    这期内容当中小编将会给大家带来有关怎样分析JEESZ分布式架构平台,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.   项目核心代码结构截图<!-- jeesz 工具jar -...
    99+
    2023-06-03
  • Hadoop源码分析一架构关系简介
    1、 简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构 Hadoop起源于谷歌发布的三篇论文:GFS、MapReduce、BigTable。其中GFS是谷歌的分...
    99+
    2024-04-02
  • jeesz分布式架构-分布式高可用
    版权声明:本文为博主原创文章,未经博主允许不得转载。什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务...
    99+
    2024-04-02
  • 分布式微服务云架构实例分析
    今天就跟大家聊聊有关分布式微服务云架构实例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。源码结构JEESZ驱动式项目构建内置高效可靠的代码生成器支持多种数据模型,根据数据库表生成...
    99+
    2023-06-05
  • 分析Java分布式系统原理
    这篇文章主要讲解了“分析Java分布式系统原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分析Java分布式系统原理”吧!1 概念1.1 模型节点在具体的...
    99+
    2024-04-02
  • web分布式系统架构有哪些优缺点
    这篇文章主要介绍了web分布式系统架构有哪些优缺点的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web分布式系统架构有哪些优缺点文章都会有所收获,下面我们一起来看看吧。分布式系统是支持分布式处理的软件系统,是由...
    99+
    2023-06-05
  • Linux文件分布式系统是什么
    这篇文章主要介绍“Linux文件分布式系统是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux文件分布式系统是什么”文章能帮助大家解决问题。Lustre(www.lustre.org)  ...
    99+
    2023-06-28
  • linux有什么分布式文件系统
    今天小编给大家分享一下linux有什么分布式文件系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-03-22
    linux
  • 分布式系统中的缓存架构如何实现?
    分布式系统中的缓存架构如何实现? 在分布式系统中,缓存被广泛应用于提高系统性能和减少数据访问延迟。缓存是一种用于存储和管理数据的技术,它可以将数据存储在快速存储介质中,以便快速访问和检索。在这篇文章中,我们将探讨分布式系统中的缓存架构如何实...
    99+
    2023-10-05
    缓存 分布式 编程算法
  • 怎样从Elasticsearch来看分布式系统架构设计
    本篇文章给大家分享的是有关怎样从Elasticsearch来看分布式系统架构设计,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。分布式系统类型多,涉及面非常广,不同类型的系统有不...
    99+
    2023-06-05
  • Moosefs分布式文件系统集群讲解配置的示例分析
    这篇文章给大家介绍Moosefs分布式文件系统集群讲解配置的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1 管理服务器(master-server):负责各个数据存储服务器的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作