测试的时候使用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命令报错,就排查一下吧

[root@linux01 hadoop-2.8.5]# which hadoop
/usr/bin/hadoop

[root@linux01 hadoop-2.8.5]# which hdfs
/usr/bin/hdfs

 

[root@linux01 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.移除旧的环境变量

[root@linux01 hadoop-2.8.5]# mv /usr/bin/hadoop   /usr/bin/hadoop.old

[root@linux01 hadoop-2.8.5]# mv /usr/bin/hdfs /usr/bin/hdfs.old

[root@linux01 hadoop-2.8.5]# which hadoop     #可以看到配置的环境变量生效了
/home/software/hadoop/hadoop-2.8.5/bin/hadoop

2.重启hadoop

3.重新格式化:

[root@linux01 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端口打开了,但是不允许远程访问(一般是这个)
Logo

更多推荐