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

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.rhkb.cn/news/87582.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android,Compose,消息列表和动画(点击item的时候,就会删除)

Compose,消息列表和动画(点击item的时候,就会删除) package com.example.mycompose08import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundat…

PoseiSwap 开启“Poseidon”池,治理体系或将全面开启

PoseiSwap 曾在前不久分别以 IDO、IEO 的方式推出了 POSE 通证,但 PoseiSwap DEX 中并未向除 Zepoch 节点外的角色开放 POSE 资产的交易。而在前不久,PoseiSwap 推出了全新的“Poseidon”池,该池将向所有用户开放,并允许用户自由的…

Git:在本地电脑上如何使用git?

git 版本: 2.40.1.windows.1 文章目录 一. 使用git之前你必须要理解的几个概念1.1 理解工作区、版本库、暂存区的概念1.2 提交Git版本库的步骤【分两步执行】 二. Git本地库实战2.1 初始化版本库2.2 新建 & 提交 & 状态2.3 查看日志2.4 回退 & 穿梭 &am…

Codeforces Round 892 (Div. 2) C. Another Permutation Problem 纯数学方法 思维题

Codeforces Round 892 (Div. 2) C. Another Permutation Problem 源码&#xff1a; #include <iostream> #include <algorithm> #include <set> #include <map> #include <queue> #include <vector> #include <stack> #include &l…

面试热题(螺旋矩阵)

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素 一看到这个大家有没有想到 就是一个螺旋形状&#xff0c;那这道题我们应该怎么解决&#xff1f; 我们先来仔细的看&#xff0c;它这种螺旋形状的遍历是先【右-下-左-上】…

aardio 调用 python pickle load 数据

aardio 调用 python pickle load 词典数据&#xff1b; pip install readmdict dump_pickle.py import os import sys import time import pickle from readmdict import MDX, MDDos.chdir("/mdict")mdxfile "your.mdx" if not os.path.exists(mdxfil…

Kotlin和Java互操作时的可空性

注&#xff1a;文中demo的kt版本是1.7.10 一、kotlin语言中的可空性设计 在Java语言中的NPE&#xff08;NullPointerException&#xff09;可以说非常常见&#xff0c;而且诟病已久。 kotlin做为后起之秀&#xff0c;在空指针的问题上进行了升级&#xff0c;即&#xff1…

数据结构-带头双向循环链表的实现

前言 带头双向循环链表是一种重要的数据结构&#xff0c;它的结构是很完美的&#xff0c;它弥补了单链表的许多不足&#xff0c;让我们一起来了解一下它是如何实现的吧&#xff01; 1.节点的结构 它的节点中存储着数据和两个指针&#xff0c;一个指针_prev用来记录前一个节点…

微服务监控技术skywalking的部署与使用(亲测无坑)

微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注&#xff1a;本篇文章采用docker部署&#xff0c;采用8.2.0版本&#xff0c;版本一定…

【Nginx】Nginx负载均衡

负载均衡&#xff1a;通过反向代理来实现 Nginx的七层代理和四层代理&#xff1a; 七层是最常用的反向代理方式&#xff0c;只能配置在nginx配置文件的http模块当中 &#xff1b;配置的方法名称为&#xff1a;upstream模块&#xff0c;不能写在server中也不能写在location中&a…

FPGA实践 ——Verilog基本实验步骤演示

0x00 回顾&#xff1a;AND/OR/NOT 逻辑的特性 AND&#xff1a;与门可以具有两个或更多的输入&#xff0c;并返回一个输出。当所有输入值都为 1 时&#xff0c;输出值为 1。如果输入值中有任何一个为 0&#xff0c;则输出值为 0。 OR&#xff1a;或门可以具有两个或更多的输入…

湘大 XTU OJ 1290 Alice and Bob 题解(非常详细):字符串 分类讨论 简单模拟

一、链接 1290 Alice and Bob 二、题目 题目描述 Alice和Bob玩剪刀-石头-布的游戏&#xff0c;请你写个程序判断一下比赛的结果。 输入 第一行是一个整数K&#xff0c;表示样例的个数。 以后每行两个单词&#xff0c;rock表示石头&#xff0c;paper表示布&#xff0c;scis…

山东布谷科技直播程序源码使用Redis进行服务器横向扩展

当今&#xff0c;直播程序源码平台作为新媒体时代主流&#xff0c;受到了世界各地人民的喜爱&#xff0c;这也使得直播程序源码平台用户数量的庞大&#xff0c;也难免会出现大量用户同时访问服务器&#xff0c;使服务器过载的情况&#xff0c;当服务器承受不住的时候&#xff0…

Win11中使用pip或者Cython报错 —— error: Microsoft Visual C++ 14.0 is required.

第一步&#xff1a;下载Visual Studio 2019 下载地址&#xff1a; https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes 第二步&#xff1a;安装组件 选择单个组件&#xff0c;勾选以下两个组件 其他错误&#xff1a; 无法打开文件“python37.li…

VMware虚拟机NAT模式Ubuntu无法上网解决方案

发现只要NAT模式&#xff0c;ping地址时就报网络不可达&#xff0c;且右上方网络图标消失&#xff0c;但是外部USB网络设备又只能在NAT模式下使用。。。 博主的解决方案如下&#xff1a; 按WinR键入services.msc&#xff0c; 找到VMware DHCP Service、VMware NAT Service和V…

Unity数字可视化学校_昼夜(三)

1、删除不需要的 UI using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class EnvControl : MonoBehaviour {//UIprivate Button btnTime;private Text txtTime; //材质public List<Material> matListnew Li…

Mybatis-plus动态条件查询QueryWrapper的使用

Mybatis-plus动态条件查询QueryWrapper的使用 一&#xff1a;queryWrapper介绍 queryWrapper是mybatis plus中实现查询的对象封装操作类&#xff0c;可以封装sql对象&#xff0c;包括where条件&#xff0c;order by排序&#xff0c;select哪些字段等等&#xff0c;他的层级关…

华为运动健康,十年创新天地宽

我听一位朋友讲过这样一个故事。某天早上&#xff0c;急诊科的医生迎来了一位患者&#xff0c;患者进来后直接说&#xff1a;“大夫&#xff0c;我房颤了。” 这位医生非常诧异&#xff0c;因为心脏房颤确实非常危急&#xff0c;但很多时候并没有明显的生理体征&#xff0c;患者…

【C++】开源:abseil-cpp基础组件库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍abseil-cpp基础组件库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#…

Confluence(wiki)搭建遇到创建的文档乱码问题的解决

在公司使用这个知识管理协同的工具的时候&#xff0c;感觉用起来还不错&#xff0c;自己就想着搭建一套玩玩&#xff1b; 用的是docker搭建&#xff0c;具体就是搞docker compose文件管理起来&#xff0c; 但是当我搭建完毕之后创建学习目录的时候发现全是&#xff1f;&#x…