Hadoop(十二)NameNode 和 SecondaryNameNode

news/2024/9/19 18:34:02/文章来源:https://www.cnblogs.com/shihongpin/p/18417944

一、NN和2NN工作机制

1、NameNode中的元数据存储在哪里?

  • 存储在NameNode节点的磁盘中会导致效率过低,因为经常需要进行随机访问和响应客户请求;存储在内存中,一旦元数据丢失,整个集群就无法工作,也不合适。因此产生了在磁盘中备份元数据的FsImage。
  • 引入Edits文件(只进行追加操作,效率很高),每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits中,可以通过FsImage和Edits的合并,合成元数据。
  • 如果长时间添加数据到Edits中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间过长。因此,需要定期进行FsImage和Edits的合并,引入一个新的节点SecondaryNamenode,专门用于FsImage和Edits的合并。

2、NameNode工作机制

第一阶段:NameNode启动
(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存
(2)客户端对元数据进行增删改的请求
(3)NameNode记录操作日志,更新滚动日志
(4)NameNode在内存中对元数据进行增删改
第二阶段:Secondary NameNode工作
(1)Secondary NameNode询问NameNode是否需要CheckPoint,直接带回NameNode是否检查结果
(2)Secondary NameNode请求执行CheckPoint
(3)NameNode滚动正在写的Edits日志
(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
(5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并
(6)生成新的镜像文件fsimage.chkpoint
(7)拷贝fsimage.chkpoint到NameNode
(8)NameNode将fsimage.chkpoint重新命名成fsimage

二、FsImage镜像文件和Edits编辑日志

在/opt/module/hadoop-3.1.3/data/tmp/dfs/name/current目录中有如下文件

-rw-rw-r--. 1 user user     952 Sep 14 00:17 edits_0000000000000000502-0000000000000000514
-rw-rw-r--. 1 user user     465 Sep 14 01:17 edits_0000000000000000515-0000000000000000522
-rw-rw-r--. 1 user user      42 Sep 14 02:17 edits_0000000000000000523-0000000000000000524
-rw-rw-r--. 1 user user 1048576 Sep 14 02:17 edits_0000000000000000525-0000000000000000525
-rw-rw-r--. 1 user user 1048576 Sep 17 21:21 edits_inprogress_0000000000000000526
-rw-rw-r--. 1 user user    5161 Sep 14 02:17 fsimage_0000000000000000524
-rw-rw-r--. 1 user user      62 Sep 14 02:17 fsimage_0000000000000000524.md5
-rw-rw-r--. 1 user user    5161 Sep 17 21:21 fsimage_0000000000000000525
-rw-rw-r--. 1 user user      62 Sep 17 21:21 fsimage_0000000000000000525.md5
-rw-rw-r--. 1 user user       4 Sep 17 21:21 seen_txid
-rw-rw-r--. 1 user user     219 Sep 17 21:21 VERSION
  • Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息
  • Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到Edits文件中
  • seen_txid文件:保存的是一个数字,就是最后一个edits_的数字
  • 每次NameNode启动的时候都会将Fsimage文件读入内存,加载Edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将Fsimage和Edits文件进行了合并

1、oiv查看Fsimage文件
(1)基本语法

hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径

(2)实操

[user@hadoop102 current]$ pwd
/opt/module/hadoop-3.1.3/data/dfs/name/current
[user@hadoop102 current]$ hdfs oiv -p XML -i 
fsimage_0000000000000000525 -o /opt/module/hadoop-3.1.3/fsimage.xml
[user@hadoop102 current]$ cat /opt/module/hadoop-3.1.3/fsimage.xml

2、oev 查看Edits文件
(1)基本语法

hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径

(2)实操

[user@hadoop102 current]$ hdfs oev -p XML -i
edits_0000000000000000525-0000000000000000525 -o /opt/module/hadoop3.1.3/edits.xml
[user@hadoop102 current]$ cat /opt/module/hadoop-3.1.3/edits.xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799331.html

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

相关文章

高效数据移动指南 | 如何快速实现数据库 MySQL 到 MongoDB 的数据同步?

本专题将基于实践经验,从常见需求入手,为大家介绍热门数据源与数据目标之间的数据同步(全量/增量)如何实现?了解如何快速搭建数据管道,实现数据的高效迁移与无缝同步。本文教程为:MySQL → MongoDB 的数据同步任务。在现代企业中,数据无处不在,贯穿于各个业务环节和系…

一文带你精通二项式反演!不服来看!

前言 原题:《二项式反演学习笔记》。 这里有我关于二项式反演的一些思考和领会,包含理论推导和在信息学竞赛中的应用。网络上的教程都太潦草了,难以深入理解。因此,这里将以详细的证明为主,介绍二项式反演在 OI 中的使用。 如果你只想快速浏览结论,可以点击这里查看结论。…

解决ZBLOG网站运行中出现JavaScript加载失败问题

当 Z-Blog 网站运行中出现“JavaScript 加载失败”的问题时,可能的原因有几个方面,包括但不限于插件冲突、HTTPS 配置问题、CDN 问题等。以下是针对这些问题的一些解决方案: 1. 插件冲突问题描述:某些插件可能与 Z-Blog 核心或其他插件存在冲突,导致 JavaScript 无法正常加…

zblog 404.php 怎么写,zblogphp主题错误之模板选择

在 Z-Blog PHP 中,如果你想要自定义 404 页面(即当用户访问不存在的页面时显示的页面),你可以创建一个 404.php 文件。下面是创建一个简单的 404 页面的基本步骤和示例代码: 创建 404.php 文件创建文件:在你的主题目录中创建一个名为 404.php 的文件。 添加基本 HTML 结构…

zblog上传安装主题插件不成功的原因和解决办法

当在 Z-Blog 中上传安装主题或插件不成功时,可能的原因有很多。下面列出了一些常见的原因及相应的解决办法: 1. 文件大小超出限制问题描述:上传的文件包可能超出了服务器允许的最大文件大小。 解决方法:检查后台的“全局设置”中的“允许上传文件的大小”,并适当增大这个值…

本地调试多服务

本地idea如果同一个服务,想开多个服务,只需要改下端口重新启动,配置如下 1、打开idea的Services (老版本的idea应该是Run bashboard) 2、如图所示的两个stockApplication就是相同的服务,不同的端口 3、点击其中一个StockApplication8082右击找到Copy Configuration 这样…

zblog显示Allowed memory size of 6553652 bytes exhauste

当 Z-Blog 显示 “Allowed memory size of 6553652 bytes exhausted” 错误时,这意味着 PHP 的内存限制已达到上限。这种错误通常发生在处理大量数据或执行复杂操作时。以下是解决此问题的一些常见步骤: 1. 增加 PHP 内存限制 方法一:修改 php.ini 文件定位 php.ini 文件找到…

zblog应用中心连接失败的解决方案

当 Z-Blog 应用中心连接失败时,这通常意味着服务器无法正常访问应用中心的服务器。以下是解决此类问题的一些常见步骤: 1. 检查网络连接问题描述:网络连接可能不稳定或中断。 解决方法:确认服务器可以正常访问互联网。 尝试 ping 应用中心的服务器地址,例如:shping appce…

C++信奥老师解一本通题 1164:digit函数

​ 【题目描述】在程序中定义一函数digit(n,k),它能分离出整数n从右边数第k个数字。【输入】正整数n和k。【输出】一个数字。【输入样例】 31859 3 【输出样例】 8#include <iostream> using namespace std; int digit(long long n,int k) {if(k==1)return n%10;return …

zblog添加html后台出错,zblog后台设置固定域名绑定错误

当在 Z-Blog 中遇到添加 HTML 后台出错或后台设置固定域名绑定错误时,这通常意味着在配置或设置过程中出现了问题。以下是一些排查和解决步骤: 1. 检查域名绑定问题描述:域名可能未正确绑定到服务器。 解决方法:确认域名已正确绑定到服务器。 检查 DNS 设置,确保域名指向正…

zblog域名后无法访问 zblog数据库地址修改

当 Z-Blog 在修改域名后无法访问时,这通常意味着数据库中的某些配置没有正确更新。以下是解决此类问题的一些建议步骤: 1. 检查数据库配置问题描述:数据库配置可能未正确更新。 解决方法:登录到数据库管理工具(如 phpMyAdmin)。 找到 Z-Blog 的数据库。 检查数据库中的 z…

zblog后台编辑模块式时提示“UNKNOWN:未查询到相关数据”

当在 Z-Blog 后台编辑模块时提示 “UNKNOWN:未查询到相关数据”,这通常意味着后端查询数据库时未能找到预期的数据。以下是一些可能的原因及解决办法: 1. 数据库查询错误问题描述:查询语句可能有误或数据库表结构发生变化。 解决方法:检查数据库查询语句是否正确。 确认数据…