hadoop不能互相訪問和linux防火牆守護進程
前言——作為裝過幾次集群的菜鳥,對於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複製元數據實現大部分(會丟失數據);主備模式則可以根據安全需求增加集群的安全性,代價是數據冗餘大。