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看的。日誌

相關文章
相關標籤/搜索