hadoop高可靠性HA集群

概述


 

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)站空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、銀川網(wǎng)站維護(hù)、網(wǎng)站推廣。

簡(jiǎn)單hdfs高可用架構(gòu)圖

 

hadoop高可靠性HA集群

在hadoop2.x中通常由兩個(gè)NameNode組成,一個(gè)處于active狀態(tài),另一個(gè)處于standby狀態(tài)。Active NameNode對(duì)外提供服務(wù),而Standby NameNode則不對(duì)外提供服務(wù),僅同步active namenode的狀態(tài),以便能夠在它失敗時(shí)快速進(jìn)行切換。
    hadoop2.x官方提供了兩種HDFS HA的解決方案,一種是NFS,另一種是QJM。這里樓主使用簡(jiǎn)單的QJM。在該方案中,主備N(xiāo)ameNode之間通過(guò)一組JournalNode同步元數(shù)據(jù)信息,一條數(shù)據(jù)只要成功寫(xiě)入多數(shù)JournalNode即認(rèn)為寫(xiě)入成功。通常配置奇數(shù)個(gè)JournalNode(我配了3個(gè))。
    這里還配置了一個(gè)zookeeper集群,用于ZKFC(DFSZKFailoverController)故障轉(zhuǎn)移,當(dāng)Active NameNode掛掉了,會(huì)自動(dòng)切換Standby NameNode為standby狀態(tài)。hadoop2.4以前的版本中依然存在一個(gè)問(wèn)題,就是ResourceManager只有一個(gè),存在單點(diǎn)故障,2.4以后解決了這個(gè)問(wèn)題,有兩個(gè)ResourceManager,一個(gè)是Active,一個(gè)是Standby,狀態(tài)由zookeeper進(jìn)行協(xié)調(diào)。yarn的HA配置樓主會(huì)給出配置文件,受環(huán)境影響,這里就不搭建yarn的高可用性了。

主要步驟


 

  1. 備6臺(tái)Linux機(jī)器

  2. 安裝JDK、配置主機(jī)名、修改IP地址、關(guān)閉防火墻

  3. 配置SSH免登陸

  4. 安裝zookeeper集群

  5. zookeeper、hadoop環(huán)境變量配置

  6. 核心配置文件修改

  7. 啟動(dòng)zookeeper集群

  8. 啟動(dòng)journalnode

  9. 格式化文件系統(tǒng)、格式化zk

  10. 啟動(dòng)hdfs、啟動(dòng)yarn

前期準(zhǔn)備


集群規(guī)劃

  

 主機(jī)名IP安裝軟件進(jìn)程
hadoop01192.168.8.101jdk、hadoopNameNode、DFSZKFailoverController(zkfc)
hadoop02192.168.8.102jdk、hadoopNameNode、DFSZKFailoverController(zkfc)
hadoop03192.168.8.103jdk、hadoopResourceManager
hadoop04192.168.8.104jdk、hadoop、zookeeperDataNode、NodeManager、JournalNode、QuorumPeerMain
hadoop05192.168.8.105jdk、hadoop、zookeeperDataNode、NodeManager、JournalNode、QuorumPeerMain
hadoop06192.168.8.106jdk、hadoop、zookeeperDataNode、NodeManager、JournalNode、QuorumPeerMain

 

Linux環(huán)境  

1.由于樓主機(jī)器硬件環(huán)境的限制,這里只準(zhǔn)備了6臺(tái)centos7的系統(tǒng)。

hadoop高可靠性HA集群
  2.修改IP。如果跟樓主一樣使用VM搭集群,請(qǐng)使用only-host模式。

vim /etc/sysconfig/network-scripts/ifcfg-ens3<!--這里不一定是ifcfg-ens3,取決于你的網(wǎng)卡信息-->

hadoop高可靠性HA集群

TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="7f13c30b-0943-49e9-b25d-8aa8cab95e20"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.8.101"<!--每臺(tái)機(jī)器按照分配的IP進(jìn)行配置-->NETMASK="255.255.255.0"
GATEWAY="192.168.8.1"

