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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 程序员必备的分析解决问题能力:案例分享

导读:



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

咱们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;

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

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

 

还是需要从源头说起:

当我们提交任务的时候,通过cloudera mananger

看到了错误:

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

 

它是什么原因?


为什么会产生这个问题。

初步判断:

1.Linux权限

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,通过命令

tail -f *.log

监控日志。可是这里面发现了神奇的事情

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;

看到上面错误,我们就可以判断,这是网络问题,然而网络无非是ip地址,防火墙,端口,hosts等。ip地址、防火墙和端口这是非常容易排查的,而且我们这个发生问题的集群是可以正常运行的,所以这个防火墙,端口等问题排除。

那只能看看hosts了,对于hosts我们打开后,发现一个奇怪的问题。

我们正常的hosts是这样的


8b6b13dbe01095d3cd6e5fc01ce29216.png

然而我们待解决问题的集群,确实类似这样的,也就是多了127.0.0.1 master

1e6c74a4e54bc9dae766e21d37431169.png

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

 

总结


在回头复盘想想,我们找不到jhist,跟我们的网络问题二者是很难找到关联的,所以大家在遇到问题的时候,一定多排查和思考,而不是看到一个错误,就以为是它的问题。要追根溯源,找到真正问题的原因所在。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
数据采集 监控 数据挖掘
打造高效用户旅程:埋点分析系统的实操指南
在数字化时代,了解用户如何与我们的产品或服务互动是至关重要的。用户行为,在广义上,指的是用户在网站、应用程序或其他数字界面上的所有动作和反应。这些行为可能包括点击链接、浏览页面、填写表单,甚至是在社交媒体上分享内容。每一个动作都是用户体验的一部分,并对我们理解他们的需求和偏好提供了宝贵的线索。 在技术层面上,用户行为的跟踪和分析可以让我们深入了解用户的互动模式,从而指导我们的产品改进和市场战略。通过分析这些数据,我们可以发现用户旅程中的关键触点,识别用户体验的痛点,以及揭示潜在的优化机会。这不仅有助于提升用户满意度和忠诚度,还可以增强产品的市场竞争力。
打造高效用户旅程:埋点分析系统的实操指南
|
7月前
|
存储 算法 Python
学习编程是一个逐步积累的过程
【4月更文挑战第30天】学习编程是一个逐步积累的过程
45 2
|
Cloud Native Go
面试时的问题解决:展示你的逻辑思维与分析能力
面试时的问题解决:展示你的逻辑思维与分析能力
132 0
|
Cloud Native Go
面试中的批判性思维:如何展示你的分析能力
面试中的批判性思维:如何展示你的分析能力
137 0
|
SQL 前端开发 Java
分析解决问题的经验
分析解决问题的经验
|
监控 安全 项目管理
如何写一个优质高效的网络项目实施方案?这篇文章值得收藏!
如何写一个优质高效的网络项目实施方案?这篇文章值得收藏!
320 0
|
监控 Java 测试技术
|
SQL 存储 算法
【笔记】最佳实践—偏分析场景的实践和优化
PolarDB-X是一款以TP为主的HTAP数据库,也支持一定场景的分析需求。而典型的分析场景一般有以下几类特征:
【笔记】最佳实践—偏分析场景的实践和优化
|
Rust Kubernetes 测试技术
Krustlet 入手案例
本文将对基于 Kind 部署 Krustlet 并实践 Demo 应用
406 0
|
数据挖掘 Python
动手学习数据分析(三)——数据重构
首先导入numpy、pandas包和数据文件
106 0