1. 程式人生 > >mapreduce叢集的搭建及安裝

mapreduce叢集的搭建及安裝

mapreduce叢集的搭建及安裝

  • 節點分配

    NameNode
        node01
            主
        node02
            從
    DataNode
        node02
        node03
        node04
    zookeeper
        node02
        node03
        node04
    zkfc
        node01
        node02
    journalnode
        node01
        node02
        node03
    resourcemanager
        node03
        node04
    nodemanager
        node02
        node03
        node04
    
  • 環境檢測

    安裝jdk
        配置環境變數
    配置免祕鑰
        如果本身沒有.ssh檔案需要先生成
            ssh localhost
        如果要和其他節點免祕鑰需要將自己的公鑰發給他,並追加公鑰
            ssh-keygen -t dsa -P '' -f ./id_dsa
            scp -r ./id_dsa.pub [email protected]*:`pwd`/node0*.pub
            cat node0*.pub >> aut……
    
  • 安裝hadoop

    解壓hadoop到指定目錄下
    配置配置檔案
        配置三個env.sh,將其中的JAVA_HOME寫死
    
        修改hdfs-site.xml
    
            命名叢集名
                <name>dfs.nameservices</name>
                  <value>mycluster</value>
            命名叢集下的兩個NN的名稱
                <name>dfs.ha.namenodes.mycluster</name>
                  <value>nn1,nn2</value>
            分別對兩個NN指定其物理路徑:ip加 埠號
                 <name>dfs.namenode.rpc-address.mycluster.nn1</name>
                  <value>node01:8020</value>
                <name>dfs.namenode.rpc-address.mycluster.nn2</name>
                  <value>node02:8020</value>
            指定兩個NN的瀏覽器訪問路徑:ip加埠號
                <name>dfs.namenode.http-address.mycluster.nn1</name>
                  <value>node01:50070</value>
                <name>dfs.namenode.http-address.mycluster.nn2</name>
                  <value>node02:50070</value>
            指定edits的路徑,在journalnode伺服器上,因為journalnode伺服器是公用的,所以需要指定叢集名以示區分
                <name>dfs.namenode.shared.edits.dir</name>
                  <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
            在本機上給一個路徑表示edits的地址
                 <name>dfs.journalnode.edits.dir</name>
                  <value>/var/sxt/hadoop/ha/jn</value>
            給一個類
                <name>dfs.client.failover.proxy.provider.mycluster</name>
                  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
            還有兩個不知道
                <name>dfs.ha.fencing.methods</name>
                  <value>sshfence</value>
                  <name>dfs.ha.fencing.ssh.private-key-files</name>
                  <value>/root/.ssh/id_dsa</value>
            開啟主從NN的切換
                 <name>dfs.ha.automatic-failover.enabled</name>
                   <value>true</value>
    
        修改core-site.xml
            預設檔案系統路徑
                 <name>fs.defaultFS</name>
                  <value>hdfs://mycluster</value>
            hadoop臨時檔案存放路徑
                /var/sxt/hadoop-2.6/ha
            zookeeper叢集節點資訊
                 <name>ha.zookeeper.quorum</name>
                   <value>node02:2181,node03:2181,node04:2181</value>
    
  • 安裝zookeeper

    將zookeeper解壓到指定目錄下
    配置配置檔案
        將conf/zoo重新命名為zoo.cfg
        在裡面將資料存放目錄改掉
            dataDir=/var/sxt/zk
        新增伺服器節點資訊
            server.1=node02:2888:3888
            server.2=node03:2888:3888
            server.3=node04:2888:3888
        在各個節點的/var/sxt/zk下建立一個myid檔案,並將值加入其中
            echo 1 > myid
    
  • 啟動hadoopHA叢集

    啟動zookeeper
        zkServer.sh start
        檢查zookeeper狀態
            zkServer.sh status
    啟動journalnode
        hadoop-daemon.sh start journalnode
    在主NN上
        格式化namenode
            hdfs namenode –format
        啟動NameNode
            hadoop-daemon.sh start namenode
    在另一臺NN上
        hdfs namenode  -bootstrapStandby
    格式化zkfc
        hdfs zkfc -formatZK
    啟動dfs
        start-dfs.sh
    檢查叢集
        jps
        通過瀏覽器訪問
    
  • hadoop+yarn的搭建

    目標:用yarn來管理hadoop叢集的資源排程
    配置mapred-site.xml
        指定mapreduce框架名yarn
            <name>mapreduce.framework.name</name>
                    <value>yarn</value>
    配置yarn-site.xml
        指定shuffle
            <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
        開啟ResourceManager
            <name>yarn.resourcemanager.ha.enabled</name>
               <value>true</value>
        指定叢集id
            <name>yarn.resourcemanager.cluster-id</name>
               <value>cluster1</value>
        指定ResourceManager的虛擬節點
               <name>yarn.resourcemanager.ha.rm-ids</name>
               <value>rm1,rm2</value>
        指定ResourceManager真實物理
            <name>yarn.resourcemanager.hostname.rm1</name>
               <value>node03</value>
            <name>yarn.resourcemanager.hostname.rm2</name>
               <value>node04</value>
        指定zookeeper節點,利用zookeeper實現高可用
            <name>yarn.resourcemanager.zk-address</name>
               <value>node02:2181,node03:2181,node04:2181</value>
    啟動hadoop+yarn
        前面的hadoopHA已經啟動
        在node01上啟動yarn
            start-yarn.sh
            在node03和node04上分別啟動ResourceManager
                yarn-daemon.sh start resourcemanager