HDFS基於QJM的高可用配置--學習筆記

本文參考官方文檔

一:典型的HA集羣介紹

這裏寫圖片描述

爲了解決NameNode的單節點故障問題,hadoop2.0以後的版本可以配置多個NameNode節點,如上圖所示。在兩個單獨的計算機中配置連個NameNode 節點,在同一時間只有一個NameNode節點處於活躍狀態,另一個節點處於熱備用狀態。Active NameNode 節點負責集羣中所有客戶端的操作,Standby NameNode 節點則實時收集整個集羣的狀態一再必要的時候進行故障轉移。

  • Standby NameNode 節點如何保證自己與Active NameNode 節點處於同步狀態?

集羣中會配置一組專門用於存放NameNode 節點的操作日誌的文件的節點,成爲JounalNodes節點,當Active NameNode 執行任何修改時,他都會將這些記錄持久化到JounalNode節點中。Standby NomeNode 則會實時監控JounalNode的變更操作,從中讀取日誌文件,將其同步到自己的命名空間中,來確保自己的命名空間中保存了當前集羣中的最新的信息。從而保證了在發生故障轉移時,自己的命名空間的信息和之前的Active NameNode節點中的信息是同步的。

  • 心跳機制的設置
    爲了使主備節點進行快速的故障轉移,集羣中的所有DateNode節點會將心跳信息同時發送給主備節點,以保證兩個NameNode節點中都保存了當前集羣中的最新的快位置信息

  • 保證JounalNode的正確性
    在同一時間,JounalNode只允許一個活躍的NameNode節點執行寫操作,其他NameNode節點只允許從JounalNode節點中讀取日誌信息。當發生故障轉移的期間,變爲Active NameNode 的節點將接管寫入JounalNode的角色。從而有效防止了JounalNode的節點數據分裂的情況。

二:高可用結羣的硬件部署

NameNode節點:每個NameNode節點需要配置在獨立的物理節點中,性能應該相同
JounalNode節點:JounalNode進程相對輕量級,可以以其他進程並置,注意:集羣中至少有3個JounalNode的守護進程,以避免單機故障 。爲了更好的避免單機故障,應該運行奇數個JN節點。

三:主從結構

    主:jobtracker
    從:tasktracker

四:四個階段

1.Split
2. Mapper:key-value(對象)
3. Shuffle

    1.分區:(partition,HashPartation:根據key的hashcode值和Reduce的數量 模運算),可以自定義分區,運算速度要快,要解決數據傾斜問題和reduce負載均衡。
    2.排序:默認按照字典排序 WriterCompartor(比較)
    3.合併:減少當前mapper輸出數據,根據key相同(比較),把value進行合併。
    4.分組:(key相同(比較),value組成一個集合)merge

4.Reduce

輸入數據:key+迭代器

五:Hadoop 2.5 HA搭建

1.core-site.xml

<configuration>
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>
    </property>
     <property>
       <name>ha.zookeeper.quorum</name>
       <value>192.168.128.104:2181,192.168.128.105:2181,192.168.128.107:2181</value>
     </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/usr/xul/hadoop-2.5</value>
    </property>
</configuration>

2.hdfs-site.xml

<configuration>

    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
        </property>
    <property>
      <name>dfs.ha.namenodes.mycluster</name>
      <value>nn1,nn2</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn1</name>
      <value>192.168.128.104:8020</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>192.168.128.105:8020</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>
      <value>192.168.128.104:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>
      <value>192.168.128.105:50070</value>
    </property>

    <property>
      <name>dfs.namenode.shared.edits.dir</name>
                  <value>qjournal://192.168.128.105:8485;192.168.128.107:8485;192.168.128.108:8485/mycluster</value>
    </property>

    <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence</value>
    </property>

    <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/root/.ssh/id_rsa</value>
    </property>

    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/usr/xul/JNdata</value>
    </property>
     <property>
       <name>dfs.ha.automatic-failover.enabled</name>
       <value>true</value>
     </property>
</configuration>

3.準備zookeeper

1. 三臺zookeeper:hadoop1,hadoop2 ,hadoop3
2. 編輯zoo.cfg配置文件
    1)修改 dataDir=/opt/zookeeper
    2) server.1=hadoop1:2888:3888
       server.2=hadoop2:2888:3888
       server.3=hadoop3:2888:3888   
3.在dataDir目錄中創建一個myid的文件。文件內容爲1,2,3 

4.配置hadoop中的slaves

5.啓動三個zookeeper : ./zkServer.sh start

6.啓動三個JournalNode:./hadoop-deamon.sh start journalnode

7.在其中一個namenode上格式化,hdfs namenode -format

8. 把剛剛格式化之後的元素數據拷貝到另一個namenode中

    啓動剛剛格式化的namenode
    在沒有格式化的namenode上執行:hdfs namenode -boostrapStandby
    啓動第二個namenode

9.在其中一個name節點上初始化zkfc:hdfs zkfc -formatZK

10.停止全部節點:stop-dfs.sh

11.全部啓動 : start-dfs.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章