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

news2024/11/17 1:28:40

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.coloradmin.cn/o/853103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++遍历当前windows目录

前言 设置vs的高级属性为使用多字节字符集&#xff0c;不然会报char类型的实参与LPCWSTR类型的形参类型不兼容的错误 代码 #include <iostream> #include <cstring> #include <windows.h>void listFiles(const char* dir);int main() {using namespace st…

APT80DQ60BG-ASEMI快恢复二极管APT80DQ60BG

编辑&#xff1a;ll APT80DQ60BG-ASEMI快恢复二极管APT80DQ60BG 型号&#xff1a;APT80DQ60BG 品牌&#xff1a;ASEMI 芯片个数&#xff1a;双芯片 封装&#xff1a;TO-3P 恢复时间&#xff1a;≤80ns 工作温度&#xff1a;-55C~150C 浪涌电流&#xff1a;600A 正向电…

企业如何挑选适合自己需求的文件传输软件

随着科技的日新月异&#xff0c;文件传输已成为我们生活中不可或缺的一部分。无论是在工作场合还是在日常生活中&#xff0c;我们经常需要传输各种格式和大小的文件&#xff0c;如文档、照片、音频和视频等。然而&#xff0c;在选择适合自己需求的文件传输软件时&#xff0c;很…

postgresql|数据库|角色(用户)管理工作---授权和去权以及usage和select两种权限的区别

前言&#xff1a; postgresql做为一个比较复杂的关系型的重型数据库&#xff0c;不管是安装部署&#xff0c;还是后期的运行维护&#xff0c;都还是有比较多的细节问题需要引起关注。 例如&#xff0c;用户权限的合理分配&#xff0c;那么&#xff0c;什么是权限的合理分配呢…

使用js开发交互式地图应用

引言&#xff1a; 如今&#xff0c;地图应用已经成为我们日常生活中重要的一部分。无论是寻找路线、查看附近的商店还是探索未知的地区&#xff0c;地图应用都帮助我们轻松实现这些需求。在本文中&#xff0c;我们将学习使用js开发一个交互式地图应用&#xff0c;并加入代码示例…

小红书种草笔记怎么写标题更吸引人?

小红书作为我国领先的社交电商平台&#xff0c;种草笔记更是以其独特的形式和内容吸引了大量用户。如何写好一篇种草笔记的标题&#xff0c;成为了许多小红书用户关注的焦点。如何在小红书上写出一篇高质量的种草笔记&#xff0c;吸引万千粉丝关注&#xff1f;本文伯乐网络传媒…

nginx部署本地umi build项目

一、安装 brew install nginxBrew 安装可以参考网上教程 https://juejin.cn/post/6986190222241464350 安装后启动nginx服务查看是否成功 brew services start nginx启动报错 Error: undefined method launchd_service_path‘ for xxx 解决&#xff1a;更新brew brew updat…

基于vue-admin-template的动态路由的问题解决

基于vue-admin-template的动态路由的问题解决 1.问题一&#xff1a;页面无法显示 控制台报如下错误&#xff1a; 首先经过一番网上搜索&#xff0c;有说是webpack的原因&#xff0c;调试后发现不是&#xff0c;然后再排查后台返回的组件地址。 由于我的前端拼接组件地址的代…

使用威胁情报源可为大家提供更好的DDoS防护

DDoS&#xff08;分布式拒绝服务&#xff09;攻击已成为各种企业&#xff08;小到区域性小公司大到各种跨国公司&#xff09;的主要威胁&#xff0c;DDoS 攻击可能会对企业造成重大损害和破坏&#xff0c;比如对目标公司的声誉产生不利影响并导致收入损失。这也是为什么现在许多…

c++map和set剖析