hadoop高可靠性HA集群


  3.修改主機(jī)名和IP的映射關(guān)系 

hadoop高可靠性HA集群

1  vim /etc/host2 3 192.168.8.101 hadoop014 192.168.8.102 hadoop025 192.168.8.103 hadoop036 192.168.8.104 hadoop047 192.168.8.105 hadoop058 192.168.8.106 hadoop06

hadoop高可靠性HA集群

4.關(guān)閉防火墻

1 systemctl stop firewalld.service //停止firewall2 systemctl disable firewalld.service //禁止firewall開(kāi)機(jī)啟動(dòng)

5.修改主機(jī)名

1 hostnamectl set-hostname hadoop012 hostnamectl set-hostname hadoop023 hostnamectl set-hostname hadoop034 hostnamectl set-hostname hadoop045 hostnamectl set-hostname hadoop056 hostnamectl set-hostname hadoop06

6.ssh免登陸

生成公鑰、私鑰

ssh-keygen -t rsa //一直回車(chē)

hadoop高可靠性HA集群

將公鑰發(fā)送到其他機(jī)器

ssh-coyp-id hadoop01
ssh-coyp-id hadoop02
ssh-coyp-id hadoop03
ssh-coyp-id hadoop04
ssh-coyp-id hadoop05
ssh-coyp-id hadoop06


  7.安裝JDK,配置環(huán)境變量

hadoop01,hadoop02,hadoop03

1 export JAVA_HOME=/usr/jdk1.7.0_602 export HADOOP_HOME=/home/hadoop/hadoop-2.7.33 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

hadoop04,hadoop05,hadoop06(包含zookeeper)

1 export JAVA_HOME=/usr/jdk1.7.0_602 export HADOOP_HOME=/home/hadoop/hadoop-2.7.33 export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.104 export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

zookeeper集群安裝


 

1.上傳zk安裝包
  上傳到/home/hadoop
  2.解壓

tar -zxvf zookeeper-3.4.10.tar.gz


  3.配置(先在一臺(tái)節(jié)點(diǎn)上配置)
    在conf目錄,更改zoo_sample.cfg文件為zoo.cfg
  

 mv zoo_sample.cfg zoo.cfg

   
    修改配置文件(zoo.cfg)
       

1 dataDir=/home/hadoop/zookeeper-3.4.10/data       
2 server.1=hadoop04:2888:38883 server.2=hadoop05:2888:38884 server.3=hadoop06:2888:3888

    
    在(dataDir=/home/hadoop/zookeeper-3.4.10/data)創(chuàng)建一個(gè)myid文件,里面內(nèi)容是server.N中的N(server.2里面內(nèi)容為2)
      

1  echo "5" > myid


    4.將配置好的zk拷貝到其他節(jié)點(diǎn) 
      

1 scp -r /home/hadoop/zookeeper-3.4.5/ hadoop05:/home/hadoop2 scp -r /home/hadoop/zookeeper-3.4.5/ hadoop06:/home/hadoop

   
    注意:在其他節(jié)點(diǎn)上一定要修改myid的內(nèi)容
        在hadoop05應(yīng)該將myid的內(nèi)容改為2 (echo "6" > myid)
        在hadoop06應(yīng)該將myid的內(nèi)容改為3 (echo "7" > myid)

5.啟動(dòng)集群
    分別啟動(dòng)hadoop04,hadoop05,hadoop06上的zookeeper      

1 zkServer.sh start

hadoop2.7.3集群安裝


 

1.解壓         

1  tar -zxvf hadoop-2.7.3.tar.gz

      2.配置core-site.xml          

