***************************测试hadoop及问题跟进***************************执行以下语句报错datahadoop-2.9.
***************************测试hadoop及问题跟进***************************
执行以下语句报错
/data/hadoop-2.9.1/bin/hdfs dfsadmin -report
按照帖子支招,打开etc/hosts
这两句加#注释掉
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
再执行以下语句,还是报错
/data/hadoop-2.9.1/bin/hdfs dfsadmin -report
***************************查看端口通信是否正常***************************
尝试telnet master 9000发现通信是拒绝的,所以问题从先解决通信问题开始
再执行ping master发现是通的,telnet master 9000发现通信是拒绝的,网上说开了防火墙,可是我查看了防火墙的状态执行/etc/init.d/iptables status,并没有开启
在同事的指导下,我执行了telnet master 22,或者telnet ip地址 22,都是通的
监听端口lsof -i:9000没有任何响应
lsof -i:22有返回,所以是占用9000端口的进程也就是在配置core-site.xml时,hdfs://master:9000这个服务有问题,应该查看hadoop的日志看看报错的原因
***************************端口通信正常***************************
***************************hadoop查看运行进程***************************
在master节点先把所有服务停掉,一个个测试:
/data/hadoop-2.9.1/sbin/stop-all.sh
然后执行
/data/hadoop-2.9.1/sbin/start-all.sh
jps
看看正常运行的进程
主要有DataNode NameNode SecondaryNameNode TaskTracker JobTracker这几个进程,就表示正常了,但是我有几个没有NameNode、TaskTracker、JobTracker
然后我再执行了一遍启动namenode的指令,发现还是没起起来,没有报错,但是没有起来
/data/hadoop-2.9.1/sbin/hadoop-daemon.sh start namenode
看了一下slave-1节点,正常
所以问题集中解决在为什么在master节点上,NameNode没有启动!!!
***************************hadoop进程NameNode没有启动***************************
***************************hadoop查看日志***************************
查看日志,在master节点的文件夹中,查看/data/hadoop-2.9.1/logs,找到namenode的日志,按时间排序,取对应命令行执行完的时间对应的日志,并且拉到日志最下端。
发现出现了出错的根本原因是:java.io.IOException: NameNode is not formatted。
***************************通过hadoop日志提示解决问题***************************
- 方法1 —— 一种解决方案是格式化,可以参考这篇帖子:
遇到问题—Hadoop—java.io.IOException: NameNode is not formatted blog.csdn.net
2. 方法2 —— 另一种解决方案是配置文件稍微改动,不知道是否能生效:
hadoop启动dfs报错NameNode is not formatted blog.csdn.net
3. 方法3 —— 如果出错日志显示是权限问题导致NameNode没有启动,可以参考这篇帖子
Hadoop namenode无法启动问题解决 www.cnblogs.com
我试图重启hadoop看看namenode有没有启动:
/data/hadoop-2.9.1/sbin/stop-all.sh
/data/hadoop-2.9.1/sbin/start-all.sh
jps
发现没起来,马上照着更新时间去看最新的日志。
看了日志:/data/hadoop-2.9.1/logs下面hadoop-root-secondarynamenode-master.log,发现SecondaryNameNode也有报错,这就是帖子最开始发现的问题端口为9000的服务没启动也就是命令行telnet master 9000报错的原因
master:9000 failed on connection exception: java.net.ConnectException: Connection refused
查看了/data/hadoop-2.9.1/logs下面的日志hadoop-root-namenode-master.log,发现NameNode没有被格式化还是在报错
综述,需要重新进行一次格式化。
***************************通过hadoop日志找到方案***************************
***************************重新修改hadoop配置文件***************************
切换到master节点,修改配置项
/data/hadoop-2.9.1/etc/hadoop/slaves
/data/hadoop-2.9.1/etc/hadoop/masters
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
hadoop-env.sh、mapred-env.sh、yarn-env.sh 把JAVA_HOME修改为环境中的绝对路径
然后把master节点的日志删除,一路选择y
rm -r /data/hadoop-2.9.1/logs/*
最后把master节点的临时文件删除,一路选择y
rm -r /data/hdfs/tmp/*
有很多隐藏文件,所以用命令行删除比较推荐!!!
把slave-1节点的hadoop整个删掉,重新拷贝一份,具体改动如下:
rm -rf /data/hadoop-2.9.1
下面把master的整个hadoop文件夹拷贝纸slave-1
scp -r /data/hadoop-2.9.1 root@slave-1:/data
***************************完成修改hadoop配置文件***************************
***************************hadoop重新格式化***************************
在master节点停掉hadoop和日志
/data/hadoop-2.9.1/sbin/stop-all.sh
关闭日志
/data/hadoop-2.9.1/sbin/mr-jobhistory-daemon.sh stop historyserver
(如果没有在调试过程中产生新日志或者临时文件可以跳过这步!)
通过命令行,把master节点、slave-1节点的日志和临时文件夹删除,一路选择y
rm -r /data/hadoop-2.9.1/logs/*
rm -r /data/hdfs/tmp/*
开始再执行一次格式化hadoop,执行以下语句做格式化:
$HADOOP_HOME/bin/hdfs namenode -format
特别要强调必须要$HADOOP_HOME方式去做格式化,之前我用cd命令行然后直接运行hdfs是失败的
发现NameNode格式化成功
启动hadoop
/data/hadoop-2.9.1/sbin/start-all.sh
jps
确认namenode节点启动!
查看所有的日志namenode和datanode有没有报错
改了一通,检查所有的日志邮件,已经没有ERROR了,就表示所有配置正常,WARN的话,有空可以优化,百度都有解决方案的!
***************************完成修改hadoop重新格式化***************************
***************************测试hadoop管理界面***************************
http://localhost:50070(HDFS管理界面)
master的IP地址同你在hosts中设置的内网或者外网IP,我这里配置的是内网IP
http://IP地址:8088/cluster
YARN监控界面