博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NameNode 与 SecondaryNameNode 的工作机制
阅读量:4451 次
发布时间:2019-06-07

本文共 14971 字,大约阅读时间需要 49 分钟。

一、NameNode、Fsimage 、Edits 和 SecondaryNameNode 概述

NameNode:在内存中储存 HDFS 文件的元数据信息(目录)

如果节点故障或断电,存在内存中的数据会丢失,显然只在内存中保存是不可靠的实际在磁盘当中也有保存:Fsimage 和 Edits,一个 NameNode 节点在重启后会根据这磁盘上的这两个文件来恢复到之前的状态

 

Fsimage(镜像文件) 和 Edits(编辑日志):记录内存中的元数据

如果每次对 HDFS 的操作都实时的把内存中的元数据信息往磁盘上传输,这样显然效率不够高,也不稳定这时就出现了 Edits 文件,用来记录每次对 HDFS 的操作,这样在磁盘上每次就只用做很小改动(只进行追加操作)当  Edits 文件达到了一定大小或过了一定的时间,就需要把 Edits 文件转化 Fsimage 文件,然后清空 Edits这样的 Fsimage 文件不会和内存中的元数据实时同步,需要加上 Edits 文件才相等

 

SecondaryNameNode:负责 Edits 转化成 Fsimage

SecondaryNameNode 不是 NameNode 的备份SecondaryNameNode 会定时定量的把集群中的 Edits 文件转化为 Fsimage 文件,来保证 NameNode 中数据的可靠性

 

二、NameNode 工作机制

磁盘上的元数据文件

 

三、查看 Edits 与 Fsimage

Edits 和 Fsimage 并非明文存储,需要转换后才能查看,使用 hdfs 命令进行转换

# 部分命令参数Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND       where COMMAND is one of:# 转换 fsimage 文件  oiv                  apply the offline fsimage viewer to an fsimage# 转换旧版 fsimage 文件  oiv_legacy           apply the offline fsimage viewer to an legacy fsimage# 转换 edits 文件  oev                  apply the offline edits viewer to an edits file

 

1.转换 Fsimage 文件

hdfs oiv:查看参数

部分参数说明

Usage: bin/hdfs oiv [OPTIONS] -i INPUTFILE -o OUTPUTFILE-i 要转换的文件-o 转换后文件路径-p 转换格式 (XML|FileDistribution|ReverseXML|Web|Delimited)

转换文件

hdfs oiv -p XML -i ./fsimage_0000000000000000326 -o ./fsimage.xml

转换后的文件,记录了文件信息

-63
1
Unknown
1803101069
1000
1015
0
1073741839
326
16400
11
16385
DIRECTORY
1555218314075
root:supergroup:0755
9223372036854775807
-1
16388
FILE
javafx-src.zip
2
1554996304962
15550 84059617
134217728
root:supergroup:0644
107 3741829
1005
5211154
0
16389
DIRECTORY
0529
1554999968472
root:supergroup:0755
-1
-1
16390
DIRECTORY
mkmk
1555000275046
root:supergroup:0755
-1
-1
16391
DIRECTORY
10088
1555000763405
root:supergroup:0755
-1
-1
16394
FILE
Writage-1.12.msi
3
1555086090236
155 5086085824
134217728
root:supergroup:0644
1 073741832
1008
12771328
0
16395
FILE
hadoop-2.9.2-win10-64.tar.gz
3
1555086717860
1555086612935
134217728
root:supergroup:0644
1073741833
1009
134217728
1073741834
1010
134217728
1073741835
1011
43080138
0
16396
DIRECTORY
Priority
1555219450567
root:supergroup:0755
-1
-1
16398
FILE
AAA.msi
3
1555219070073
155521906501 6
134217728
root:supergroup:0644
1073741837
1013
12771328
0
16399
FILE
BBB.msi
1
1555219285187
155521928012 9
134217728
root:supergroup:0644
1073741838
1014
12771328
0
16400
FILE
CCC.msi
2
1555219455139
155521945056 7
134217728
root:supergroup:0644
1073741839
1015
12771328
0
0
0
16385
16389
16391
16396
16394
16395
16388
16390
16396
16398
16399
16400
0
0
0
0
1
0
0
View Code

 

2.转换 Edits 文件

hdfs oev:查看参数

参数与上面类似,-p 有些不同

-p  binary (native binary format that Hadoop uses), xml (default, XML  format), stats (prints statistics about edits file)

转换文件

hdfs oev -p xml -i ./edits_inprogress_0000000000000000329 -o ./edits.xml

转换后的文件,记录 hdfs 的操作记录

-63
OP_START_LOG_SEGMENT
16
OP_ADD
17
0
16386
/javafx-src.zip._COPYING_
3
1554995796290
1554995796290
134217728
DFSClient_NONMAPREDUCE_1941526907_1
192.168.8.136
true
root
supergroup
420
5b80319d-463f-4591-b090-2d1462563e48
3
OP_ALLOCATE_BLOCK_ID
18
1073741825
OP_SET_GENSTAMP_V2
19
1001
OP_ADD_BLOCK
20
/javafx-src.zip._COPYING_
1073741825
0
1001
-2
OP_UPDATE_BLOCKS
21
/javafx-src.zip._COPYING_
-2
OP_ALLOCATE_BLOCK_ID
22
1073741826
OP_SET_GENSTAMP_V2
23
1002
OP_ADD_BLOCK
24
/javafx-src.zip._COPYING_
1073741826
0
1002
-2
OP_CLOSE
25
0
0
/javafx-src.zip._COPYING_
3
1554995797095
1554995796290
134217728
false
1073741826
5211154
1002
root
supergroup
420
OP_RENAME_OLD
26
0
/javafx-src.zip._COPYING_
/javafx-src.zip
1554995797102
5b80319d-463f-4591-b090-2d1462563e48
11
OP_DELETE
27
0
/javafx-src.zip
1554995877570
847eb009-9524-4f1c-a5a5-5253908ec1b5
3
View Code

 

四、CheckPoint 时间设置

1.以时间为准

dfs.namenode.checkpoint.period
3600

SecondaryNameNode 默认每隔一小时执行一次

查看默认配置:

 

2.以次数为准

dfs.namenode.checkpoint.txns
10000
作次数到达一万次就发起合并
dfs.namenode.checkpoint.check.period
600
每间隔10分钟检查一次操作次数是否到达

 


转载于:https://www.cnblogs.com/jhxxb/p/10714408.html

你可能感兴趣的文章
用jQuery实现简单的简单的轮播图
查看>>
[CQOI2011]放棋子 题解(dp+组合数学)
查看>>
十 、Python常用模块介绍
查看>>
Power Desginer系列00【转载】
查看>>
Clementine的源节点学习【转载】
查看>>
wpf鼠标捕获与控件交互——UIElement.CaptureMouse
查看>>
bugku 图穷匕见
查看>>
WOJ 46 完全背包
查看>>
spring框架学习笔记(十)
查看>>
排球计分程序(现场记分员)
查看>>
流媒体技术笔记(视频编码相关)
查看>>
神马16核的服务器你让我单线程跑ffmpeg
查看>>
block,inline,inline-block的区别
查看>>
html表单
查看>>
const关键字——读《嵌入式c语言进阶之道》整理
查看>>
libevent入门(1)
查看>>
CSS 样式显示为小手
查看>>
关联模型错误的蛋疼错误提示
查看>>
JS当心隐式的强制转换
查看>>
通过ros节点发布Twist Messages控制机器人--10
查看>>