iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Hadoop源码分析五hdfs架构原理剖析
  • 385
分享到

Hadoop源码分析五hdfs架构原理剖析

2024-04-02 19:04:59 385人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1、 hdfs架构如果在hadoop配置时写的配置文件不同,启动的服务也有所区别namenode的下方是三台datanode。namenode左右两边的是两个zkfc。namen

1、 hdfs架构

在本系列文章三中出现了与hdfs相关的数个服务。

如果在hadoop配置时写的配置文件不同,启动的服务也有所区别

按照本系列文章二中的配置,会启动以下服务:namenodejournalnodedatanodezkfc。其关系如图:

在这里插入图片描述

从图中可以看出namenode是绝对的中心节点,所有的节点都会和它进行交互。图中namenode有两台,一台为active,另一台为standby。其中active是正常提供namenode服务,standby不对外提供服务,它负责及时同步active的数据,并在active故障的时候转换为active继续提供服务。

namenode的下方是三台datanode。

datanode负责存储集群中的数据,并向namenode汇报其存储数据的情况。

namenode左右两边的是两个zkfc。

它负责的是namenode的故障转移,在active的namenode故障的时候,由zkfc将standby的namenode转换为active。zkfc上方连接的是ZooKeeper,它对namenode的故障转移是依靠zookeeper来实现的。

namenode的上方是三台journalnode集群。

journalnode负责存储namenode的日志文件,由active的namenode向journalnode写入,standby的namenode不会向journalnode写日志,standby主要会从其中读取日志文件。

注意,这里的日志文件不是普通的运行日志,而是namenode的操作日志。例如,客户端向hdfs上传了一个文件,这时namenode会执行一系列操作来完成这次上传,而这些操作连同操作方式与操作内容一起写到操作日志中(journalnode中),通过这些操作日志可以还原这次上传操作。

2、 namenode介绍

namenode作为hdfs的核心,它主要的作用是管理文件的元数据

元数据主要包括三类:文件的命名空间、文件与块的对应关系、块的存储位置。

文件与块的对应关系中的块

是由于hdfs在存储文件的时候并不是将整个文件将存储在某一台datanode上,而是将文件按照指定的大小切割成一定数量的块。

namenode负责管理hdfs的元数据

这意味着所有与hdfs相关的操作都需要与namenode进行交互。这样namenode的速度就不能太慢,所以namenode将元数据存储在内存中。但是数据不能只存储在内存中,所以这时需要将数据持久化到硬盘中。

namenode的数据持久化,采用了一种日志加快照的方式

日志即上文提到的操作日志,快照即将内存中的数据状态直接序列化到硬盘。在安装集群的时候会先格式化namenode,这时便会创建一个快照文件,名为fsimage。然后在namenode运行的时候它会将操作日志写入到fsimage文件所在的文件夹中。这里根据配置的不同写入的路径有所不同。如果使用本系列文章二中的配置,这个日志文件还会被写到journalnode中。

最后还会有一个程序读取这个快照文件和日志文件

将数据恢复到最新的状态,然后再更新原来的快照文件。下一次再读取快照和日志文件的时候就只读最新的文件。这里的程序会根据配置的不同有所区别,按照本系列文章二中的配置来说,是standby的namenode。这里为什么不直接使用active的namenode执行更新fsimage文件,而是使用standby的namenode先读取active的日志,然后再重演一遍操作日志恢复数据再由standby的namenode更新fsimage文件。这是因为更新fsimage操作很费时间,由active的namenode执行会导致整个集群不可用。

以上就是Hadoop源码分析五hdfs架构原理剖析的详细内容,本系列下一篇文章传送门Hadoop源码分析六启动文件namenode原理详解更多关于Hadoop源码分析的资料请持续关注编程网更新!

--结束END--

