Hadoop - 集羣安裝(高可用)

Hadoop - 集羣安裝已經介紹瞭如何安裝一個Hadoop集羣,可是這個集羣的NameNode出現故障,那這個集羣是不能夠用的。咱們須要藉助zookeeper來安裝一個高可用集羣,當於Active狀態的NameNode發生故障,還有Standby狀態的NameNode及時切換,成爲Active狀態的NameNode對外提供服務。
zookeeper集羣見以前的,這裏的配置是bigdata0一、bigdata0二、bigdata03是zookeeper節點,bigdata04做爲集羣的observer角色。
其餘步驟跟以前的集羣安裝同樣,區別是幾個配置文件的修改。node

配置文件

hdfs-site.xml

這裏配置2個namenode的相關信息。web

<configuration> 
    <!-- 指定副本數 --> 
    <property> 
        <name>dfs.replication</name> 
        <value>3</value> 
    </property> 
    <!--定義nameservice的名稱爲hadoopdajun--> 
    <property> 
        <name>dfs.nameservices</name> 
        <value>hadoopdajun</value> 
    </property> 
    <!-- 定義hadoopdajun兩個NameNode的名稱:nn1,nn2 --> 
    <property> 
        <name>dfs.ha.namenodes.hadoopdajun</name> 
        <value>nn1,nn2</value> 
    </property> 
    <!-- nn1的RPC通訊地址,rpc用來和datanode通信 --> 
    <property> 
        <name>dfs.namenode.rpc-address.hadoopdajun.nn1</name> 
        <value>bigdata01:9000</value> 
    </property> 
    <!-- nn1的http通訊地址,用於web客戶端 --> 
    <property> 
        <name>dfs.namenode.http-address.hadoopdajun.nn1</name> 
        <value>bigdata01:50070</value>
    </property> 
    <!-- nn2的RPC通訊地址,rpc用來和datanode通信 --> 
    <property> 
        <name>dfs.namenode.rpc-address.hadoopdajun.nn2</name> 
        <value>bigdata02:9000</value> 
    </property> 
    <!-- nn2的http通訊地址,用於web客戶端 --> 
    <property> 
        <name>dfs.namenode.http-address.hadoopdajun.nn2</name> 
        <value>bigdata02:50070</value> 
    </property> 
    <!-- edits元數據的共享存儲位置 --> 
    <property> 
        <name>dfs.namenode.shared.edits.dir</name> 
        <value>qjournal://bigdata01:8485;bigdata02:8485;bigdata03:8485/hadoopdajun</value> 
    </property> 
    <!-- 本地磁盤存放數據的位置 --> 
    <property> 
        <name>dfs.journalnode.edits.dir</name> 
        <value>/home/bigdata/data/journaldata</value> 
    </property> 
    <!-- 開啓NameNode失敗自動切換 --> 
    <property> 
        <name>dfs.ha.automatic-failover.enabled</name> 
        <value>true</value> 
    </property> 
    <!-- 配置失敗自動切換的代理類 --> 
    <property> 
        <name>dfs.client.failover.proxy.provider.hadoopdajun</name> 
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 
    </property> 
    <!-- 配置隔離機制方法,多個機制用換行分割,即每一個機制暫用一行-->
    <property> 
        <name>dfs.ha.fencing.methods</name> 
        <value> 
            sshfence 
            shell(/bin/true) 
        </value> 
    </property> 
    <!-- 使用sshfence隔離機制時須要ssh免登錄 --> 
    <property> 
        <name>dfs.ha.fencing.ssh.private-key-files</name> 
        <value>/home/bigdata/.ssh/id_rsa</value> 
    </property>
    <!-- 配置sshfence隔離機制超時時間 --> 
    <property> 
        <name>dfs.ha.fencing.ssh.connect-timeout</name> 
        <value>30000</value> 
    </property> 
    <property> 
        <name>dfs.webhdfs.enabled</name> 
        <value>true</value> 
    </property> 
</configuration>

core-site.xml

這裏配置zookeeper的相關信息,而且fs.defaultFS配置的是nameservice的名稱,而不是以前的地址。shell

<configuration> 
    <!-- hdfs-site.xm中配置的nameservice --> 
    <property> 
        <name>fs.defaultFS</name>
        <value>hdfs://hadoopdajun/</value> 
    </property> 
    <!-- 指定hadoop工做目錄 --> 
    <property> 
        <name>hadoop.tmp.dir</name> 
        <value>/home/bigdata/data/hadoopdata/</value> 
    </property> 
    <!-- 指定zookeeper集羣訪問地址 --> 
    <property> 
        <name>ha.zookeeper.quorum</name> 
        <value>bigdata01:2181,bigdata02:2181,bigdata03:2181</value> 
    </property>

