前天遇到一個hadoop問題,由於之前都是偽分布的情況,沒有真正的涉及到集群的環境,最近按照一些資料自己搭建了一個集群環境,三台虛擬機,一個master,兩個slave,利用jps查看節點信息,啟動了所有的節點,包括數據節點datanode,但是在Web UI中查看活節點,顯示為0,我執行hadoop fs -mkdir /input 成功,毫無疑問,當我執行hadoop fs -put ~/file/file*.txt /input/,時報錯了,錯誤信息是
could only be replicatied to 0 nodes, instead of 1,意思就是我的集群設置是至少要又一個1個節點,但是現在檢測呆0個節點,
這個時候查看slave上的datannode日志文件,發現下面信息,這個的意思就是slave和master的通信沒有成功,slave向發送心跳,沒有被master接收懂啊;好了這個時候,我就百度這個問題,天啦,各種瞎搞,什么防火牆啊,-format之類,全部檢查了一個遍,各種設置,但是無濟於事,這個異常始終存在;
2017-03-31 01:56:05,272 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting 2017-03-31 01:56:05,273 INFO org.apache.hadoop.ipc.Server: IPC Server listener on 50020: starting 2017-03-31 01:56:05,591 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: hadoop.master/192.168.62.130:9000 2017-03-31 01:56:10,595 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: hadoop.master/192.168.62.130:9000 2017-03-31 01:56:15,599 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: hadoop.master/192.168.62.130:9000 2017-03-31 01:56:20,603 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: hadoop.master/192.168.62.130:9000 2017-03-31 01:56:25,607 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: hadoop.master/192.168.62.130:9000
直到昨天我用命令,netstat dfsadmin -report 在master節點上查看活節點信息,好了,報錯了,錯誤是(忘記截圖了)
Access denied for user 。。。。。。。。。。
意思就是權限問題,然后又開始各種搜索,有說什么ssh,ip的,我都檢查了,就是不行,但是最后看到了一個博客,我一看,覺得說的和我的問題沒多大關系,估計也解決不了我的問題,但是還是抱着僥幸的心理嘗試了一下,解決方法是:
在hdfs-site.xml文件中添加
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
到此完美解決了我的問題,至於這兩句話我不是很理解,看意思false,估計是屏蔽權限,不需要權限吧,所以slave和master通信成功;
這個問題困擾很久,很多方法都試過了,沒用,說明我們遇到問題一定要先分析,不能盲目的去試各種方案,因為同一個問題的引發原因有很多,這一點需要具體問題具體分析;