1.问题描述

在配置完以后,启动的时候回出现

hadoop集关闭防火墙 启动和关闭hadoop集群的方法_分布式


会卡在启动的hadoop133,hadoop134的进程中不能向下进行,卡在这里了。

这时ctrl+c强行关闭这个进程,然后jsp发现,其他的两台机器的datanode都已经启动起来了。

然后又发现,在关闭集群的时候,采用stop-dfs.sh,然后在master中的datanode一直的关闭不了的,其他的节点都可以关闭,包括master中的namedata

2.查看问题

实际上呢,问题是出现了两个问题,一个是启动上卡停的问题,一个是关闭集群的时候没法关闭本机的datanode,我们一个一个的解决问题。

在启动hadoop集群的时候,提示有一句提示
the authenticity of host localhost can’t be established.
说是本地的机器认证出现问题了。
那感觉应该是这里的问题,本地机器出现问题,导致启动和停止出现问题。

然后在网上查阅资料发现了解决方案,就是将/etc/ssh/ssh_config这个文件,添加两行就可以了。

sudo vim /etc/ssh/ssh_config
# 添加
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

#配置完
sudo service sshd restart

修改完毕,再次启动hadoop集群发现问题真的解决了,开心的看了看其他的机器发现没有什么问题。
但是当我再次关闭hadoop集群的时候,发现依然还是那个问题,本机的datanode无法关闭,只能手动的kill掉,这就让我很难过。没事,进行看问题,查看了一下datanonde的启动日志,真的发现了问题

java.net.ConnectException: Call From hadoop132/192.168.25.132 to hadoop132:9000 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
 at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792)
 at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:732)
 at org.apache.hadoop.ipc.Client.call(Client.java:1479)
 at org.apache.hadoop.ipc.Client.call(Client.java:1412)
 at org.apache.hadoop.ipc.ProtobufRpcEngineProxy14.sendHeartbeat(Unknown Source)
 at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolClientSideTranslatorPB.sendHeartbeat(DatanodeProtocolClientSideTranslatorPB.java:153)

看了报错日志 ,一度以为是自己的SSH免密设置的不对,然后进行了大量的测试,发现SSH的配置是没有问题的,然后我就陷入了对人生的和社会的大思考…

3.问题解决

最后,自己复盘了一下搭建集群时候的步骤,终于发现了一个问题。
我在配置slaves文件的时候,他里面本身带有一个localhost的配置,我没有删除他,而是直接添加了我搭建集群的机器,像这样

localhost
hadoop132
hadoop133
hadoop134

这样子是不对的,应该删除自带的localhost,然后在添加集群机器

最后问题解决了,启动和关闭集群都没有什么问题了。