当HDFS启动时,为什么不加载本地editsLog然后在QJM上加载editsLog?相反,只加载在QJM editsLog上?

时间:2017-11-26 07:48:31

标签: hadoop hdfs

我在windows上创建了三个虚拟机,用于构建hadoop2.6高可用性集群进行学习,经过一段时间后,通过webui界面查看hdfs start并没有加载本地editsLog,而是加载了QJM Cluster,我确信有editsLog本地,与QJM相同,但它是什么意思?如果本地缺少editsLog,肯定会对QJM集群加载,不明白,hdfs默认配置editsLog不仅写本地,而且还写了QJM的意图,因为QJM editsLOg共享,并且加载只加载QJM集群editsLog,然后本地editsLog已成为装饰?enter image description here

1 个答案:

答案 0 :(得分:0)

此行为取决于您的确切配置。我怀疑您已将QJM配置为dfs.namenode.shared.edits.dir并将dfs.namenode.edits.dir作为本地目录(或空白,在这种情况下它将使用dfs.namenode.name.dir的值)。共享编辑目录将被用作事实的来源。

通常,如果您配置QJM,您应该将其视为HA群集的真实来源。其他编辑日志只是一个备份。这很重要,因为在故障转移方案中(更改活动的NameNode),新的活动(上一个备用)可能没有本地可用的编辑,因此必须通过QJM来确定需要哪些编辑适用。

即使配置了共享编辑目录(从3.0.0开始),也必须指定dfs.namenode.edits.dir,这有点令人讨厌;要解决此问题,您可以将其值设置为与dfs.namenode.shared.edits.dir匹配,从而有效地禁用本地修改。