? ? ? ? 今天在啟動?hadoop 的時候,發現本應該同時啟動的 namenode、secondary namenodes 卻都沒有啟動。我還以為是壞了又重新裝了虛擬機,重新下載 Hadoop 重新配置結果還是同樣的問題,那沒辦法只能去解決問題了。
? ? ? ? 首先先再次嘗試啟動看他報錯是什么。
? ? ? ? 好這個?namenode 是啟動失敗的了,那么報錯信息翻譯過來就算連接超時嘛。
? ? ? ? 其實這個應該還是很好解決的,我上網一搜還是很多效果教程的,但結果出乎意料的網上的就沒有一個是我實用的,因為我花了一個下午的時間去一個個方法試過了都不起作用🤦?。那來我這手把手教你如何排查如何解決此問題:
? ? ? ? 首先我這邊錯誤的情況是:運行start-all.sh腳本后,嘗試連接到主機xxx的22端口時超時,namenodes和secondary namenodes啟動失敗,而datanodes、resourcemanager和nodemanagers可能啟動成功。
可能的根本原因包括:SSH服務未運行、防火墻設置阻止了連接、網絡配置問題(如IP或主機名解析錯誤)、SSH密鑰認證問題,或者主機名配置不正確。
首先檢查SSH服務是否在 主機上運行,使用?systemctl status sshd?或?service ssh status?命令。如果服務未啟動,需要啟動它。接著查看防火墻狀態,確認22端口是否開放,可能需要臨時關閉防火墻或添加規則。
然后檢查網絡連通性,嘗試 ping xxx 是否正常,還有SSH密鑰配置是否正確,用戶是否設置了無密碼登錄,尤其是在Hadoop集群中,各節點之間通常需要配置免密SSH。需要確認公鑰是否添加到 authorized_keys 文件中,權限是否正確。
檢查SSH服務狀態
systemctl status sshd # 查看SSH服務狀態
sudo systemctl start sshd # 如果未運行,啟動SSH服務
驗證本地SSH連接
ssh xxx
如果連接失敗,可能原因包括:
-
SSH服務未運行。
-
防火墻阻止了SSH端口(默認22)。
-
/etc/hosts
?或 DNS 解析錯誤。
檢查防火墻設置
確保防火墻允許SSH端口(22)的通信:
sudo ufw status # 查看防火墻狀態(Ubuntu)
sudo firewall-cmd --list-ports # CentOS/RHEL
如果防火墻啟用且未開放22端口:
sudo ufw allow 22 # Ubuntu
sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload # CentOS
好經過上面的檢查如果一切正常,再次嘗試啟動看看能不能啟動了,好如果還不行也可以看看嘗試單獨啟動:
單獨啟動的命令可以看:https://blog.csdn.net/m0_74132943/article/details/142152157?spm=1001.2014.3001.5501
如果你嘗試了上面的內容后還是無法啟動:那么繼續:
檢查主機名解析
確保?/etc/hosts
?文件中?xxx
?正確映射到本機IP(非127.0.0.1
或127.0.1.1
):
vi /etc/hosts
修改完后記得:wq 保存文件;紅色部分是你的 ip 地址,還有你的主機名。再重試啟動Hadoop
【來到這里,我的問題就解決了,因為我打錯了,如圖所示,我打成了 192.169.xxx.xxx ,實際上應該是 192.168.xxx.xxx 】
如果你的嘗試了還是不行,別急后面還有幾個通用招:
?驗證SSH密鑰認證
Hadoop需要無密碼SSH登錄到本機和其他節點。生成密鑰并添加到授權列表:
ssh-keygen -t rsa # 生成密鑰(如果不存在)
ssh-copy-id xxx # 將公鑰復制到本機
檢查?~/.ssh/authorized_keys
?是否包含你的公鑰。
檢查Hadoop配置文件
確認Hadoop配置文件中沒有錯誤的主機名引用:
-
core-site.xml: 檢查?
fs.defaultFS
?配置。 -
hdfs-site.xml: 檢查?
dfs.namenode.rpc-address
。 -
workers?或?slaves?文件:確認列出的主機名正確。
調試SSH連接
添加?-v
?參數查看詳細的SSH連接日志:
ssh -v xxx
觀察日志中哪一步失敗(例如密鑰認證、網絡超時)。
臨時關閉SELinux(僅限測試環境):
如果SELinux阻止SSH,臨時關閉它:
sudo setenforce 0 # 臨時禁用
sudo vi /etc/selinux/config # 永久禁用需修改為SELINUX=disabled
驗證網絡接口
確保網絡接口(如?eth0
?或?ens33
)處于活動狀態:
ip a # 查看IP地址分配
總結
根據你的錯誤信息,最可能的原因是:
-
SSH服務未啟動。
-
防火墻阻止了SSH端口。
-
/etc/hosts
?中 xxx 解析到了錯誤的IP地址。 -
未正確配置無密碼SSH登錄。
請按上述步驟逐一排查,并在完成每步后嘗試重啟Hadoop:
stop-all.sh
start-all.sh
如果問題仍然存在,請提供以下信息:
-
cat /etc/hosts
-
ssh -v xxx
?的輸出片段 -
systemctl status sshd
?的結果
如果你進行了這些操作還是失敗,或是還有其它問題,歡迎私信或評論區討論
希望文章的內容可以幫到你 ? : )
? ? ? ??如果文章對你有幫助,記得?點贊、收藏、關注👍?🧧