hadoop高可靠性HA集群

 1 <configuration> 2     <!-- 指定hdfs的nameservice為ns1 --> 3     <property> 4         <name>fs.defaultFS</name> 5         <value>hdfs://ns1</value> 6     </property> 7     <!-- 指定hadoop臨時(shí)目錄 --> 8     <property> 9         <name>hadoop.tmp.dir</name>10         <value>/home/hadoop/hadoop-2.7.3/tmp</value>11     </property>12     <!-- 指定zookeeper地址 -->13     <property>14         <name>ha.zookeeper.quorum</name>15         <value>hadoop04:2181,hadoop05:2181,hadoop06:2181</value>16     </property>17 </configuration>

hadoop高可靠性HA集群

   3.配置hdf-site.xml

hadoop高可靠性HA集群

 1 <configuration> 2 <!--指定hdfs的nameservice為ns1,必須和core-site.xml中的保持一致 --> 3     <property> 4         <name>dfs.nameservices</name> 5         <value>ns1</value> 6     </property> 7     <!-- ns1下面有兩個(gè)NameNode,分別是nn1,nn2 --> 8     <property> 9         <name>dfs.ha.namenodes.ns1</name>10         <value>nn1,nn2</value>11     </property>12     <!-- nn1的RPC通信地址 -->13     <property>14         <name>dfs.namenode.rpc-address.ns1.nn1</name>15         <value>hadoop01:9000</value>16     </property>17     <!-- nn1的http通信地址 -->18     <property>19         <name>dfs.namenode.http-address.ns1.nn1</name>20         <value>hadoop01:50070</value>21     </property>22     <!-- nn2的RPC通信地址 -->23     <property>24         <name>dfs.namenode.rpc-address.ns1.nn2</name>25         <value>hadoop02:9000</value>26     </property>27     <!-- nn2的http通信地址 -->28     <property>29         <name>dfs.namenode.http-address.ns1.nn2</name>30         <value>hadoop02:50070</value>31     </property>32     <!-- 指定NameNode的元數(shù)據(jù)在JournalNode上的存放位置 -->33     <property>34         <name>dfs.namenode.shared.edits.dir</name>35         <value>qjournal://hadoop04:8485;hadoop05:8485;hadoop06:8485/ns1</value>36     </property>37     <!-- 指定JournalNode在本地磁盤(pán)存放數(shù)據(jù)的位置 -->38     <property>39         <name>dfs.journalnode.edits.dir</name>40         <value>file:/home/hadoop/hadoop-2.7.3/journal</value>41     </property>42     <!-- 開(kāi)啟NameNode失敗自動(dòng)切換 -->43     <property>44         <name>dfs.ha.automatic-failover.enabled</name>45         <value>true</value>46     </property>47     <!-- 配置失敗自動(dòng)切換實(shí)現(xiàn)方式 -->48     <property>49         <name>dfs.client.failover.proxy.provider.ns1</name>50         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>51     </property>52     <!-- 配置隔離機(jī)制方法,多個(gè)機(jī)制用換行分割,每個(gè)機(jī)制占用一行-->53     <property>54         <name>dfs.ha.fencing.methods</name>55         <value>56             sshfence57             shell(/bin/true)58         </value>59     </property>60     <!-- 使用sshfence隔離機(jī)制時(shí)需要ssh免登陸 -->61     <property>62         <name>dfs.ha.fencing.ssh.private-key-files</name>63         <value>/home/hadoop/.ssh/id_rsa</value>64     </property>65     <!-- 配置sshfence隔離機(jī)制超時(shí)時(shí)間 -->66     <property>67         <name>dfs.ha.fencing.ssh.connect-timeout</name>68         <value>30000</value>69     </property>70 </configuration>

hadoop高可靠性HA集群

4.配置mapred-site.xml

hadoop高可靠性HA集群

1 <configuration>2 <!-- 指定mr框架為yarn方式 -->3     <property>4         <name>mapreduce.framework.name</name>5         <value>yarn</value>6     </property>7 </configuration>

hadoop高可靠性HA集群

5.配置yarn-site.xml

 

