最近开始搭建Hadoop集群,一开始很顺利,后面慢慢的一步步爬坑,记录下遇到的问题和解决方法。
在Hadoop 集群启动后,发现直接访问50070端口的网页没有问题,如图(博主这里还做了端口映射,所以看到的端口和实际端口不同):
但是直接访问8088端口就直接找不到 :
经过一步步的排查,记录下排查解决的方法:
中间排查步骤如下:
1. 查看hadoop 启动的进程
因为8088 端口对应的是yarn服务,所以首先看下自己的Hadoop启动的进程有哪些
2. 检查yarn-site.xml配置文件
如果发现resourcemanager服务没有启动,则就代表yarn-site.xml配置文件没有配置好,那么需要检查下面几个地方:
下面解析下yarn-site.xml配置文件中重要查看的东西
yarn.resourcemanager.hostname
namenode
The address of the applications manager interface in the RM.
yarn.resourcemanager.address
${yarn.resourcemanager.hostname}:8032
The address of the scheduler interface.
yarn.resourcemanager.scheduler.address
${yarn.resourcemanager.hostname}:8030
The http address of the RM web application.
yarn.resourcemanager.webapp.address
${yarn.resourcemanager.hostname}:8088
The https adddress of the RM web application.
yarn.resourcemanager.webapp.https.address
${yarn.resourcemanager.hostname}:8090
yarn.resourcemanager.resource-tracker.address
${yarn.resourcemanager.hostname}:8031
The address of the RM admin interface.
yarn.resourcemanager.admin.address
${yarn.resourcemanager.hostname}:8033
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.scheduler.maximum-allocation-mb
2048
8182MB
yarn.nodemanager.vmem-pmem-ratio
2.1
yarn.nodemanager.resource.memory-mb
2048
yarn.nodemanager.vmem-check-enabled
false
1.1 第一部分配置的就resourcemanager的hostname,也就是你的namenode机器的Hostname,这里需要按照实际需求,根据你自己的namenode机器的hostname来进行配置,
1.2 第二部分看自己配置的yarn.resourcemanager.webapp.address 这一块,也就是配置的对应的网页地址,是否是使用的yarn.resourcemanager.hostname下的值加上端口号 8088 ,然后查看其余的8033等一系列端口是否都配置好了
3. 检查机器之间是否都可以Ping通
然后配置文件没问题,发现resourcemanager 服务也跑起来了,那么开始检查下 各个datanode机器和namenode机器之间是否可以ping通,这里采用ping -c 3 hostname的方式来进行检查
如果机器之间没有ping通,那么去修改对应的 /etc/hosts 文件
检查下ip 和hostname有没有搞错 ,然后就是防火墙有没有关闭
4. 查看对应端口的情况(一般都是这一步就可以发现问题)
我这里是在外网的情况下可以链接50070的端口,所以对比下50070和8088端口的情况
这一步发现8088端口前面的ip 居然是127.0.0.1,而我们的50070端口号居然是0.0.0.0,所以这一步问题基本就确立了
本人最终才去的方法就是修改namenode机器的/etc/hosts 文件
更改成如下的形式
也就是把localhost 与外网IP对应上
最后再次启动hadoop,查看8088端口,变成外网ip了,然后就可以正常访问了。