大数据全系列 教程
1869个小节阅读:467.1k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
###5.1.1 NameNode 分析
以两种方式在NameNode本地进行持久化:
命名空间镜像文件(fsimage)和编辑日志(edits log)。
fsimage文件不记录每个block所在的DataNode信息,这些信息在每次系统启动的时候从DataNode重建。之后DataNode会周期性地通过心跳包向NameNode报告block信息。DataNode向NameNode注册的时候NameNode请求DataNode发送block列表信息。
xxxxxxxxxx
1、文件名称和路径
2、文件的大小
3、文件的所属关系
4、文件的block块大小 128MB
5、文件的副本个数 3 MR 10个副本
6、文件的修改时间
7、文件的访问时间
8、文件的权限
9、文件的block列表
存储结构
一个运行的NameNode如下的目录结构,该目录结构在第一次格式化的时候创建
如果属性dfs.namenode.name.dir指定了多个路径,则每个路径中的内容是一样的,尤其是当其中一个是挂载的NFS的时候,这种机制为管理提供了一些弹性。备份数据
in_use.lock文件用于NameNode锁定存储目录。这样就防止其他同时运行的NameNode实例使用相同的存储目录。
xxxxxxxxxx
[root@node1 name]# pwd
/var/itbaizhan/hadoop/full/dfs/name
[root@node1 name]# ll
总用量 8
drwxr-xr-x 2 root root 4096 10月 9 15:49 current
-rw-r--r-- 1 root root 10 10月 9 11:48 in_use.lock
[root@node1 name]# cat in_use.lock
7939@node1
[root@node1 name]# jps
7939 NameNode
22536 Jps
edits表示edits log日志文件
fsimage表示文件系统元数据镜像文件
NameNode在checkpoint之前首先要切换新的edits log文件,在切换时更新seen_txid的值。上次合并fsimage和editslog之后的第一个操作编号
xxxxxxxxxx
[root@node1 current]# ll
总用量 3124
-rw-r--r-- 1 root root 42 10月 9 15:49 edits_0000000000000000050-0000000000000000051
-rw-r--r-- 1 root root 1048576 10月 9 15:49 edits_inprogress_0000000000000000052
-rw-r--r-- 1 root root 722 10月 9 14:49 fsimage_0000000000000000049
-rw-r--r-- 1 root root 62 10月 9 14:49 fsimage_0000000000000000049.md5
-rw-r--r-- 1 root root 722 10月 9 15:49 fsimage_0000000000000000051
-rw-r--r-- 1 root root 62 10月 9 15:49 fsimage_0000000000000000051.md5
-rw-r--r-- 1 root root 3 10月 9 15:49 seen_txid
-rw-r--r-- 1 root root 219 10月 9 10:42 VERSION
[root@node1 current]# cat seen_txid
52
VERSION文件
xxxxxxxxxx
[root@node1 current]# cat VERSION
#Sat Oct 09 10:42:49 CST 2021
namespaceID=1536048782
clusterID=CID-7ecb999c-ef5a-4396-bdc7-c9a741a797c4
cTime=1633747369798
storageType=NAME_NODE
blockpoolID=BP-1438277808-192.168.20.101-1633747369798
layoutVersion=-64
namespaceID是该文件系统的唯一标志符,当NameNode第一次格式化的时候生成。
clusterID是HDFS集群使用的一个唯一标志符,在HDFS联邦的情况下,就看出它的作用了,因为联邦情况下,集群有多个命名空间,不同的命名空间由不同的NameNode管理。
cTime标记着当前NameNode创建的时间。对于刚格式化的存储,该值永远是0,但是当文件系统更新的时候,这个值就会更新为一个时间戳。
storageType表示当前目录存储NameNode内容。
blockpoolID是block池的唯一标志符,一个NameNode管理一个命名空间,该命名空间中的所有文件存储的block都在block池中。
layoutVersion是一个负数,定义了HDFS持久化数据结构的版本。这个版本数字跟hadoop发行的版本无关。当layout改变的时候,该数字减1(比如从--63到-64)。当对HDFS进行了升级,就会发生改变。