hadoop 3.x 單機集群配置/啟動時的問題處理


一.修改配置文件(hadoop目錄/etc/hadoop/配置文件)

1.修改hadoop-env.sh,指定JAVA_HOME

修改完畢后

2.修改core-site.xml

 1 <configuration>
 2 <!-- 指定hadoop運行時產生的臨時文件存儲目錄 -->    
 3 <property>
 4   <name>hadoop.tmp.dir</name>
 5   <value>/opt/module/hadoop-3.1.1/data/tmp</value>
 6 </property>
 7 
 8 <!-- 指定hfds namenode的缺省路徑,可以是主機/ip :端口 -->    
 9     <property>
10     <name>fs.defaultFS</name>
11     <value>hdfs://hadoop002:9000</value>
12 </property>
13 </configuration>

3.修改hdfs-site.xml

 1 <configuration>
 2     <!-- 指定HDFS副本的數量 -->
 3     <property>
 4         <name>dfs.replication</name>
 5         <value>1</value>
 6     </property>
 7     <!--配置namenode的web界面-->
 8     <property>
 9         <name>dfs.namenode.http-address</name>
10         <value>hadoop002:50070</value>
11 </property>
12 </configuration>

到這啟動hadoop的基本配置已經完成了(配置完這些已經可以啟動hadoop了),下面配置yarn相關的文件

4.修改mapred-site.xml(此配置文件中盡量不要使用中文注釋,否則啟動的時候會有一個java.lang.RuntimeException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 start byte 0xb5 (at char #672, byte #20))

1 <configuration>
2 <!-- 使用yarn框架 -->
3     <property>
4         <name>mapreduce.framework.name</name>
5         <value>yarn</value>
6     </property>
7 </configuration>

5.修改yarn-site.xml(此配置文件中盡量不要使用中文注釋,否則啟動的時候會有一個java.lang.RuntimeException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 start byte 0xb5 (at char #672, byte #20))

 1 <configuration>
 2 <!-- Site specific YARN configuration properties -->
 3     <!--resourcemanager address-->
 4 <property>
 5 <name>yarn.resourcemanager.hostname</name>
 6 <value>localhost</value>
 7 </property>
 8  
 9 <!--reduce-->
10 <property>
11 <name>yarn.nodemanager.aux-services</name>
12 <value>mapreduce_shuffle</value>
13 </property>
14 </configuration>

6.啟動

6.1按照官方文檔,第一步先檢查ssh能否免密登錄如果不能免密登錄需要執行以下命令

   ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
   cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
   chmod 0600 ~/.ssh/authorized_keys
如果不能免密且沒有執行這三個命令,那么啟動時會有Permission Dennied
如果出現
ssh connect to host xxx port 22:Connection timed out,ifconfig查看自己的ip與 /etc/hosts下的映射中的ip是否一致
 
        

6.2執行hdfs namenode -format格式化namenode,第一次啟動時執行即可,今后不再需要

6.3執行start-dfs.sh

6.4執行start-yarn.sh

或者直接執行stop-all.sh

6.5jps查看進程


可以在/tmp/下查看*.pid文件,其內容為上圖的進程號

6.6停止的話使用對應的stop-xxx.sh(或者stop-all.sh)即可

到這hadoop已經成功啟動了,官方文檔:http://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/SingleCluster.html

 

6.7無法停止hadoop

此時雖然已經可以正常啟動了,但為了維護方便建議修改pid的路徑 ,因為默認把pid文件存儲在/tmp/下,而linux會定期清理/tmp/路徑一旦pid文件被清理到,此時想執行stop-all.sh后再次jps發現hadoop依然在運行,這個時候想關閉hadoop就只能手動的kill了因此要修改pid的存儲路徑,打開hadoop目錄/etc/hadoop/hadoop-env.sh,找到HADOOP_PID_DIR,修改路徑為你自定義的路徑即可接下來通過實驗證明以上結論

先執行jps,證明此時hadoop並未啟動,然后再啟動hadoop

成功啟動后查看pid文件后然后刪除

執行stop-all.sh,發現hadoop依然在運行

此時重新啟動hadoop,發現進程號沒有改變,雖然重新生成了pid

到這說明,一旦hadoop的pid文件被刪除想要停止hadoop就只能手動kill,而且如果hadoop沒有停止掉,又重新啟動了hadoop,此時雖然會生成新的pid,但從進程號上來看依舊是之前沒有被停止掉的hadoop

 

6.8初始化時出現Cannot remove/create xxxx

 打開你的core-site.xml,如果是在"/"下創建目錄最好手動去創建 並且修改屬主與組為你啟動hadoop的用戶

sudo mkdir -p /hadoop/tmp 

sudo chown -R tele:tele /hadoop/

創建並且修改完成后重新初始化即可,如果不是在"/"直接創建文件夾,那么就可以交給hadoop自動創建屬主為啟動hadoop的用戶的文件夾了初始化之后如果啟動hadoop,發現沒有datanode,在你指定的tmp路徑/dfs/name目錄下找到一個current/VERSION文件,記錄clusterID並復制。然后dfs/data目錄下找到一個current/VERSION文件,將其中clustreID的值替換成剛剛復制的clusterID的值后重新啟動即可

 

 

 

 


免責聲明!

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



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