Hadoop2分佈式及NN和RM實現HA的實驗

本文轉自:http://www.micmiu.com/bigdata/hadoop/hadoop2-cluster-ha-setup/?utm_source=tuicool&utm_medium=referral


[一]、 引言

在Hadoop2.x初期的時候寫過一篇 hadoop 2.2.0 集羣模式安裝配置和測試,記錄了分佈式搭建的最基本的搭建步驟和運行演示,那篇文章中沒有對HA的配置做實驗,本文會詳細介紹 Hadoop2的分佈式、NameNode配置HA以及ResourceManage配置HA的實驗過程。

[二]、 實驗環境

1、各節點及角色分配

本文以5個集羣節點爲基礎做實驗環境,具體的角色分配如下:

hostname NameNode DataNode JournalNode Zookeeper ZKFC ResourceManager
nn1.hadoop √(Active)  
nn2.hadoop √(Standby)  
dn1.hadoop      
dn2.hadoop          
dn3.hadoop          

2、系統及軟件版本

  • CentOS  6.3 64位
  • Java 1.7.0_75
  • Hadoop 2.6.0
  • zookeeper 3.4.6

3、安裝JDK 所有節點需要操作

Oracle官方下載 64爲 jdk :jdk-7u3-linux-x64.rpm  執行安裝命令:

rpm -ivh jdk-7u3-linux-x64.rpm

默認的安裝路徑:/usr/java/jdk1.7.0_75

4、配置hosts (所有節點需要操作

5、確認SSHD已經安裝並啓動 (所有節點需要操作

6、配置時鐘同步

第一種方法 :(所有節點都要操作)都從公共NTP服務器同步,執行如下:

第二種方法:選一個節點搭建一個NTP服務,其他節點從該NTP服務器同步

7、創建專有用戶所有節點需要操作

比如創建 hadoop用戶,密碼也初始化爲hadoop, 下面有關hadoop部署配置都是以這個用戶操作的

爲hadoop 用戶修改環境變量 vi ~/.bash_profile :

8、SSH免密碼登陸

配置所有的NameNode節點 可以免密碼登錄到其餘所有節點,只需要單向免密登錄即可,當然你要配置爲雙向也無妨。有關SSH無密碼登錄的詳細介紹可以參見:Linux(Centos)配置OpenSSH無密碼登陸

[三]、 實驗過程

1、hadoop2的編譯

在實驗環境中任節點機器上 下載hadoop 2.6.0的源碼,安裝配置好Java 和Maven 然後執行 mvn package -Pdist,native -DskipTests -Dtar  進行源碼編譯,具體可參考:

2、zookeeper安裝配置

下載最新穩定版本(3.4.6)部署在ZK的各個節點,修改環境變量vi ~/.bash_profile :

修改配置文件:

修改成如下:

配置文件中的相關目錄路徑需要先創建好且hadoop用戶具有讀寫權限,不同zk節點配置不同的myid:

  • 在zk1.hadoop 節點中 執行:echo 1 > /bigdata/hadoop/zookeeper/zkdata/myid
  • 在zk2.hadoop 節點中 執行:echo 2 > /bigdata/hadoop/zookeeper/zkdata/myid
  • 在zk3.hadoop 節點中 執行:echo 3 > /bigdata/hadoop/zookeeper/zkdata/myid

myid中的數值需要和 zoo.cfg中的配置一致。

3、hadoop 安裝配置所有節點需要修改

3.1、配置環境變量vi ~/.bash_profile :

3.2、修改 $HADOOP_HOME/etc/hadoop/core-site.xml

3.3、修改 $HADOOP_HOME/etc/hadoop/hfds-site.xml

3.4、修改 $HADOOP_HOME/etc/hadoop/yarn-site.xml

PS: yarn-site.xml中的HA相關配置格式和hdfs-site.xml中的HA配置類似。

3.5、修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml

3.6、修改 $HADOOP_HOME/etc/hadoop/salves

4、啓動步驟和詳細過程

4.1、啓動ZK
在所有的ZK節點執行命令: zkServer.sh start

可藉助命令 zkServer.sh status  查看各個ZK的從屬關係

4.2、格式化ZK僅第一次需要做
任意ZK節點上執行:hdfs zkfc -formatZK

4.3、啓動ZKFC

ZKFC(zookeeperFailoverController)是用來監控NN狀態,協助實現主備NN切換的,所以僅僅在主備NN節點上啓動就行。

4.4、啓動JournalNode 用於主備NN之間同步元數據信息的共享存儲系統, 在每個JN節點上啓動

4.5、格式化並啓動主NN
格式化:hdfs namenode -format
注意:只有第一次啓動系統時需格式化,請勿重複格式化!

在主NN節點執行命令啓動NN: hadoop-daemon.sh start namenode

可以對比查看啓動前後NN節點的進程:

4.6、在備NN上同步主NN的元數據信息
hdfs namenode -bootstrapStandby

4.7、啓動備NN

在備NN上執行命令:hadoop-daemon.sh start namenode

4.8、設置和確認主NN

本文配置的是自動切換,ZK已經自動選擇一個節點作爲主NN了,所以這一步可以省略,查看節點狀態:

如果是配置手動切換NN的,這一步是不可缺少的,因爲系統還不知道誰是主NN,兩個節點的NN都是Standby狀態。手動激活主NN的命令:hdfs haadmin -transitionToActive nn1

4.9、在主NN上啓動Datanode

啓動所有datanode命令:hadoop-daemons.sh start datanode

注意:hadoop-daemons.sh 和 hadoop-daemon.sh 命令的差異

4.10、啓動YARN

方法一:一次性啓動ResourceManager和NodeManager命令:start-yarn.sh

方法二:分別啓動ResourceManager和NodeManager:

  • yarn-daemon.sh start resourcemanager
  • yarn-daemon.sh start nodemanager(如果有多個datanode,需使用yarn-daemons.sh)

ResourceManager 也配置了HA,根據命令查看節點狀態:

yarn rmadmin –getServiceState serviceid

4.11 啓動MR JobHistory Server

在dn1.hadoop上運行MRJS :mr-jobhistory-daemon.sh start historyserver

4.12、驗證NameNode 和ResourceManager 的HA是否生效

把當前主節點中的相關進程kill掉 查看各節點狀態切換情況。

4.13、驗證NN HA的透明性
注意驗證 hdfs dfs -ls /  和  hdfs dfs -ls hdfs://mycluster/ 的訪問效果是一致的:

[五]、 運行wrodcount demo

這個demo的演示可參考:hadoop 2.2.0 集羣模式安裝配置和測試 中的 wordcount演示步驟,這裏不再重複描述了。


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