hadoop高可靠性HA集群

 1 <configuration> 2  3 <!-- Site specific YARN configuration properties --> 4     <!-- 指定RM的地址 --> 5     <property> 6        <name>yarn.resourcemanager.hostname.rm1</name> 7        <value>hadoop03</value> 8     </property>         9     <property>10        <name>yarn.nodemanager.aux-services</name>11        <value>mapreduce_shuffle</value>12     </property>13 </configuration>

hadoop高可靠性HA集群

6.配置slaves

1 hadoop042 hadoop053 hadoop06

7.將配置好的hadoop拷貝到其他節(jié)點(diǎn)

scp -r /home/hadoop/hadoop-2.7.3 hadoop02:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.3 hadoop03:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.3 hadoop04:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.3 hadoop05:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.3 hadoop06:/home/hadoop

啟動(dòng)


 

1.啟動(dòng)zookeeper集群(分別在hadoop04,hadoop05,hadoop06上啟動(dòng)zookeeper)
           

1 zkServer.sh start

2.查看zookeeper狀態(tài)

1 zkServer.sh status

包含一個(gè)leader,二個(gè)follower

hadoop高可靠性HA集群hadoop高可靠性HA集群hadoop高可靠性HA集群

3.啟動(dòng)journalnode(分別在hadoop04,hadoop05,hadoop06上執(zhí)行)          

hadoop-daemon.sh start journalnode

        運(yùn)行jps命令檢驗(yàn),hadoop04,hadoop05,hadoop06上多了JournalNode進(jìn)程

4.格式化HDFS

     在hadoop01上執(zhí)行命令:          

1 hdfs namenode -format

檢查是否成功看終端知否打印:

hadoop高可靠性HA集群

       格式化后會(huì)在根據(jù)core-site.xml中的hadoop.tmp.dir配置生成個(gè)文件,這里樓主配置的是/home/hadoop/hadoop-2.7.3/tmp,然后將/home/hadoop/hadoop-2.7.3/tmp拷貝到ihadoop02的/home/hadoop/hadoop-2.7.3/下。
           

1 scp -r tmp/ hadoop02:/hadoop/hadoop-2.7.3/

5.格式化ZK(在hadoop01上執(zhí)行即可)
          

1  hdfs zkfc -formatZK

效果如下(前面有點(diǎn)多截不下來(lái),只截取了后面一部分):

hadoop高可靠性HA集群

6.啟動(dòng)HDFS(在hadoop01上執(zhí)行)

1 start-dfs.sh

      7.啟動(dòng)YARN(在hadoop03上執(zhí)行)          

1 start-yarn.sh

驗(yàn)證


 

到此,hadoop-2.7.3集群全部配置完畢,下面我們來(lái)驗(yàn)證:

瀏覽器訪問(wèn)http://192.168.8.101:50070    NameNode 'hadoop01:9000' (active)
             http://192.168.8.102:50070   NameNode 'hadoop02:9000' (standby)

 

 hadoop高可靠性HA集群hadoop高可靠性HA集群

瀏覽器訪問(wèn)resourceManager:http://192.168.8.103:8088

hadoop高可靠性HA集群

 

我們可以模擬NameNode(active)宕機(jī),來(lái)驗(yàn)證HDFS的HA是否有效,NameNode(active)宕機(jī)后,NameNode(standby)會(huì)轉(zhuǎn)為active狀態(tài),這里樓主不在演示。

結(jié)語(yǔ)


 

官網(wǎng)給出的文檔還是比較詳細(xì)的,樓主也是提取了官網(wǎng)的QJM解決方案來(lái)進(jìn)行搭建。另外,yarn的HA搭建官網(wǎng)也給出了具體配置,有興趣的同學(xué)可以試一試。

分享題目:hadoop高可靠性HA集群
文章位置:http://muchs.cn/article32/jpiesc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站網(wǎng)站排名、網(wǎng)站收錄網(wǎng)站建設(shè)、商城網(wǎng)站、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站