文章参考文献&#xff1a;cplusplus 博主&#xff1a;拖拉机厂第一代码手 gitee:拖拉机厂第一代码手 c专栏&#xff1a;C 目录 &#x1f9d9;&#x1f3fc;‍♂set剖析&#x1f9da;&#x1f3fc;set简介&#x1f9da;&#x1f3fc;set模板参数列表&#x1f9da;&#x1f3fc;s…

大模型中常用的分词器Tokenizer学习总结记录与代码实现

最近大模型领域内如火如荼&#xff0c;很多企业、个人组织都陆续进入这个领域&#xff0c;笔者最近也是在接触大模型相关的技术领域&#xff0c;本文的主要目的就是想记录总结汇总大模型常用到的分词器算法&#xff0c;总结记录&#xff0c;学习备忘&#xff01;由于博主本身知…

巨人互动|Google海外户Google Analytics的优缺点是什么?

Google Analytics是一个由谷歌开发的网站分析工具&#xff0c;旨在帮助网站和移动应用程序运营者收集和分析数据&#xff0c;以更好地了解用户行为和改进业务。虽然Google Analytics具有许多优势&#xff0c;但也存在一些缺点。在本文中&#xff0c;我们将探讨Google Analytics…

cuda安装

1.cuda 11.8网址 CUDA Toolkit 11.8 Downloads | NVIDIA Developer 2.安装 sh cuda_11.8.0_520.61.05_linux.run 直接accept 移动上下到driver上&#xff0c;再enter一下取消driver的更新 更新一下.bashrc&#xff0c;cp -r ~/.bashrc xxx export PATH/usr/local/cuda-11.…

慢慢来,这次一定能搞懂Promise

1.Promise到底是个什么东西&#xff1f; 让我们使用万能console打印一下它的内容。 根据控制控制台的输出可见Promise 是一个构造函数&#xff0c;本身身上有 all、reject、resolve 这几个方法&#xff0c;原型&#xff08;prototype&#xff09;上有 then、catch 等方法。 根…

JVM源码剖析之Java命令行参数全解

最近&#xff0c;有一位网友询问关于Java命令行参数方面的问题&#xff0c;因为在Java中参数有很多种&#xff0c;有不少的读者一直没弄明白&#xff0c;所以特意写下此篇文章。 此篇文章分2大块&#xff0c;第一块是不同参数的解释&#xff0c;第2块就是JVM源码论证&#xff…

理解 Python 的 for 循环

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 在本篇博客中&#xff0c;我们将讨论 Python 中 for 循环的原理。 我们将从一组基本例子和它的语法开始&#xff0c;还将讨论与 for 循环关联的 else 代码块的用处。 然后我们将介绍迭代对象、迭代器和迭代器协议&…

低代码平台——减少开发bug,解放程序员

目录 一、前言 二、低代码提供了哪些功能 三、低代码对程序员的好处 四、小结 一、前言 在计算机语言的世界里&#xff0c;一直存在着一个千奇百怪的生物——bug。bug产生的本质是因为写代码&#xff0c;于是一种真理就诞生了。真理如下&#xff1a;只要写代码&#xff0c;就会…

【多维定向滤波器组和表面波】表面变换:用于高效表示多维 s 的多分辨率变换(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

信创麒麟操作系统卸载docker,并分别用在线、yum、rpm三种方式安装信创的docker

备注&#xff1a;操作前建议对机器打快照备份&#xff0c;或者备份好数据&#xff0c;如未使用&#xff0c;第一次部署的情况可直接操作 一、卸载DataEase自带的docker # 停止服务 service dataease stop# 删除 docker 可执行文件 rm -f /usr/bin/containerd-shim-runc-v2 r…

快速解决IDEA中类的图标变成J,不是C的情况

有时候导入新的项目后&#xff0c;会出现如下情况&#xff0c;类的图标变成J&#xff0c;如图&#xff1a; 直接上解决方法: 找到项目的pom.xml&#xff0c;右键&#xff0c;在靠近最下方的位置找到Add as Maven Project&#xff0c;点击即可。 此时&#xff0c;一般类的图标就…