NameNode和Zookeeper的format做用

在咱们安装高可用hadoop集群时,咱们会按照如下命令去执行启动操做;

 (1)格式化zk

  hdfs zkfc -formatZK

 (2)启动journalnode进程

 (3)格式化namenode

  hadoop namenode -format 集群名

 (4)启动namenode

 (5)在备namenode节点同步元数据

 (6)启动备namenode

 (7)启动zkfc

那么咱们为何要对NameNode和Zookeeper进行format操做;node

  1. NameNode进行format的做用

core-site.xml 是 NameNode 的核心配置文件,主要对 NameNode 的属性进行设置,也仅仅在 NameNode 节点生效,这里我用的是hadoop用户。session

<property> 
  <name>hadoop.tmp.dir</name> 
  <value>/tmp/hadoop-${user.name}</value> 
</property>

hadoop.tmp.dir存放临时数据的公共目录目录,若是没有配置,那么即为默认配置namenode、

journalnode和datanode的数据都会存放在此目录中,也能够单独配置在hdfs-site.xml文件中。

dfs.journalnode.edits.dir:指定JournalNode集群存储edits目录

dfs.namenode.name.dir:元数据目录

dfs.datanode.data.dir:数据目录

namenode进行format操做后会建立如下文件:

NameNode和Zookeeper的format做用架构

文件解释以下:
fsimage:存储命名空间(实际上就是目录和文件)的元数据信息;

edits:用来存储对命名空间操做的日志信息,实现NameNode节点的恢复;

VERSION:用来存储NameNode版本信息,命名空间ID(版本号);

editsinprogress:还在使用的edits文件。ide

  1. Zookeeper的format做用

    NameNode高可用和共享存储与ZooKeeper架构图
    NameNode和Zookeeper的format做用

zkfc是ZK集群的客户端,用来监控NN的状态信息。

主要功能以下:
oop

  • 2.1 健康监控

    zkfc按期对本地的NN发起health-check的命令,若是NN正确返回,那么这个NN被认为是OK
    的。不然被认为是失效节点。
  • 2.2 Zookeeper会话管理

    当本地NN是健康的时候,zkfc将会在zk中持有一个session。若是本地NN又正好是active的,那么zkfc还有持有一个"ephemeral"的节点做为锁,一旦本地NN失效了,那么这个节点将会被自动删除。

    *2.3 基于Zookeeper的选举

    若是本地NN是健康的,而且zkfc发现没有其余的NN持有那个独占锁。那么他将试图去获取该锁,一旦成功,那么它就须要执行Failover,而后成为active的NN节点。Failover的过程是:第一步,对以前的NN执行fence,若是须要的话。第二步,将本地NN转换到active状态。


hdfs zkfc -formatZK 作了什么操做?

由于FC(failOver)须要把NN的状态写给ZK,因此命令这个就是为了建立一个父目录,后续fc会

把nn的状态写到这下面给zk看的。日志

相关文章
相关标签/搜索