本文标题: Hadoop源码分析五hdfs架构原理剖析

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hadoop源码分析五hdfs架构原理剖析
    目录1、 hdfs架构如果在hadoop配置时写的配置文件不同,启动的服务也有所区别namenode的下方是三台datanode。namenode左右两边的是两个zkfc。namen...
    99+
    2024-04-02
  • HDFS原理剖析
    一、概述 HDFS是Hadoop的分布式文件系统(Hadoop Distributed File System),实现大规模数据可靠的分布式读写。HDFS针对的使用场景是数据读写具有“一次写,多次读”的特征,而数据“写”操作是顺序写,也就是...
    99+
    2023-08-30
    hdfs hadoop 大数据
  • Hadoop分布式文件系统HDFS架构分析
    本文小编为大家详细介绍“Hadoop分布式文件系统HDFS架构分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Hadoop分布式文件系统HDFS架构分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Hadoo...
    99+
    2023-06-27
  • Hadoop源码分析一架构关系简介
    1、 简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构 Hadoop起源于谷歌发布的三篇论文:GFS、MapReduce、BigTable。其中GFS是谷歌的分...
    99+
    2024-04-02
  • Hadoop源码分析三启动及脚本剖析
    目录1、 启动2、 脚本分析start-all.sh脚本内容如下:start-dfs.sh的内容如下:启动上述角色调用的hadoop-daemons.sh脚本内容如下:我们继续看ha...
    99+
    2024-04-02
  • python架构PyNeuraLogic源码分析
    这篇“python架构PyNeuraLogic源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python架构PyNe...
    99+
    2023-07-05
  • Hadoop体系结构之HDFS的示例分析
    这篇文章将为大家详细讲解有关Hadoop体系结构之HDFS的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。    HDFS采用主从(Master/Slave)结构模型,一个HD...
    99+
    2023-06-03
  • Go defer 原理和源码剖析(推荐)
    目录1. 编译器编译 defer 过程2. defer 传递参数3. 执行多条 defer4. defer 和 return 运行顺序Go 语言中有一个非常有用的保留字 defer,...
    99+
    2024-04-02
  • Hadoop源码分析六启动文件namenode原理详解
    1、 namenode启动 在本系列文章三中分析了hadoop的启动文件,其中提到了namenode启动的时候调用的类为 org.apache.hadoop.hdfs.server...
    99+
    2024-04-02
  • vue源码架构的示例分析
    这篇文章将为大家详细讲解有关vue源码架构的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下载去github上下载Vue https://github.com/v...
    99+
    2024-04-02
  • 深入剖析理解AsyncGetCallTrace源码底层原理
    目录前言源码实现核心数据结构函数申明AsyncGetCallTrace 实现pd_get_top_frame_for_signal_handler 实现pd_get_top_fram...
    99+
    2024-04-02
  • java中TESTful架构原理分析
    目录1. 什么是REST2. 理解RESTful2. 1 资源与URI2. 2 统一资源接口GETPOSTPUTDELETE2. 3 资源的表述在URI里边带上版本号使用URI后缀来...
    99+
    2024-04-02
  • Go defer 原理和源码剖析是怎样的
    本篇文章为大家展示了Go defer 原理和源码剖析是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Go 语言中有一个非常有用的保留字 defer,它可以调用一个函数,该函数的执行被推迟到包裹...
    99+
    2023-06-25
  • openstack云计算keystone架构源码分析
    目录keystone架构Keystone APIRouterServices(1) Identity Service(2) Resource Service(3) Assignmen...
    99+
    2024-04-02
  • Vue解读之响应式原理源码剖析
    目录初始化initState()initProps()initData()observe()ObserverdefineReactive()依赖收集DepWatcher依赖收集过程移...
    99+
    2024-04-02
  • python源码剖析之PyObject的示例分析
    这篇文章主要介绍python源码剖析之PyObject的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、Python中的对象Python中一切皆是对象。————Guido van Rossum(1989)这...
    99+
    2023-06-15
  • jvm原理之SystemGC源码分析
    概述 JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,...
    99+
    2024-04-02
  • SpringMVC框架REST架构体系原理分析
    目录资源(Resource)表现层(Representation)状态转换(State Transfer)如何使用1.在Handler写出增删改查的方法2.Repository资源(...
    99+
    2024-04-02
  • SpringBoot源码剖析之属性文件加载原理
    目录前言1.找到入口2.ConfigFileApplicationListener2.1 主要流程分析2.2 Loader构造器2.3 properties加载总结 前言 ...
    99+
    2024-04-02
  • 如何进行Spring源码剖析AOP实现原理
    今天就跟大家聊聊有关如何进行Spring源码剖析AOP实现原理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言前面写了六篇文章详细地分析了Spring Bean加载流程,这部分完了...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作