Hadoop伪分布式模式下无法访问Tracking URL问题求助
解决Hadoop伪分布式环境下Tracking URL无法访问的问题
我之前在OSX上折腾Hadoop伪分布式的时候也碰到过类似的Tracking URL访问问题,结合你给出的配置片段,给你梳理几个排查和解决的方向:
首先先明确你给出的现有配置片段(方便对照排查):
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://127.0.0.1:9000</value> </property> </configuration>
mapred-site.xml(未完成片段)
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <!-- 这里你的配置不完整,这是关键问题之一 --> </property> </configuration>
接下来是具体的排查和修复步骤:
1. 补全JobHistory Server的核心配置
Tracking URL依赖JobHistory Server服务,你当前的mapred-site.xml里的mapreduce.jobhistory.address配置不完整,必须补全完整的配置项:
<property> <name>mapreduce.jobhistory.address</name> <value>127.0.0.1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>127.0.0.1:19888</value> </property>
同时要确保yarn-site.xml里有正确的YARN基础配置(如果还没配置的话):
<configuration> <property> <name>yarn.resourcemanager.address</name> <value>127.0.0.1:8032</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>127.0.0.1:8088</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
2. 确保所有相关服务都已启动
在OSX终端里依次执行以下命令,确认服务状态:
- 启动HDFS:
start-dfs.sh - 启动YARN:
start-yarn.sh - 启动JobHistory Server:
mr-jobhistory-daemon.sh start historyserver
执行jps命令,正常情况下应该能看到以下进程:
NameNode DataNode ResourceManager NodeManager JobHistoryServer
如果缺少JobHistoryServer,说明服务启动失败,直接去日志目录找报错信息。
3. 检查端口访问权限和本地防火墙
OSX的防火墙可能会阻止Hadoop服务的端口访问:
- 打开「系统偏好设置」→「安全性与隐私」→「防火墙」,确保允许
java进程(Hadoop基于Java运行)接收传入连接。 - 用
lsof -i :19888命令检查19888端口(JobHistory WebUI端口)是否被JobHistoryServer占用,如果没占用,说明服务没启动成功。
4. 验证Tracking URL的正确性
当你运行MapReduce任务后,控制台输出的Tracking URL应该类似http://127.0.0.1:19888/jobhistory/job/job_xxxxxx_xxxx,可以直接在浏览器里访问这个URL;也可以先访问http://127.0.0.1:19888进入JobHistory WebUI,再从里面找到对应任务的跟踪链接。
如果还是无法访问,直接查看Hadoop的日志文件定位问题:
- JobHistory Server日志路径:
$HADOOP_HOME/logs/mapred-<你的用户名>-historyserver-<你的主机名>.log - YARN ResourceManager日志路径:
$HADOOP_HOME/logs/yarn-<你的用户名>-resourcemanager-<你的主机名>.log
日志里的报错信息能帮你快速定位具体问题,比如端口冲突、配置语法错误等。
内容的提问来源于stack exchange,提问作者tbt
相关产品推荐
相关产品推荐

