九、hdfs中Namenode元数据处理

news/2024/5/20 2:31:46 标签: hdfs, hadoop, 大数据

1、元数据的由来

        在hdfs文件系统中,用户的每一次操作,都会对文件系统产生响应的影响,那么谁来记录这些影响呢?

        在hdfs文件系统中,edits文件记录了hdfs中的每一次操作,以及本次操作影响的文件其对应的block。

        但于此同时,会产生一个问题,那就是随着时间的推移,hdfs文件系统中的edits文件会越来越大,这是hdfs文件系统会将edits文件进行切分处理,以避免个别edits文件过大现象。

        那么,是那个用户来统筹和操作edits文件呢?

        答案是Namenode用户。

2、问题

(1)问题所在

        当用户想要查看某个文件的操作记录时,这里以text.txt文件为例,那么需要去查询edits文件,请问查询到的第一条相关记录就是text.txt文件的最终呈现形式吗?

        不是的,因为在此期间,用户可能对text.txt文件进行一系列操作,可能text.txt文件已经被用户删除。

(2)解决方案

        对于这种问题,hdfs文件系统也存在响应的解决方案。

        hdfs文件系统会每隔相应的时间,对edits文件进行合并处理,得到一个FSLmage文件,这个文件记录着每个被使用文件的最终结果。

3、NameNode元数据维护管理

(1)查看edits文件

hadoop@node1:~$ cd /data/nn
hadoop@node1:/data/nn$ cd ./current
hadoop@node1:/data/nn/current$ ls
edits_0000000000000000001-0000000000000000001  edits_0000000000000000030-0000000000000000030
edits_0000000000000000002-0000000000000000003  edits_0000000000000000031-0000000000000000031
edits_0000000000000000004-0000000000000000004  edits_0000000000000000032-0000000000000000032
edits_0000000000000000005-0000000000000000005  edits_0000000000000000033-0000000000000000034
edits_0000000000000000006-0000000000000000007  edits_0000000000000000035-0000000000000000067
edits_0000000000000000008-0000000000000000008  edits_0000000000000000068-0000000000000000083
edits_0000000000000000009-0000000000000000010  edits_0000000000000000084-0000000000000000096
edits_0000000000000000011-0000000000000000011  edits_0000000000000000097-0000000000000000097
edits_0000000000000000012-0000000000000000013  edits_0000000000000000098-0000000000000000119
edits_0000000000000000014-0000000000000000014  edits_0000000000000000120-0000000000000000120
edits_0000000000000000015-0000000000000000016  edits_0000000000000000121-0000000000000000134
edits_0000000000000000017-0000000000000000017  edits_0000000000000000135-0000000000000000135
edits_0000000000000000018-0000000000000000019  edits_inprogress_0000000000000000136
edits_0000000000000000020-0000000000000000020  fsimage_0000000000000000120
edits_0000000000000000021-0000000000000000022  fsimage_0000000000000000120.md5
edits_0000000000000000023-0000000000000000024  fsimage_0000000000000000134
edits_0000000000000000025-0000000000000000025  fsimage_0000000000000000134.md5
edits_0000000000000000026-0000000000000000027  seen_txid
edits_0000000000000000028-0000000000000000028  VERSION
edits_0000000000000000029-0000000000000000029

(2)元数据合并控制参数

对于元数据的合并,是一个定时过程,基于:

~dfs.namenode.checkpoint.period,默认为3600(秒)一小时。

~dfs.namenode.checkpoint.txns,默认为1000000,即100W次事务。

对于上述两个条件,只要有一个达到条件就执行。

hdfs文件系统多长时间检查一次是否满足条件呢?基于:

dfs.namenode.checkpoint.check.period,默认为60秒来决定。

4、secondaryNameNode的作用

        在这里,可能会很疑惑,为什么要将secondaryNameNode的作用,对于整个hdfs文件系统来讲,Namenode负责不断的生成edits文件,但Namenode并不会处理edits(edits和fsimage)文件,这些edits文件会被SecondaryNameNode通过http协议进行拉取,经SecondaryNameNode合并完成后使用。


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

相关文章

AKConv:具有任意采样形状和任意数目参数的卷积核

文章目录 摘要1、引言2、相关工作3、方法3.1、定义初始采样位置3.2、可变卷积操作3.3、扩展AKConv3.3、扩展AKConv 4、实验4.1、在COCO2017上的目标检测实验4.2、在VOC 712上的目标检测实验4.3、在VisDrone-DET2021上的目标检测实验4.4、比较实验4.5、探索初始采样形状 5、分析…

第二十章Java博客

如果一次只完成一件事情,很容易实现。但现实生活中,很多事情都是同时进行的。Java中为了模拟这种状态,引入了线程机制。简单地说,当程序同时完成多件事情时,就是所谓的多线程。多线程应用相当广泛,使用多线…

【傻瓜级JS-DLL-WINCC-PLC交互】8.DLL读写WINCC连接的PLC数据

思路 JS-DLL-WINCC-PLC之间进行交互,思路,先用Visual Studio创建一个C#的DLL控件,然后这个控件里面嵌入浏览器组件,实现JS与DLL通信,然后DLL放入到WINCC里面的图形编辑器中,实现DLL与WINCC的通信。然后PLC与…

netty实现http协议服务

前面了解了netty的启动流程,实现http协议服务在pipeline里添加对应的http协议报文处理器即可。 server端: EventLoopGroup bossGroup new NioEventLoopGroup(1); EventLoopGroup workGroup new NioEventLoopGroup(4);ServerBootstrap bootstrap new…

UE 事件分发机制(二) day10

自定义事件分发机制 自建事件分发机制与结构 Unreal推荐的游戏逻辑开发流程 基于 Unreal推荐的游戏逻辑开发流程,一般我们的整体规划也就是这样 大致结构类图 创建接口类与管理类以及所需函数 新建一个Unreal接口类作为接口 然后创建一个蓝图函数库的基类 Ev…

Elasticsearch:向量搜索 (kNN) 实施指南 - API 版

作者:Jeff Vestal 本指南重点介绍通过 HTTP 或 Python 使用 Elasticsearch API 设置 Elasticsearch 以进行近似 k 最近邻 (kNN) 搜索。 对于主要使用 Kibana 或希望通过 UI 进行测试的用户,请访问使用 Elastic 爬虫的语义搜索入门指南。你也可以参考文章…

沈阳师范大学期末考试复习pta循环数组函数指针经典编程题汇总+代码分析

前言:临近期末,接下来给大家分享一些经典的编程题,方便大家复习。不一定难,但都是入门的好题,尽可能的吃透彻。因为据说期末考试的题很多来自pta上面的原题。 对于一些语言我是用c来写的,不妨碍理解&#…

PyQt基础_009_ 按钮类控件QSlider

基本功能 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class SliderDemo(QWidget):def __init__(self, parentNone):super(SliderDemo, self).__init__(parent)self.setWindowTitle("QSlider 例子") self.resize…