hadoop不能互相訪問和linux防火牆守護程式

juyxii發表於2020-09-10

  作為裝過幾次叢集的菜鳥,對於hadoop叢集的安裝還是比較有心得的:只要配置檔案夠好,叢集配置就非常容易,否則也容易出現莫名其妙的問題!總結了一份3臺機器搭建較完好的叢集的一份配置檔案。

  在我將叢集配置檔案,防火牆(自以為)、叢集時間、Java環境變數等等都搞定的情況下,竟然還是出了問題。

  現象是訪問不了yarn的web埠。

  因為我在機器上搭過好幾次叢集,可能存在版本不一樣的情況,所以我先用bin/hadoop version檢視了hadoop各個節點對應的hadoop版本,發現一樣(在其它場景中,我犯過這樣的錯誤);

  jps檢視Java程式是首要的測試手段,但是沒發現明顯異常;

  然後經典操作:看日誌,英語能對大佬來說可能是錦上添花,但對菜鳥來說就是落井下石,不過在logs目錄下隱隱發現一個問題,yarn所在機器的logs日誌沒有其它2個幾個節點的日誌,再看裡面檔案裡面內容並沒有明顯的報錯資訊。

  然後看日誌、調網路搞了一晚上最終發現了一個十分明顯的問題,在非yarn機器上的機器日誌裡面顯示一直嘗試與yarn程式進行連線卻一直失敗,由此使用網路工具確定了是yarn所在節點自身的問題,使用curl -I檢視虛擬機器互相訪問的情況(沒有裝瀏覽器),也是發現yarn主機能自己訪問8088埠,但叢集裡面其它節點卻訪問不了改節點的8088埠,netstat -ntpl檢視網路埠情況發現一切正常。耗了一段時間後,錯誤資訊已經比較明顯是yarn主機的網路問題。

  是不是防火牆問題?但是在最開始就已經使用systemctl disable firewall關了linux(centos7)的防火牆,並且用systemctl status firewall檢視了幾遍的防火牆並且一直都顯示沒有這個模組。

  靈機一動,根據最近學習的linux知識,linux的服務守護程式daemon基本都是以d結尾的,然而這裡使用卻是firewall,少了個d。但是就醍醐一般的使用systemctl status firewalld檢視yarn主機的防火牆狀態,結果果然是active,一抹綠色優點扎眼。

  systemctl disable firewalld關閉防火牆自啟動,systemctl stop firewalld關閉防火牆,然後刪除叢集的data和logs資訊,重新bin/hadoop namenode -format格式化namenode,重啟叢集,再jps看叢集狀態,windows瀏覽器訪問yarn的8088埠,終於一切正常了。

  1這次出錯叢集的訪問狀態很多地方都有較明顯的問題,但是因為沒經驗所以get不到重點,所以空耗了許久。防火牆問題主要還是linux操作不規範和不熟悉,結果導致了一直以為自己執行正確的程式碼關閉了防火牆,最開始手熟使用firewalld,執行正確,結果反而讓自己覺得firewall(錯覺)也是正確的,機器尚且可能硬體出錯,更何況人呢。執行復雜操作時(叢集統一執行某操作)自動化指令碼時第一選擇,當然指令碼因為許可權、環境變數等問題也有可能發生問題,不過也還有測試自動化指令碼。

  本次錯誤應該是在三臺機器關閉防火牆,第一次成功了,但第二、三次卻失敗了,但因為對linux操作不熟悉,以為是成功了。這種疲勞錯誤,應該多使用指令碼避免人的疲勞誤差。

  總結:以上記載個人犯錯過程,以下對hadoop及linux做一些總結:

  1、hadoop叢集出錯,首要檢測手段jps檢視Java的程式,注意是否有異常,如果有應該多加關注。缺點:對於某些問題Java程式不會及時體現出來,所以這個操作應該要經常使用,在大規模叢集裡面肯定要使用自動化指令碼進行相應管理,在大資料方面有進階的zookeeper框架可以管理整個叢集。

  2、根據jps結果、bug的具體現象分析,bug是哪個型別的,如網路問題、配置問題、硬體問題(HA解決)等。

  3、配置問題:檢視叢集的所有配置是否一致,hadoop框架本身的版本、hadoop及linux網路的配置檔案、叢集時間、namenode與datanode生成的版本資訊是否一致、data與logs檔案是否有隱藏的一些問題等。

  4、網路問題:

  4.1、windows主機網路是否與虛擬機器網路相連,可以使用ping命令,這個比較基礎,但也不得不查。

  4.2、對於伺服器(沒有瀏覽器)web埠進行訪問,可以使用curl -I測試8088埠;ping命令不能測試埠,可以使用埠對應的工具(比如ssh登陸對應22號),或者使用專業的埠掃描工具進行測試。

  4.3、關閉防火牆,centos7 systemctl disable firewalld關閉防火牆,centos7使用systemctl工具進行管理,其它linux版本應該使用對應的管理工具關閉防火牆。

  4.4、使用netstat -nptl檢視linux系統的埠資訊,ip:埠,監聽ip上面的埠;0.0.0.0ipv4,::::ipv6,監聽本機所有ip的埠;需要開放的埠注意不要監聽127.0.0.1,監聽了loopback本地環回地址,則只能本地訪問。

  5、硬體問題:叢集HA可以用secondarynamenode複製後設資料實現大部分(會丟失資料);主備模式則可以根據安全需求增加叢集的安全性,代價是資料冗餘大。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69934488/viewspace-2718414/,如需轉載,請註明出處,否則將追究法律責任。

相關文章