hadoop集群中namenode超時無法連接datanode的原因和解決辦法


最近公司讓我搭建64位的集群,我重新編譯了一下hadoop的源碼,並部署環境。在這個過程中遇到了一些問題:

問題1:hdfs-site.xml文件的配置問題,在配置

<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/grid/hadoop-2.5.2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/grid/hadoop-2.5.2/dfs/data</value>
</property>

時,要注意兩點:

  一、設置的路徑*/dfs/name注意權限的問題,由於一開始我是用root用戶創建的路徑,因此出現了權限問題,導致hdfs格式化失敗。

  二、配置這個namenode和datanode存放路徑的時候,前面需要加file://,否則格式化失敗

 

問題2:集群當中各節點之間是通過ssh免密碼登錄,我偶然遇到某些datanode超時后,namenode就無法通過ssh免密碼登錄到該datanode上,而有些datanode是非常正常的。首先我能確定我的所有節點的防火牆都關閉了。於是google了一下。發現有個地方可能會導致我的問題。嘗試了一下。其解決辦法就是:

  禁用selinux: 
  編輯 /etc/selinux/config文件,設置“SELINUX=disabled”

  這個文件控制兩個配置設置:SELinux模式和活動策略。SELinux模式(由第6行的SELINUX選項確定)可以被設置為enforcing,permissive或disabled。

  在enforcing模式下,策略被完整執行,這是SELinux的主要模式,應該在所有要求增強Linux安全性的操作系統上使用。

  在permissive模式下,策略規則不被強制執行,相反,只是審核遭受拒絕的消息,除此之外,SELinux不會影響系統的安全性,這個模式在調試和測試一個策略時非常有用。

  在disabled模式下,SELinux內核機制是完全關閉了的,只有系統啟動時策略載入前系統才會處於disabled模式,這個模式和permissive模式有所不同,permissive模式有SELinux內核特征操作,但不會拒絕任何訪問,只是進行審核,在disabled模式下,SELinux將不會有任何動作,只有在極端環境下才使用這個模式,例如,當策略錯誤阻止你登陸系統時,即使在permissive模式下也有可能發生這種事情,或我們不想使用SELinux時。

  注意:

  這個解決辦法,不知道是否真的有效,但是我照做了,但是問題還是沒解決。最后我嘗試了重新安裝一下openssh-server-6.6.1p1-11.1.fc21.x86_64和openssh-clients-6.6.1p1-11.1.fc21.x86_64。安裝這個之前必須安裝:openssh-6.6.1p1-11.1.fc21.x86_64,在安裝openssh-6.6.1p1-11.1.fc21.x86_64之前必須安裝libselinux-2.3-5.fc21.x86_64包。發現問題也沒有解決。

  后來到了第二天早上上班,同時在群里面說他的ip地址跟我的虛擬機的ip地址發生沖突,頓時我高興了,因為我知道我的問題就是跟別人的ip地址發生沖突了所導致的。所以我得感謝我的那位同事。謝謝。問題就解決了。

 


免責聲明!

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



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