1. 程式人生 > >分布式配置hadoop2.5.0 2.6.x

分布式配置hadoop2.5.0 2.6.x

nta aux log start conf 一個 ssi 重啟 保留

1. sudo vim /etc/hostname

  在master的機器上,改成 master

  在slave上寫 slave01,02,03......

  配置好後重啟。

2. sudo vim /etc/hosts (此處最好改成內網中服務器的真實ip,不要用浮動ip,否則會出現“Problem binding to [master:9000] java.net.BindException: Cannot assign requested address; For more details see: http://wiki.apache.org/hadoop/BindException”錯誤)

  192.168.1.121 Master

  192.168.1.122 Slave1

3.ping master ping slave

4.ssh無密碼登錄。

  這個操作是要讓 Master 節點可以無密碼 SSH 登陸到各個 Slave 節點上。

  首先生成 Master 節點的公匙,在 Master 節點的終端中執行(因為改過主機名,所以還需要刪掉原有的再重新生成一次):

  1. cd ~/.ssh # 如果沒有該目錄,先執行一次ssh localhost
  2. rm ./id_rsa* # 刪除之前生成的公匙(如果有)
  3. ssh-keygen -t rsa # 一直按回車就可以

  讓 Master 節點需能無密碼 SSH 本機,在 Master 節點上執行:

  cat ./id_rsa.pub >> ./authorized_keys

  完成後可執行 ssh Master 驗證一下(可能需要輸入 yes,成功後執行 exit 返回原來的終端)。接著在 Master 節點將上公匙傳輸到 Slave1 節點:

  scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/ (由於服務器適用密鑰登陸,沒有密碼,此時需要用xftp工具,把id_rsa.pub傳送到各個slave節點)

  接著在 Slave1 節點上,將 ssh 公匙加入授權:

  1. mkdir ~/.ssh # 如果不存在該文件夾需先創建,若已存在則忽略
  2. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
  3. rm ~/id_rsa.pub # 用完就可以刪掉了

  如果有其他 Slave 節點,也要執行將 Master 公匙傳輸到 Slave 節點、在 Slave 節點上加入授權這兩步。

  這樣,在 Master 節點上就可以無密碼 SSH 到各個 Slave 節點了,可在 Master 節點上執行如下命令進行檢驗

  ssh Slave1

5.配置集群環境

  

    集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5個配置文件,更多設置項可點擊查看官方說明,這裏僅設置了正常啟動所必須的設置項: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。

  1, 文件 slaves,將作為 DataNode 的主機名寫入該文件,每行一個,默認為 localhost,所以在偽分布式配置時,節點即作為 NameNode 也作為 DataNode。分布式配置可以保留 localhost,也可以刪掉,讓 Master 節點僅作為 NameNode 使用。

  本教程讓 Master 節點僅作為 NameNode 使用,因此將文件中原來的 localhost 刪除,只添加一行內容:Slave1。

  2.文件 core-site.xml 改為下面的配置:

    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master:9000</value>
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
      </property>
    </configuration>

  3.件 hdfs-site.xml,dfs.replication 一般設為 3,但我們只有一個 Slave 節點,所以 dfs.replication 的值還是設為 1: 

    <configuration>
      <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>Master:50090</value>
      </property>
      <property>
        <name>dfs.replication</name>
        <value>1</value>
      </property>
      <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
      </property>
    </configuration>

  4。文件 mapred-site.xml (可能需要先重命名,默認文件名為 mapred-site.xml.template),然後配置修改如下:

    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.address</name>
        <value>Master:10020</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>Master:19888</value>
      </property>
    </configuration>

  5.文件 yarn-site.xml

    <configuration>

      <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>Master</value>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
      </property>
    </configuration>

  6.配置好後,將 Master 上的 /usr/local/Hadoop 文件夾復制到各個節點上。因為之前有跑過偽分布式模式,建議在切換到集群模式前先刪除之前的臨時文件。在 Master 節點上執行:

    cd /usr/local

    sudo rm -r ./hadoop/tmp # 刪除 Hadoop 臨時文件
    sudo rm -r ./hadoop/logs/* # 刪除日誌文件
    tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先壓縮再復制
    cd ~
    scp ./hadoop.master.tar.gz Slave1:/home/hadoop

  在 Slave1 節點上執行:

    sudo rm -r /usr/local/hadoop # 刪掉舊的(如果存在)

    sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
    sudo chown -R hadoop /usr/local/hadoop

  同樣,如果有其他 Slave 節點,也要執行將 hadoop.master.tar.gz 傳輸到 Slave 節點、在 Slave 節點解壓文件的操作。首次啟動需要先在 Master 節點執行 NameNode 的格式化:

    hdfs namenode -format # 首次運行需要執行初始化,之後不需要

  接著可以啟動 hadoop 了,啟動需要在 Master 節點上進行:

  1. start-dfs.sh
  2. start-yarn.sh
  3. mr-jobhistory-daemon.sh start historyserver

   通過命令 jps 可以查看各個節點所啟動的進程。正確的話,在 Master 節點上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 進程,在 Slave 節點可以看到 DataNode 和 NodeManager 進程。

  

分布式配置hadoop2.5.0 2.6.x