【Hadoop 分布式部署 十:配置HDFS 的HA、啟動HA中的各個守護進程】


官方參考 配置 地址  :http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

 

一、

  在Hadoop-senior.zuoyan.com 的主機上

    首先將Hadoop安裝目錄下 etc下的hadoop的配置文件進行備份  使用命令:  cp -r hadoop dist-hadoop

     然后在Hadoop安裝目錄下 data 文件夾內  將tmp 文件夾 重命名  使用命令  :  mv  tmp dits-tmp   ,重命名完成后,在創建一個文件夾   mkdir  tmp

  然后在其余的 兩台主機上也重復這個操作

     將hadoop安裝目錄下的etc下的hadoop的所有配置文件復制文件為  dist-hadoop  然后再Hadoop的主安裝目錄中的data 下的  tmp 目錄重命名為  dist-tmp 然后在創建新的數據存放目錄

      說明:圖片中使用的命令有錯誤,不應該是重命名hadoop  而應該是重新復制文件,將復制文件的名字設置為  dist-hadoop

     

    

二、修改配置文件

    打開core-site.xml  和  hdfs-site.xml 文件

    在core-site.xml   文件中配置

    

        因為是NameNode 的高可用行,配制兩台機器的NameNode ,需要修改這個,所以需要配置成集群

      

    

 

    在hdfs-site.xml 配置文件中配制:

     首先去除掉

      

	
	<!--配置secondary namenode 所在的主機-->
	<property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoop-senior03.zuoyan.com:50090</value>
        </property>

      

    在  /opt/app/hadoop2.5.0/data  目錄下創建文件夾   dfs/jn   用來存放NameNode的 日志信息

    

    

    然后在從hdfs-site.xml 文件中配置

      

        <!--配置Hadoop NameNode 的HA -->
    <property>
        <name>dfs.nameservices</name>
        <value>ns1</value>
    </property>

    
    <property>
      <name>dfs.ha.namenodes.ns1</name>
      <value>nn1,nn2</value>
    </property>
    
    <!--                 NameNode RPC  Adress             -->
    <property>
      <name>dfs.namenode.rpc-address.ns1.nn1</name>
      <value>hadoop-senior.zuoyan.com:8020</value>
    </property>
    
    <property>
      <name>dfs.namenode.rpc-address.ns1.nn2</name>
      <value>hadoop-senior02.zuoyan.com:8020</value>
    </property>
    
    <!-- 配置 WEB  界面的 訪問地址和端口  -->
    <property>
        <name>dfs.namenode.http-address.ns1.nn1</name>
        <value>hadoop-senior.zuoyan.com:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.ns1.nn2</name>
        <value>hadoop-senior02.zuoyan.com:50070</value>
    </property>
    
    <!--配置 NameNode Shared  EDITS  Address  和NameNode 日志文件存放的位置   -->
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://hadoop-senior.zuoyan.com:8485;hadoop-senior02.zuoyan.com:8485;hadoop-senior03.zuoyan.com:8485/ns1</value>
    </property>
    
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/opt/app/hadoop-2.5.0/data/dfs/jn</value>
    </property>

    <!-- 配置 HDFS  PROXY  Client -->
    <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    <!--配置兩個  NameNode的隔離機制  -->
    <!--   使用的方式是  ssh-fence   要求是兩個NameNode 之間能夠無密碼登錄  兩個主機之間能互相ssh無密鑰登錄   -->
    <property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence</value>
    </property>

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

    

配置好 主機一(hadoop-senior.zuoyan.com)  需要將配置文件進行同步

    使用命令  scp -r etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml etc/hadoop/slaves beifeng@hadoop-senior02.zuoyan.com:/opt/app/hadoop-2.5.0/etc/hadoop/

    

    

 

開始啟動QJM   HA:

 

    完成后,分別啟動三個節點的journalnode    使用命令:   sbin/hadoop-daemon.sh start journalnode   每個節點啟動后     使用jps查看一下進程,看任務是否啟動

              

    可以查看一下啟動日志(這個步驟不是必須要做的   可以看見journalnode 的啟動日志):

    

    

    在NameNode1節點上      對文件系統進行格式化,產生fsimage 文件   使用命令  :  bin/hdfs namenode -format  然后再啟動NameNode

    

    

    在NameNode1 上啟動namenode 使用命令  :  bin/hadoop-daemon.sh start namenode

    

    

    之后在NameNode2   上同步NameNode1 的元數據信息

    使用命令:bin/hdfs namenode -bootstrapStandby

     

     

     可以看到復制鏡像文件是從Hadoop-senior.zuoyan.com 上拷貝

     

     

      然后啟動NameNode2  使用命令:    sbin/hadoop-daemon.sh start namenode

      

      然后分別訪問這兩個主機的50070 發現如果可以訪問  就初步配置成功

      

                                

      

        然后啟動所有機器上的DataNode  使用命令:sbin/start-dfs.sh  (也可以使用命令 一個個啟動   sbin/hadoop-daemon.sh  start datanode  我這里省事,就所有機器的都啟動)

            打開WEB界面  發現兩個NameNode 都可以進行管理 這樣就是配置成功!!!

           

 

 

         使用命令將第一個節點改變為活躍狀態,使用命令:   bin/hdfs haadmin -transitionToActive nn1

            (可以看到這個NameNode 節點  已經改變為活躍狀態)

          

            也可以通過命令 來查看節點的狀態    (可以看到這兩個主機 一個是active  一個是 standby)

            

            

            現在查看一下 HDFS文件系統上的文件  來進行測試NameNode

            (下面沒有打印出文件    這個上面說沒有找到ns1  這個原因技就是我們在配置Proxy的時候 沒有改變myclsur)

            

              

            下面這個內容配置錯誤的原因,我現在已經更改過來了

            

 

            更改完成后,在執行一下    (就可以看見文件目錄已經循環出來了)

            

            使用命令創建文件目錄

            

            將文件上傳到文件系統上  

                   

            通過文件管理的web界面進行查看  (就會發現文件已經上傳成功)

            

             然后 在測試HA的讀取功能  使用命令:  bin/hdfs dfs -text /user/zuoyan/conf/core-site.xml

               

               文件已經成功  正常的被讀取出來了

               

              然后通過命令  將  nn1 切換稱 standby  將nn2 切換成  active  

              將節點切換成Standby的命令 :bin/hdfs haadmin -transitionToStandby  nn1

              將節點切換成Active  的命令   :   bin/hdfs haadmin -transitionToActive nn2

              

 

               切換之后在用NameNode 1 去讀取HDFS上的文件  測試 是否能正常讀取文件

                (切換之后已經正常的讀取出來了,證明節點切換 對集群是沒有影響的)

               

 

               完成到這樣  HDFS的高可用 已經初步搭建好了

 

    

 

 

 

        

  

    

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM