Call From linux01/192.168.x.x to linux01:8020 failed on connection exception: 拒絕連線; For more details
阿新 • • 發佈:2021-01-24
測試的時候使用HDFS展示檔案的時候報錯,正好排查了一下
在執行hdfs命令:hdfs dfs -ls /
報錯資訊如下:
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
ls: Call From linux01/192.168.x.x to linux01:8020 failed on connection exception: 拒絕連線; For more details see
: http://wiki.apache.org/hadoop/ConnectionRefused
發現執行HDFS命令報錯,就排查一下吧
[[email protected] hadoop-2.8.5]# which hadoop
/usr/bin/hadoop
[[email protected] hadoop-2.8.5]# which hdfs
/usr/bin/hdfs
[[email protected] hadoop-2.8.5]# vi /etc/profile #可以看到配置的hadoop環境沒生效,原因是:之前在/usr/bin下配置了啟動指令碼,伺服器優先回去讀取/ usr/bin下的啟動程式
#hadoop
export HADOOP_HOME=/home/software/hadoop/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin
環境變數也配置了啊,那就從頭開始吧!
1.移除舊的環境變數
[[email protected] hadoop-2.8.5]# mv /usr/bin/hadoop /usr/bin/hadoop.old
[[email protected] hadoop-2.8.5]# mv /usr/bin/hdfs /usr/bin/hdfs.old
[[email protected] hadoop-2.8.5]# which hadoop #可以看到配置的環境變數生效了
/home/software/hadoop/hadoop-2.8.5/bin/hadoop
2.重啟hadoop
3.重新格式化:
[[email protected] hadoop-2.8.5]# hadoop namenode -format
Re-format filesystem in Storage Directory /home/software/hadoop/hadoop-2.8.5/data/name ? (Y or N)
問題解決了,可能是不小心格式化兩次導致節點ID不對
也可能是下面這種原因
1.關閉hadoop叢集
stop-all.sh
2.檢查防火牆是否已關閉
service iptables status
3.關閉防火牆
service iptables stop
chkconfig iptables off
4.檢視core-site.xml配置。其中fs.defaultFS配置的值應為主機名或者ip,不能配置為localhost或者127.0.0.1。如主機名為common,則可配置為:
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux01:9000</value>
</property>
5.如果fs.defaultFS配置正確,則檢查9000埠情況。
netstat -tlpn
如果9000埠前的ip地址是127.0.0.1,則表明只能本地訪問。
6.檢查host配置
cat /etc/hosts
如果存在如下兩行則說明配置錯誤。
需要將這兩行去掉,並配置ip地址與主機名
如果遇到HDFS執行命令報錯也可以從以下幾點入手,只是一個思路,高手可以補充
1. 防火牆沒有關閉
2. 主節點9000埠沒有開啟
3. 主節點9000埠打開了,但是不允許遠端訪問(一般是這個)