hadoop2.8 ha 集羣搭建

簡介:

  最近在看hadoop的一些知識,下面搭建一個ha (高可用)的hadoop完整分佈式集羣:html

  hadoop的單機,僞分佈式,分佈式安裝node

       hadoop2.8 集羣 1 (僞分佈式搭建linux

       hadoop2.8 ha 集羣搭建shell

  hbase完整分佈式集羣搭建apache

  hadoop完整集羣遇到問題彙總centos

搭建步驟:

主機 別名 安裝軟件 現有進程 服務地址
192.168.248.138 cdh1 hadoop2.8 jdk1.8 namenode DFSZKFailoverController http://cdh1:50070 
192.168.248.139 cdh2 hadoop2.8 jdk1.8 namenode DFSZKFailoverController http://cdh1:50070
192.168.248.140 cdh3 hadoop2.8 jdk1.8 ResourceManager  
192.168.248.141 cdh4 hadoop2.8 jdk1.8 zookeeper3.4.13 QuorumPeerMain JournalNode DataNode NodeManager  http://cdh3:8088
192.168.248.142 cdh5 hadoop2.8 jdk1.8 zookeeper3.4.13  QuorumPeerMain JournalNode DataNode NodeManager   
192.168.248.143 cdh6 hadoop2.8 jdk1.8 zookeeper3.4.13  QuorumPeerMain JournalNode DataNode NodeManager   
192.168.248.144 cdh7 hadoop2.8 jdk1.8  JournalNode DataNode NodeManager   

 

1>  關閉防火牆,禁止設置開機啓動:bash

    (1) //臨時關閉 systemctl stop firewalld服務器

    (2) //禁止開機啓動 systemctl disable firewalldssh

     

    注意:centos7防火牆默認是:firewalld  分佈式

      centos6 的命令是:

        //臨時關閉

        service iptables stop

        //禁止開機啓動

        chkconfig iptables off

      2> 修改selinux 屬性爲disabled

         

      注意:修改了selinux或者修改了hostname須要重啓使其生效【在這我沒當即啓動,下面配置好基礎環境後再統一啓動】

    3> Yum 安裝net-tools.x86_64lrzsz.x86_64  

      (1) Net-tools是爲了ifconfig    yum install -y net-tools.x86_64

      (2) Lrzsz是方便拖文件上傳    yum install -y  lrzsz.x86_64

      由於個人鏡像是,mini版的centos,除了基礎命令和yum其餘命令都須要本身安裝。若是用完整版centos這些命令都已經集成進去了。 

    4>  準備集羣所須要的相應軟件安裝包

      (1) Jdk1.8

      (2) Hadoop2.8

      (3) Zookeeper3.4.13

    暫時準備這這些基本軟件,在cdh家目錄下建立一個hadoop目錄,把上述基本軟件上傳到該家目錄下的hadoop文件夾下。

      

 

      (4) 安裝jdk【用root權限去安裝】

        ① [cdh@localhost hadoop]$ tar -zxvf jdk-8u181-linux-x64.tar.gz

        ② 修改環境變量  vi ~/.bash_profile |   vi /etc/profile

        

        source ~/.bash_profile  使其生效

        Java -version 驗證安裝是否成功

         

    到這cdh1號機器基本軟件安裝完成:下面我來關閉cdh1來克隆幾份服務器,這樣cdh1安裝配置那些軟件和配置都會同步過去。克隆步驟以下

      (1) 首先關閉cdh1服務器,由於在啓動和掛起的狀態下沒法克隆機器。

         

        

        

        

        

        

 

         

 

        啓動cdh1-cdh7   xshell中創建對七個虛機的鏈接

           

 

        注意,在這我使用的不是root用戶,都是普通用戶cdh

    5> 安裝hadoop集羣的準備工做:

      (1) 修改主機名:

      root用戶登陸

        vi /etc/hostname

        自定義主機名

      重啓 reboot

      (2) ssh免密登陸問題。

       分別在每一個節點上生成公鑰私鑰:
              cd /root/.ssh    
              ssh-keygen -t rsa次回車
              cp id_rsa.pub  authorized_keys 

         

       複製祕鑰報錯,是由於解析主機報錯。配置/etc/hosts便可

         

        

 

    將cdh2cdh3cdh4cdh5cdh6,cdh7的私鑰複製到cdh1節點上:

              cdh2節點上執行:ssh-copy-id -i cdh1

              cdh3節點上執行:ssh-copy-id -i cdh1

              cdh4節點上執行:ssh-copy-id -i cdh1

              cdh5節點上執行:ssh-copy-id -i cdh1

              cdh6節點上執行:ssh-copy-id -i cdh1

        cdh7節點上執行:ssh-copy-id -i cdh1

      cdh1節點上的authorized_keys複製給cdh2cdh3cdh4cdh5cdh6,cdh7節點:

              cdh1節點上執行:scp /root/.ssh/authorized_keys cdh2:/root/.ssh/

              cdh1節點上執行:scp /root/.ssh/authorized_keys cdh3:/root/.ssh/

              cdh1節點上執行:scp /root/.ssh/authorized_keys cdh4:/root/.ssh/

              cdh1節點上執行:scp /root/.ssh/authorized_keys cdh5:/root/.ssh/

              cdh1節點上執行:scp /root/.ssh/authorized_keys cdh6:/root/.ssh/

              cdh1節點上執行:scp /root/.ssh/authorized_keys cdh7:/root/.ssh/

      驗證ssh免密碼登陸(包括登陸本身):

              cdh1節點上執行:ssh cdh1ssh cdh2ssh cdh3ssh cdh4ssh cdh5ssh cdh6,ssh cdh7

              cdh2節點上執行:ssh cdh1ssh cdh2ssh cdh3ssh cdh4ssh cdh5ssh cdh6,ssh cdh7

              cdh3節點上執行:ssh cdh1ssh cdh2ssh cdh3ssh cdh4ssh cdh5ssh cdh6,ssh cdh7

              cdh4節點上執行:ssh cdh1ssh cdh2ssh cdh3ssh cdh4ssh cdh5ssh cdh6,ssh cdh7

              cdh5節點上執行:ssh cdh1ssh cdh2ssh cdh3ssh cdh4ssh cdh5ssh cdh6,ssh cdh7

              cdh6節點上執行:ssh cdh1ssh cdh2ssh cdh3ssh cdh4ssh cdh5ssh cdh6,ssh cdh7

              cdh7節點上執行:ssh cdh1ssh cdh2ssh cdh3ssh cdh4ssh cdh5ssh cdh6,ssh cdh7

   6> cdh1節點上配置hadoop2.8

    (1) 配置hadoop環境變量

       

      source /etc/profile  保存生效

    (2) 修改位於hadoop/etc/hadoop下的配置文件(hadoop-env.shcore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlslaves)

       修改hadoop-env.sh

         

      修改core-site.xml

        

 

      修改hdfs-site.xml

        

<configuration>
                <!--指定hdfs的nameservice爲ns1,須要和core-site.xml中的保持一致 -->
                <property>
                    <name>dfs.nameservices</name>
                    <value>ns1</value>
                </property>
                <!-- ns1下面有兩個NameNode,分別是nn1,nn2 -->
                <property>
                    <name>dfs.ha.namenodes.ns1</name>
                    <value>nn1,nn2</value>
                </property>
                <!-- nn1的RPC通訊地址 -->
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn1</name>
                    <value>cdh1:9000</value>
                </property>
                <!-- nn1的http通訊地址 -->
                <property>
                    <name>dfs.namenode.http-address.ns1.nn1</name>
                    <value>cdh1:50070</value>
                </property>
                <!-- nn2的RPC通訊地址 -->
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn2</name>
                    <value>cdh2:9000</value>
                </property>
                <!-- nn2的http通訊地址 -->
                <property>
                    <name>dfs.namenode.http-address.ns1.nn2</name>
                    <value>cdh2:50070</value>
                </property>
                <!-- 指定NameNode的元數據在JournalNode上的存放位置 -->
                <property>
                    <name>dfs.namenode.shared.edits.dir</name>
                    <value>qjournal://cdh4:8485;cdh5:8485;cdh6:8485/ns1</value>
                </property>
                <!-- 指定JournalNode在本地磁盤存放數據的位置 -->
                <property>
                    <name>dfs.journalnode.edits.dir</name>
                    <value>/cloud/hadoop/journal</value>
                </property>
                <!-- 開啓NameNode失敗自動切換 -->
                <property>
                    <name>dfs.ha.automatic-failover.enabled</name>
                    <value>true</value>
                </property>
                <!-- 配置失敗自動切換實現方式 -->
                <property>
                    <name>dfs.client.failover.proxy.provider.ns1</name>
                    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
                </property>
                <!-- 配置隔離機制 -->
                <property>
                    <name>dfs.ha.fencing.methods</name>
                    <value>sshfence</value>
                </property>
                <!-- 使用隔離機制時須要ssh免登錄 -->
                <property>
                    <name>dfs.ha.fencing.ssh.private-key-files</name>
                    <value>/root/.ssh/id_rsa</value>
                </property>
</configuration>

 

      修改mapred-site.xml

        

 

      修改yarn-site.xml

        

      修改slaves:(datanode節點設置,cdh7是我預留的機器,裝ozzie或者pig的暫時不放入datanode節點中)【若是須要把其餘機器做爲datanode節點。只須要在這配置,而後同步到其餘機器上,而後namenode從新格式化便可

        cdh4

        cdh5

        cdh6

注意:core-site.xml中指定了hadoop數據存放的本地磁盤路徑是/hadoop/data,而這個/hadoop/data文件夾是不存在須要建立;
         hdfs-site.xml中指定了JournalNode在本地磁盤存放數據的位置是/hadoop/journal,而/hadoop/下的journal文件夾是不存在的須要建立。
    此上6個配置文件都是hdp1節點上的,修改完成後將配置好的環境變量/etc/profile文件、/cloud/jdk文件夾和/cloud/hadoop文件夾複製到其餘節點:
        
              hdp1節點上執行: scp -r /hadoop/ cdh2:/

    在hdp1節點上執行: scp -r /hadoop/ cdh3:/

    在hdp1節點上執行: scp -r /hadoop/ cdh4:/

    在hdp1節點上執行: scp -r /hadoop/ cdh5:/

    在hdp1節點上執行: scp -r /hadoop/ cdh6:/

  在hdp1節點上執行: scp -r /hadoop/ cdh7:/
     將環境變量/etc/profile文件複製到其餘節點(在其餘節點上要執行source /etc/profile使其修改當即生效)
           scp /etc/profile cdh2:/etc/

    scp /etc/profile cdh3:/etc/

    scp /etc/profile cdh4:/etc/

    scp /etc/profile cdh5:/etc/

    scp /etc/profile cdh6:/etc/

    scp /etc/profile cdh7:/etc/

7> cdh4,cdh5,cdh6配置zk集羣

   cd /hadoop/目錄下

          解壓zookeeper-3.4.13.tar.gztar -zxvf zookeeper-3.4.13.tar.gz(當前目錄下多了一個zookeeper-3.4.13文件夾)

          重命名zookeeper-3.4.13mv zookeeper-3.4.13 zookeeper

          cd/hadoop/zookeeper/conf/目錄下:cp zoo_sample.cfg zoo.cfg

            vi zoo.cfg

                修改:dataDir=/hadoop/zookeeper/data

            在最後面添加:

              server.1=cdh4:2888:3888

              server.2=cdh5:2888:3888

              server.3=cdh6:2888:3888

        /hadoop/zookeeper/建立data文件夾,進入/hadoop/zookeeper/data下建立myid文件,內容爲1

        /hadoop/zookeeper文件夾複製到cdh5cdh6下:

            cdh4節點上執行:scp -r /hadoop/zookeeper cdh5:/hadoop/

            cdh4節點上執行:scp -r /hadoop/zookeeper cdh6:/hadoop/

            

            cdh5節點上修改/hadoop/zookeeper/data/myid2

            cdh6節點上修改/hadoop/zookeeper/data/myid3  

   啓動zk集羣:

    啓動cdh4cdh5cdh6節點上的zk

        分別在每一個節點上執行:

            cd /hadoop/zookeeper/bin目錄下

            啓動zk./zkServer.sh start

            查看狀態:

                zkServer.sh statusleaderfollower

                jps後多出來個quorumpeerMain

8> 8cdh1節點上啓動journalnode(會啓動全部journalnode

    cd /hadoop/hadoop-2.8.0/sbin目錄下

啓動journalnodehadoop-daemons.sh start journalnode(cdh4cdh5cdh6節點上運行jps命令檢驗,多了JournalNode進程)

     

 

9> hdp1節點上格式化HDFS
    格式化HDFShadoop namenode -format
    將格式化後生成的hadoop的數據文件都在hdp1節點上,須要將hdp1節點上的數據同步到hdp2節點上,由於hdp1節點和hdp2節點是ha,這裏我直接複製:

scp -r /hadoop/data hdp2:/hadoop

10> cdh1節點上格式化ZK

   格式化ZKhdfs zkfc -formatZK

11> cdh1節點上啓動HDFS

     cd /cloud/hadoop/sbin目錄下

  啓動HDFSstart-dfs.sh

12> cdh3節點上啓動YARN
    cd /hadoop/hadoop2.8.0/sbin目錄下
    啓動YARNstart-yarn.sh

13> 驗證namenode


    驗證cdh1節點上的NameNodejps或者http://cdh1:50070
    驗證cdh2節點上的NameNodejps或者http://cdh2:50070
    驗證cdh3節點上的YARNjps或者http://cdh3:8088/

  

    

    

 

 

 


 

到這,hadoop的高可用集羣已經搭建好了,有興趣的能夠仔細看看搭建過程


 

補充:各節點的啓動進程  (jps看)

   

相關文章
相關標籤/搜索