閱讀892 返回首頁    go 技術社區[雲棲]


Hadoop集群中hosts文件配置問題

最近一直在做hadoop的應用,但是無奈於並行加速比一直不理想,兩台機器運行的時間和一台機器運行的時間差不多,老師還一直要這個數據,並行計算比至少應該為1.5,這樣的並行程序才有意義。

加了個qq群,發現了問題所在,再說我解決方法之前,先說一下我hadoop集群的配置:

2台筆記本,其中1台為lenovo z460,CPU為Core i3,主機名為:liujiacai-Ideapad-Z460;另一台是Acer  Aspire 4743 CPU為奔騰P6200,主機名為:liujiacai-Aspire-4743。

係統都裝的是ubuntu13.04。

我直接用網線把兩台機器連起來,手動指定IP,其中Lenovo的機器的ip為 202.194.124.24,Acer的機器ip為202.194.124.75,子網掩碼都是255.255.255.128,網關202.194.124.126(其實這個網關應該不起作用,因為我不連外網)。

我先按照全分布式配置方式搭建好環境,然後開始運行hadoop程序,問題就是並行加速度差不多為1,後來在QQ群問了一個,發現是我在配置conf/slave文件時隻指定了一個ip(這裏為202.194.124.75,202.194.124.24配在了conf/master文件裏麵了),然後我忽略了一個問題:隻有機器上運行datanode進程才能運行job,namenode根本不會作為mapper和reduer來運行job(其實都是最基本的概念,我都沒注意發火)。

現在我把202.194.124.24也加入到conf/slave文件中,這樣hadoop集群中就可以真正運行了,但是運行到一半reduce停止不允許了,打開https://localhost:50030,發現又報錯了,看了日誌是liujiacai-Aspire-4743主機名找不到,後來上網查,發現需要把集群中所有集群中的主機名與ip配置到hosts文件中。

每台機器必須都配置,然後一些博客上還說把127.0.0.1 localhost 注釋掉,說要不然會報錯的,我沒去掉也沒遇到那個錯誤,這個就不管了,有可能是版本的問題吧。改為hosts文件後運行程序還是報錯,是什麼127.0.1.1的問題,又google了一下,說是ubuntu把的127.0.1.1 作為本機的回路測試地址,我機器上有這麼一行

127.0.1.1 liujiacai-Ideapad-Z460

這樣的話當hadoop機器中看到liujiacai-Ideapad-Z460主機名是就直接對於到127.0.1.1機器了,而不是機器在集群中的ip了(我這裏是202.194.124.24)把127.0.1.1這一行也注銷掉就可以了。這樣所以的配置文件就算是改好了。但是~~~~~~~~

運行到一半就報錯了,說是202.194.124.75連接不上了,我很鬱悶 ,然後在202.194.124.24上ping 202.194.124.75,竟然ping不通了,在開啟hadoop程序是還是ping通的,把網線拔一下再插上就又能ping通了,而且機器中兩個datanode也都能運行job了,我還懷疑是網線口鬆了吧,但是看看電腦網線口也還有燈亮,換了一根網線還是出現相同的問題,我都讓整吐了,現在就是守在電腦旁邊看它運行,發現運行慢了就把網線拔下來再插上~~~~~~抓狂抓狂~~~~~~~

功夫不負苦心人,這樣得到的加速比是1.8了,但是這網線問題到底是什麼問題我還不清楚,估計不是什麼網絡不好這麼一類回答就能搪塞過去的,這點記下了回來探討吧。


PS:在配置ssh免密碼登陸時,有時安裝一般方式操作後還是不能行,還是需要密碼,我也按照網上說的把文件的權限改成什麼700、600之類的,但是都是不起作用鄙視,不知道神馬情況~~~~~(我當時出現這種情況用的是ubuntu12.10)

還好在ubuntu13.04中沒出現這種情況,ssh免登陸正常,再次感謝無私奉獻的ubuntu團隊。







最後更新:2017-04-03 19:06:50

  上一篇:go 我在微軟亞洲研究院生活中所接觸的語言
  下一篇:go 給man pages設置顏色