分享

程序员必备的分析解决问题能力:案例分享

本帖最后由 pig2 于 2019-11-8 13:24 编辑

导读:
无论工作中,还是面试,都要求有解决问题的能力,这里给大家分享下,帮助咱们VIP成员解决生产实践中,遇到的实际问题。
通过此小案例的分享,希望大家能够面对问题的时候,更容易找到一些思路。

####################
咱们成员找到工作后,首先遇到的第一个难题,看到如下错误:

错误1:
java.io.FileNotFoundException: File does not exist: /user/admin/.staging/job_1571397171638_0001/job_1571397171638_0001_1.jhist

错误2:
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [0.0.0.0:0] java.net.BindException: Address already in use;

这两个错误看上去差别很大,但是随着我们一步步分析,终于找到了他们之间的关联。

同时额外补充的是,很多老铁,在遇到异常的时候,不是去看日志,而是直接贴出提交任务的时候,所产生的错误,一般来说,这个错误参考价值是非常小的,一定要综合分析。我们上面的两个错误,其实是多处找到的,这个是分析错误的基石

还是需要从源头说起:
当我们提交wordcount的时候,通过cloudera mananger看到了错误1:
java.io.FileNotFoundException: File does not exist: /user/admin/.staging/job_1571397171638_0001/job_1571397171638_0001_1.jhist
他是什么原因?为什么会产生这个问题。

初步判断:
1.权限
2.文件到底是否存在

所以我们就从最表面的问题来开始。先看看是否有jhist文件
/user/admin/.staging/job_1571397171638_0001/job_1571397171638_0001_1.jhist
通过路径查看,确实是没有,可是为什么会没有这个文件。

这时候,我们就需要补充知识了:
##########################
每个job有两个文件:
job.jhist和job.xml,
job.jhist是作业运行过程的详细记录,格式为json。
job.xml是作业的配置文件
##########################
在排查的过程中,我们看到了job.xml文件,可是为什么没有jhist,由于它是作业运行过程的详细记录,所以既然没有这个详细记录,有哪些原因?
1.没生成job
2.生成受阻,导致不能文件文件。也就是权限问题

首先检测了权限,这个是没有问题的。因此可以排除
接着我们就要看为什么没有生成job.
既然没有生成job,那么resourcemanger和nodemanager日志又是怎么表现的那?
所以又提交了一个job,通过命令
[mw_shl_code=bash,true]tail -f *.log[/mw_shl_code]
监控日志。可是这里面发现了神奇的事情
resourcemanager是有日志的,nodemanager竟然没有日志运行。
这时候,我们就判断,是任务没有下发
既然没有下发,怎么可能生成jhist那,所以对于找不到jhist,文件这个就可以理解了。
/user/admin/.staging/job_1571397171638_0001/job_1571397171638_0001_1.jhist

所以为什么没有下发,这里面jhist,只是被引发的错误,它还不是根本的错误。
/user/admin/.staging/job_1571397171638_0001/job_1571397171638_0001_1.jhist

因此我们这里又定位到了,第二个错误,那么有可能它就是根本的错误,也就是因为他导致任务不能下发。
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [0.0.0.0:0] java.net.BindException: Address already in use;
看到上面错误,一看我们就可以判断,这是网络问题,然而网络无非是防火墙,端口,hosts等。防火墙和端口这是非常容易排查的,而且我们这个发生问题的集群是可以正常运行的,所以这个防火墙,端口等问题排除。

那只能看看hosts了,对于hosts我们打开后,发现一个奇怪的问题。
我们正常的hosts是这样的
1.jpg

然而我们待解决问题的集群,确实类似这样的
1.jpg

我们注释掉127.0.0.1 master,然后尝试运行job。结果就是这个问题。至此问题解决。
2.png


没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条