最近搭建Hadoop伪集群时 ,HDFS文件系统成功格式化,节点启动了,jps也有显示,但http://IP :50070就是访问不了。
困扰很久发现问题仅仅出现在防火墙没有关闭。。。。。
伪集群搭建采用的是CentOS 7.0,而CentOS7.0默认使用的是firewall作为防火墙,可以改为iptables。
Firewall:
systemctl start firewalld.service#启动firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动
改成iptables:
systemctl startiptables.service若操作系统使用的CentOS6.5的话,也需要关闭iptables防火墙
service iptables stop关闭完成,但重启机器就会启动,所以需要用下面命令永久关闭它。
chkconfig iptables off开机就不会启动了。
#############################################
Hadoop启动之后,遇到一个奇怪的问题:
VMware虚拟机中Hadoop服务的端口50070无法访问的问题---通过127.0.0.1:50070、localhost:50070、主机名:50070均可访问,唯独IP:50070不能访问到。
通过查找日志:发现datanode的日志中提示:访问MasterNameNode:8020不能访问。
排查步骤:
1.首先,各个虚拟机和客户端之间都能ping通,虚拟机都能上外网,说明网络没有问题。
2.各个虚拟机自己的防火墙已经关闭。
3.是不是端口有问题呢?通过命令#netstat -tnpl
发现监听都配置在:127.0.0.1,结合可以通过127.0.0.1:50070能够访问考虑,是不是把这个地址改成真实的IP就可以了?
因为所有hadoop内部配置的都是hostname,所以有两种方法:
1.将hadoop中所有的hostname改成IP的方式。
2.修改Linux的设置,将hostname映射地址改为真实的IP。
研究第二种方式,排查发现:hostname -i命令显示的IP为:127.0.0.1 真实IP
所以,在Master中,实验将/etc/hosts中的127.0.0.1一行注释掉,运行发现部分端口已经改正,还有部分端口没有改正过来。
将各个数据节点中/etc/hosts中的127.0.0.1行去掉,重新启动hadoop发现:
通过http://真实IP:50070已经可以进行访问,问题解决。