yarn-site.xml

爲yarn配置zookeeper信息。apache

<configuration>

<!-- Site specific YARN configuration properties -->
    <!-- 開啓高可用 --> 
    <property> 
        <name>yarn.resourcemanager.ha.enabled</name> 
        <value>true</value> 
    </property> 
    <!-- 指定RM的cluster id --> 
    <property> 
        <name>yarn.resourcemanager.cluster-id</name> 
        <value>yarndajun</value> 
    </property> 
    <!-- 指定RM的兩個節點 --> 
    <property> 
        <name>yarn.resourcemanager.ha.rm-ids</name> 
        <value>rm1,rm2</value> 
    </property> 
    <!-- 指定兩個節點的位置 -->
    <property> 
        <name>yarn.resourcemanager.hostname.rm1</name> 
        <value>bigdata03</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.hostname.rm2</name> 
        <value>bigdata04</value> 
    </property> 
    <!-- 指定zk集羣地址 -->
    <property> 
        <name>yarn.resourcemanager.zk-address</name> 
        <value>bigdata01:2181,bigdata02:2181,bigdata03:2181</value> 
    </property> 
    <!-- 要運行MapReduce程序必須配置的附屬服務 --> 
    <property> 
        <name>yarn.nodemanager.aux-services</name> 
        <value>mapreduce_shuffle</value> 
    </property> 
    <!-- 開啓YARN集羣的日誌聚合功能 --> 
    <property> 
        <name>yarn.log-aggregation-enable</name> 
        <value>true</value> 
    </property> 
    <!-- YARN集羣的聚合日誌最長保留時長 --> 
    <property> 
        <name>yarn.log-aggregation.retain-seconds</name> 
        <value>86400</value> 
    </property> 
    <!-- 啓用自動恢復 --> 
    <property> 
        <name>yarn.resourcemanager.recovery.enabled</name> 
        <value>true</value> 
    </property> 
    <!-- 制定resourcemanager的狀態信息存儲在zookeeper集羣上--> 
    <property> 
        <name>yarn.resourcemanager.store.class</name> 
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
</configuration>

mapred-site.xml

這個跟以前就多了歷史服務器信息。segmentfault

<configuration>
    <!-- 執行框架設置爲Hadoop YARN --> 
    <property> 
        <name>mapreduce.framework.name</name> 
        <value>yarn</value> 
    </property> 
    <!-- 設置mapreduce的歷史服務器地址和端口號 --> 
    <property> 
        <name>mapreduce.jobhistory.address</name> 
        <value>bigdata04:10020</value> 
    </property> 
    <!-- mapreduce歷史服務器的web訪問地址 --> 
    <property> 
        <name>mapreduce.jobhistory.webapp.address</name> 
        <value>bigdata04:19888</value> 
    </property>
</configuration>

運行

啓動journalnode,在bigdata0一、bigdata0二、bigdata03執行:服務器

hadoop-daemon.sh start journalnode

在bigdata01格式化namenode:app

hadoop namenode -format

生成/home/bigdata/data/hadoopdata發送到bigdata02服務器。
zookeeper元數據初始化:框架

hdfs zkfc -formatZK

啓動hdfs集羣和yarn集羣,hdfs啓動在任意節點,yarn啓動分佈在bigdata0三、bigdata04更執行一次。ssh

start-dfs.sh
start-yarn.sh

http://bigdata01:50070 界面:
image.png
http://bigdata02:50070 界面:
image.png
能夠看到,bigdata01是active狀態,bigdata02是standby狀態。若是把bigdata01的進程殺死,那bigdata02自動會變成active狀態。
http://bigdata03:8088/ 界面和http://bigdata04:8088/ 界面是同樣的,我這裏bigdata04是主節點,若是訪問bigdata03會自動調到bigdata04界面。webapp

其餘

安裝這個HA集羣,相比以前費了很多力,也從新安裝了不少次,/home/bigdata/data/的hadoopdata、journaldata、zkdata文件夾甚至bigdata0二、bigdata0三、bigdata04的haddoop文件夾也刪除了幾回。有寫多是配置文件沒寫好,有寫多是以前的遺留數據,有寫是zk服務問題等。

相關文章
相關標籤/搜索