1. 程式人生 > >配置Hadoop的HA(高可用)

配置Hadoop的HA(高可用)

在搭建完全分散式的基礎上配置HA。

1、首先將完全分散式的配置檔案備份。複製一份配置檔案用來搭建HA。

$ cp -r /home/betty/soft/hadoop/etc/cluster_hadoop /home/betty/soft/hadoop/etc/HA_hadoop

$ rm hadoop -------刪掉之前的軟連線。

$ ln -s HA_hadoop hadoop --------重新建立指向HA_hadoop的軟連線。

 2、修改配置檔案

hdfs-site.xml

    <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>dog1:9000</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>dog2:9000</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>
      <value>dog1:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>
      <value>dog2:50070</value>
    </property>
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://dog1:8485;dog2:8485;dog3: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>/home/betty/.ssh/id_rsa</value>
    </property>

core-site.xml

<property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>
    </property>
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/hyxy/soft/tmp/journalnode</value>
    </property>

 3、啟動所有機器的journalNode守護程序。

$ hadoop-daemon.sh start journalnode

(一旦啟動了JournalNodes,就必須首先同步兩個HA NameNodes的磁碟元資料。
   **** 如果要設定新的HDFS叢集,則應首先在其中一個NameNode上執行format命令(hdfs namenode -format)。
   ****如果您已經格式化了NameNode,或者正在將啟用了HA的群集轉換為啟用HA,則現在應該通過執行命令“ hdfs namenode bootstrapStandby ”將NameNode元資料目錄的內容複製到另一個未格式化的NameNode上。 在未格式化的NameNode上。
        執行此命令還將確保JournalNodes(由dfs.namenode.shared.edits.dir配置)包含足夠的編輯事務,以便能夠啟動兩個NameNode。
        如果要將非HA NameNode轉換為HA,則應執行命令“ hdfs namenode -initializeSharedEdits ”,該命令將使用來自本地NameNode編輯目錄的編輯資料初始化JournalNodes。)

4、 啟動原來的namenode守護程序。注意是隻在dog1此臺機器上啟動。

$ hadoop-daemon.sh start namenode

5、 在另一個namenode上覆制原來的資料過來。我設定的另一個namenode是dog2。所以在dog2上執行此命令。

$ hdfs namenode -bootstrapStandby

6、 關閉namenode程序並初始化日誌檔案。在dog1上進行。

$ hadoop-daemon.sh stop namenode
$ hdfs namenode -initializeSharedEdits

7、 啟動叢集 。

$ start-dfs.sh

8、 驗證叢集。

把其中一個namenode切換成活躍的。

$ hdfs haadmin -transitionToActive nn1

上傳檔案。

$  hdfs dfs -put ~/soft/hadoop/etc/slaves /betty

9、檢視 檔案是否上傳成功。

$ hdfs dfs -ls /betty

10、結束。