测试的时候使用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端口打开了,但是不允许远程访问(一般是这个)