namenode在硬盘和内存中存储了哪些信息?

2ekbmq32  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(416)

我试着理解namenode,我参考了网上的资料和书 Hadoop: The definitive guide 也。
我知道namenode有“编辑日志”、“fsimage”这样的概念,我可以在namenode中看到以下文件。

-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 23 22:53 edits_0000000000000000001-0000000000000000001
-rw-r--r-- 1 root     root     1048576 Nov 23 23:42 edits_0000000000000000002-0000000000000000002
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 00:07 edits_0000000000000000003-0000000000000000003
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 21:03 edits_0000000000000000004-0000000000000000004
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 22:59 edits_0000000000000000005-0000000000000000005
-rw-r--r-- 1 root     root     1048576 Nov 24 23:00 edits_0000000000000000006-0000000000000000006
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 25 21:15 edits_0000000000000000007-0000000000000000007
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 25 21:34 edits_0000000000000000008-0000000000000000008
-rw-r--r-- 1 root     root     1048576 Nov 26 02:13 edits_inprogress_0000000000000000009
-rw-rw-r-- 1 vevaan24 vevaan24     355 Nov 25 21:15 fsimage_0000000000000000006
-rw-rw-r-- 1 vevaan24 vevaan24      62 Nov 25 21:15 fsimage_0000000000000000006.md5
-rw-r--r-- 1 root     root         355 Nov 26 00:12 fsimage_0000000000000000008
-rw-r--r-- 1 root     root          62 Nov 26 00:12 fsimage_0000000000000000008.md5
-rw-r--r-- 1 root     root           2 Nov 26 00:12 seen_txid
-rw-rw-r-- 1 vevaan24 vevaan24     201 Nov 26 00:12 VERSION

=========================================================================
正如所料,我在namenode中看到了所有这些文件。但是我还没有理解这个概念,我有以下问题,谁能帮我理解这个。
q1)什么是fsimage文件?为什么存在许多fsimage文件?
q2)什么是编辑文件?为什么有许多文件存在?
q3)有哪些.md5文件?它们有什么用途?
我还读到namenode在内存中保存了一些数据,在硬盘中也保存了一些数据,但是要理解硬盘中存储了什么样的信息以及内存中还保留了什么信息有点混乱。
q4)namenode内存是否有来自fsimage或edit\u 000或两者的信息?
q5)重新启动namenode和datanode时,元数据是如何构造的(即哪个文件存储在哪个datanode、块等中)。

dldeef67

dldeef671#

好吧,我试着解释一下:
事务日志
editlog是一个事务日志,用于记录文件系统元数据发生的每个更改。例如创建新文件、重命名文件等等。这将始终在editlog中生成一个条目。
fsimage公司
此文件包含整个文件系统命名空间,包括块到文件的Map和文件系统属性。所以这个文件由哪些块组成。哪些块保存在哪里等等。
如果启动namenode,hadoop会将完整的fsimage文件加载到内存中。之后,将editlog中的所有事务应用于fsimage的内存表示,并将这个新版本刷新到磁盘上的新fsimage中。这种情况只发生一次(启动时)。之后,hadoop只处理内存中的表示。硬盘上的图像未被触摸。
你的一些问题
问题1)为什么存在许多fsimage文件?
如上所述,fsimage被加载,editlog被刷新,新版本被保存。
问题1)为什么存在许多编辑文件?
hadoop刷新editlog并持久化fsimage的新版本后,它将启动一个新的editlog。这在hadoop中称为检查点
q3)有哪些.md5文件?它们有什么用途?
md5是一个哈希,用于检查fsimage是否已损坏。
q5)重新启动namenode和datanode时,元数据是如何构造的(即哪个文件存储在哪个datanode、块等中)。
信息将持久保存在fsimage中。
我希望我能帮上忙。

相关问题