Hadoop理论及实践-HDFS四大组件关系(参考Hadoop官网)

news/2024/5/20 4:51:50 标签: hadoop, hdfs, 大数据

NameNode(名称节点,Master主节点)

NameNode主要功能

        1、NameNode负责管理HDFS文件系统的元数据,包括文件,目录,块信息等。它将元数据Fsimage与Edit_log持久化到硬盘上。一个是Fsimage(镜像文件),一个是Edit_log(操作日志)。

        Fsimage是一个静态映像,保存了文件系统的整体状态信息,包括文件、目录结构、权限、块信息等,它记录了文件和目录的层次结构以及其属性;

        edit_log则包含了最近发生的文件系统变更的日志记录。通过这两个文件,NameNode能够恢复文件系统的状态。(下头有一个小案例)

       2、当客户端请求读取文件时,NameNode会确定该文件的位置信息,并将这些信息返回给客户端,以便客户端可以直接与相应的DataNode进行通信并获取所需数据。

突然断电恢复时HDFS做了什么(IM理论)

        当突然断电并重新启动时,Fsimage与Edit_log在恢复中起着很大的作用。

        第一步,Fsimage是HDFS的元数据镜像文件,保存了文件系统整体状态信息,包括文件、目录结构,权限,块信息等,他记录了文件和目录层次结构及属性。HDFS重启时,会先读取NameNode中的Fsimage文件,恢复文件系统初始状态。

        第二步,Edit_log是HDFS的事务日志文件,用于记录所有对文件系统的修改操作,例如创建,删除,重命名文件或者目录等。每个修改操作都被追加到Editlog中,确保对文件系统更改的持久化记录。HDFS重启后,程序会读取Editlog文件,并将其中的每个操作应用到初始状态的文件系统中,以此恢复文件系统的最新状态。

        在HDFS突然断电并重新启动时,系统通过读取Fsimage文件来恢复文件系统的初始状态,然后再将Editlog中的操作应用到初始状态的文件系统,实现文件系统的完全恢复。保证了数据的一致性和可靠性,避免数据丢失或损坏。(很重要!)

Checkpoint机制(检查点)

checkpoint功能:HDFS为了将Fsimage与Editlog文件合并成完整的文件系统镜像而使用的一种机制。

        Edits文件和Fsimage文件的合并关系是通过Checkpoint过程实现的,Checkpoint将当前的Fsimage文件和最新的Edits文件合并为一个新的Fsimage文件,从而得到最新的文件系统镜像。

checkpoint流程:执行Checkpoint过程时,HDFS会首先将当前的Fsimage文件复制到一个临时的目录中,随后将新的editlog文件追加到复制的Fsimage文件中,最后生成一个新的Fsimage文件。

        这个过程中确保了原始Fsimage文件不会被修改,同时保证了最新文件系统操作记录被正确应用到镜像中。

Secondary NameNode

        备注:老版本的Hadoop是Secondary NameNode干这个合并的活,协助NameNode执行一些管理任务。S N定期合并NameNode的Fsimage文件和Edits文件,生成新的Fsimage文件,以减少NameNode的启动时间和内存占用。

NameNode HA机制(High Availability)(IM)

        NameNode HA是HDFS的高可用性解决方案,它通过在集群中配置多个NameNode实例来提供故障转移和无缝切换的能力。

        在NN HA配置中,有两个NameNode实例,一个被称为Active NameNode,另一个被称为Standby NameNode。 Active NameNode负责处理客户端的请求,维护文件系统的元数据以及管理数据块的位置信息。Standby NameNode则处于备用状态,与Active NameNode保持同步,并监控其健康状态。

         在生产环境中,为避免NameNode宕机,HDFS无法提供服务,产生单点故障问题,因此HDFS通常会配置了一个备用的NameNode被称为Standby NameNode,用于提供冗余和故障转移。

DataNode(数据节点,worker节点)

DataNode主要功能

        1、DataNode是存储实际数据块的节点,它负责在本地磁盘上存储和管理数据块。

        2、与namenode保持心跳机制,同时上报块信息,执行namenode的操作

        DataNode通过与NameNode的交互,定期向NameNode报告所存储的数据块的列表和状态信息,发送心跳信号和块报告,以确保数据的完整性和可用性。

        3、存储和提供数据块给客户端

timeout  = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval
心跳 超时时间 10分钟 + 30秒

