1. 程式人生 > >hadoop完全分散式遇到的問題總結

hadoop完全分散式遇到的問題總結

第一步、確保你的jdk、hadoop、SSH免密已經配置好了,開啟2臺以上的虛擬機器,並且能正常上網(後面放大招啦)

第二部、配置/etc/hosts檔案(如下格式)

192.168.244.128   hadoop02
192.168.244.129   hadoop03
192.168.244.130   hadoop04

第三步、配置hadoop/etc/hadoop下面的core.site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml

             其中這個資料夾有3個.sh檔案需要新增一個JAVA_HOME的真實路徑-->hadoop-env.sh , yarn-env.sh ,mapred-env.sh

開始修改4個配置檔案  本人使用的是 hadoop02,hadoop03, hadoop04 三臺虛擬機器

core.site.xml

 <!-- 指定HADOOP所使用的檔案系統schema(URI),HDFS的老大(NameNode)的地址 -->   
 <property>        
        <name>fs.defaultFS</name>           
         <value>hdfs://hadoop02:9000</value>   
 </property>
 <!-- 配置臨時資料存放的儲存目錄-->
<property>
   <name>hadoop.tmp.dir</name>
      <value>/usr/local/hadoop-2.7.2/data/tmp</value>
</property>

hdfs.site.xml

<!-- 指定HDFS副本的數量 --> 
        <property>   
                 <name>dfs.replication</name>    
                 <value>3</value>
        </property>
        <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop04:50090</value>
        </property>

mapred-site.xml

 <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
    </property>

yarn-site.xml

<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop03</value>
</property>
<!--指定rm的shuffle -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>

常見的問題:

1 防火牆沒關閉、或者沒有啟動

yarnINFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032

2主機名稱配置錯誤

3ip 地址配置錯誤

4ssh 沒有配置好

5root 使用者和 hadoop0x兩個使用者啟動叢集不統一

6配置檔案修改不細心

7防火牆沒關閉、或者沒有啟動 yarn

INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032

8 datanode 不被 namenode 識別問題

        Namenode 在 format 初始化的時候會形成兩個標識,blockPoolId 和 clusterId。新的

datanode 加入時,會獲取這兩個標識作為自己工作目錄中的標識。

一旦 namenode 重新 format 後,namenode 的身份標識已變,而 datanode 如果依然持有原來的 id,就不會被 namenode 識別。

解決辦法,1、刪除 datanode 節點中的資料後,再次重新格式化 namenode。2、將namenode裡的clusterld複製一個,把datanode裡的clusterld覆蓋掉

9 jps 發現程序已經沒有,但是重新啟動叢集,提示程序已經開啟。原因是在 linux 的根 目錄下/tmp 目錄中存在啟動的程序臨時檔案,將叢集相關程序刪除掉,再重新啟動叢集。

10 jps 不生效。

原因:全域性變數 hadoop      java 沒有生效,需要 source /etc/profile 檔案。

最最重要的一點(坑了小編一下午)

如果配置過程全程用的root許可權 不會出現這個錯誤

如果用的是普通使用者的請注意了:

3臺機器上面的普通使用者必須配置名字一樣 例如:

節點hadoop02    一般使用者名稱hadoop02

節點hadoop03   一般使用者名稱也要配置hadoop02

節點hadoop03    一般使用者名稱也要配置hadoop02

不然start-all.dfs啟動的時候,datanode節點上面就會出現啟動成功(或者卡住需強退ctrl+c),瀏覽器端不顯示,--> 說明還是沒啟動成功

總之就是使用一般使用者的時候把幾臺虛擬機器的一般使用者配置名稱一樣就行了,可以減少錯誤的發生

小編qq602862011 歡迎一起探討學習