“找不到历史服务器”通常出现在大数据处理框架(特别是Hadoop YARN 和MapReduce)的上下文中,它指的是客户端(例如你使用的Web浏览器、命令行工具或应用程序)无法连接到History Server。
历史服务器是一个独立的后台服务,专门用于存储和展示已经完成的应用(Application)或作业(Job)的详细历史信息,当你的程序运行结束后,YARN的ResourceManager和NodeManager上只保留非常有限的信息,而完整的历史日志和指标则被归档到历史服务器中。
当你看到“找不到历史服务器”这个错误时,意味着系统无法访问这个存储历史记录的关键服务。
1.MapReduce JobHistory Server
这是Hadoop MapReduce v1 和 v2 中用于收集和展示MapReduce作业历史信息的服务。
错误信息可能像Can't connect to History Server,Job history not available, 或者在YARN的Web UI上点击已完成的作业链接时,跳转失败或显示404。
作用 查看已完成的MapReduce作业的详细信息,包括每个Map/Reduce任务的计数器、日志、成功/失败状态等。
2.YARN Timeline Server
这是YARN v2 引入的、功能更强大的服务,用于收集应用程序和框架(如MapReduce、Spark等)的历史数据和通用时间线信息。
错误信息类似Timeline server is not available, 或者Spark作业完成后,无法在Spark History Server中查看详情(因为Spark History Server依赖于从Timeline Server读取数据)。
作用 为各类运行在YARN上的应用(不限于MapReduce)提供聚合的历史数据和性能指标。
1、服务未启动: 这是最常见的原因,历史服务器默认不会随Hadoop集群自动启动,需要管理员手动启动。
* 启动MapReduce JobHistory Server:mr-jobhistory-daemon.sh start historyserver
* 启动YARN Timeline Server (v2):yarn --daemon start timelineserver
* 启动YARN Timeline Service v2 (更新的版本,需要额外部署): 通常有专门的启动脚本。
2、网络或主机名解析问题:
* 客户端所在机器无法访问历史服务器所在的机器。
* 配置中使用的主机名(如historyserver-host:10020)无法被正确解析为IP地址,或者在/etc/hosts 文件中没有正确配置。
3、配置错误:
核心配置文件(如mapred-site.xml,yarn-site.xml)中的地址或端口配置有误。
* 对于MapReduce,关键配置是mapreduce.jobhistory.address 和mapreduce.jobhistory.webapp.address。
* 对于YARN Timeline Server,关键配置是yarn.timeline-service.hostname,yarn.timeline-service.address 等。
* 如果这些配置指向了错误的主机或端口,客户端自然无法找到。
4、防火墙阻止访问:
* 历史服务器监听的端口(如MapReduce的10020,Web UI的19888)被服务器或网络的防火墙规则屏蔽。
5、权限问题(较少见):
* 某些集群设置了严格的访问控制,客户端用户没有权限读取历史信息。
如果你是集群用户:
1、联系集群管理员: 最直接的方式是通知管理员,报告“历史服务器无法访问”,并提供你尝试访问的应用ID。
2、自行检查:
* 尝试在浏览器中直接访问历史服务器的Web UI地址,例如http://<history-server-hostname>:19888,如果打不开,基本确认是服务端问题。
如果你是集群管理员:
请按照以下步骤排查:
1、检查服务状态:
# 检查JobHistory Server进程
jps | grep JobHistoryServer
# 检查Timeline Server进程
jps | grep TimelineServer如果没有输出,说明服务没起来,需要启动它。
2、检查日志:
查看历史服务器日志(通常在Hadoop日志目录下,如$HADOOP_HOME/logs/),寻找启动失败或运行错误的线索。
3、验证网络和端口:
* 在历史服务器主机上,运行netstat -tulpn | grep :19888(或对应的端口),看服务是否在监听。
* 从客户端机器使用telnet <hostname> <port> 或nc -zv <hostname> <port> 测试端口连通性。
4、复核配置文件:
* 确保mapred-site.xml 和yarn-site.xml 中所有与历史服务器相关的配置都正确,并且指向可访问的主机名和端口。
注意 配置需要在所有集群节点上同步,并重启相关服务(ResourceManager, NodeManager)才能生效。
5、检查防火墙:
临时关闭防火墙(仅用于测试,生产环境需谨慎)或添加规则开放相应端口。
“找不到历史服务器”本质上是一个服务连接问题,它不影响当前作业的提交和执行,但会严重影响作业完成后的日志查看、性能分析和故障排查,对于依赖历史数据进行监控和优化的生产环境来说,保证历史服务器的稳定运行至关重要,解决的关键在于“确认服务状态 -> 检查网络连通 -> 验证配置” 这个排查链。
文章摘自:https://idc.huochengrm.cn/js/24759.html
评论
泰慧颖
回复找不到历史服务器通常指无法连接到Hadoop YARN中的History Server,可能是服务未启动、网络问题或配置错误导致,需检查服务状态、网络连通和配置文件,联系管理员或自行解决。