ZKFC(ZooKeeper故障转移控制器)IM

ZCFC主要功能

        ZKFC是HDFS的故障转移组件,它通过监视和控制活动NameNode和备用NameNode之间的状态来实现自动故障转移。

        它在主备NameNode之间进行状态同步,以便在主节点发生故障时,能够快速切换到备用节点。 

        ZKFC与和JournalNode紧密合作,通过与其通信来实现高可用性和容错性。

JournalNode(日志节点)

        JournalNode的功能用于存储和管理NameNode的操作日志,确保元数据更新的持久性。

        它接收来自NameNode的事务日志,并将其写入本地磁盘和共享存储中,以便在需要时进行恢复。分布式系统中,NameNode和其他JournalNode一起工作,构成了分布式的高可用日志系统,用于保证元数据的一致性和可靠性。

组件之间的联系

        NameNode是HDFS的核心,负责管理文件系统的命名空间和元数据。它通过与DataNode进行通信来读取和写入数据块。

        DataNode存储实际的数据块,向NameNode报告数据块的状态和位置信息。

        ZKFC通过与NameNode和JournalNode的交互,实现主备节点之间的状态同步和故障转移。

        JournalNode负责存储和管理NameNode的操作日志,为HDFS提供持久性和可靠性。它与NameNode和其他JournalNode一起工作,构成了分布式的高可用日志系统。

参考文章

https://hadoop.apache.org/ hadoop官网

https://www.cnblogs.com/shun7man/p/11521290.html

Hadoop 三大组件之HDFS_hdfs组件_不忘初欣丶的博客-CSDN博客


 


http://www.niftyadmin.cn/n/4925930.html

相关文章

ZLMediaKit(webrtc)在linux上(CentOS7)部署与启动

一.ZLMediaKit(webrtc)在CentOS7部署与启动 # 1. 卸载旧版本 yum remove git # 2. 安装 yum 源的 Git 版本 yum install -y git # 3. 查看版本 git version # 输出 git version 1.8.3.1配置全局环境变量 # 1. 编辑配置文件 vim /etc/profile # 2. 在 /etc/profile 文件中末尾…

ApplicationContext在Spring Boot中是如何创建的?

一、ApplicationContext在Spring Boot中是如何创建的? 1. SpringApplication ApplicationContextFactory有三个实现类,分别是AnnotationConfigReactiveWebServerApplicationContext.Factory、AnnotationConfigServletWebServerApplicationContext.Facto…

做BI领域的ChatGPT,思迈特升级一站式ABI平台

8月8日,以「指标驱动 智能决策」为主题,2023 Smartbi V11系列新品发布会在广州丽思卡尔顿酒店开幕。 ​ 后疫情时代,BI发展趋势的观察与应对 在发布会上,思迈特CEO吴华夫在开场致辞中表示,当前大环境背景下&#xf…

sentinel客户端和dashboard交互

回顾 在前面的章节中:通过阐述sentinel简单使用、滑动窗口、核心流程源码分析把sentinel限流、熔断等主要功能说明清楚了,但我们在实际使用的过程中,不可能通过硬编码的方式设置规则,且规则也没法直观的维护,为此肯定…

手游联运平台的运营模式是什么?

手游联运平台的运营模式是指通过平台将多款手游进行联运和推广,从而实现游戏开发商、发行商和渠道方之间的合作与合力,共同推动游戏的发展与推广。具体来说,手游联运平台的运营模式主要包括以下几个方面: 游戏接入:手…

fine-tuning(微调)的理解

fine-tuning 介绍 什么情况下使用微调 微调指导事项 不同数据集下使用微调 涉及到的其他知识 学习率(learning-rate) 卷积神经网络的核心 迁移学习与微调 什么是迁移学习 为什么要迁移学习 详细解释 自己的理解(不知道对不对) 介绍…

rust学习-同时执行多Future

只用 .await 来执行future,会阻塞并发任务,直到特定的 Future 完成 join!:等待所有future完成 可事实上为什么都是res1完成后再执行res2? join! 不保证并发执行,难道只负责同步等待? 示例 [package] name = "rust_demo5" version = "0.1.0" edit…

Android Studio实现Spinner下拉列表

效果图 点击下拉列表 点击某一个下拉列表 MainActivity package com.example.spinneradapterpro;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Spinn…