You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Apache Pig MapReduce模式下DUMP命令无法正常运行的问题

Pig MapReduce模式双报错排查解决方案

报错1:HDFS输入路径不存在

根因

Pig运行在MapReduce模式时,默认所有读写路径均指向HDFS,你填写的本地文件路径会被自动拼接HDFS前缀,因此会到HDFS中查找对应路径的文件,自然找不到。

解决方案

二选一即可:

  • 方案1(推荐):将本地文件上传到HDFS对应路径
    依次执行两条HDFS命令:
    hdfs dfs -mkdir -p /home/hadoop/hadoop-2.9.2/Pig/pigprogs/
    hdfs dfs -put /home/hadoop/hadoop-2.9.2/Pig/pigprogs/myfile1.txt /home/hadoop/hadoop-2.9.2/Pig/pigprogs/
    
    上传完成后直接运行原LOAD语句即可正常读取数据。
  • 方案2:指定读取本地文件系统
    将LOAD语句中的路径前缀加上file://,修改后语句如下:
    A = LOAD 'file:///home/hadoop/hadoop-2.9.2/Pig/pigprogs/myfile1.txt' USING PigStorage(',') AS (a1:int, a2:int, a3:int);
    
    注意:该方案仅在Hadoop集群所有节点的相同路径下都存放了myfile1.txt时才会正常运行,否则会出现部分分区找不到文件的报错,生产环境不推荐使用。

报错2:无法连接localhost:10020作业历史服务器

根因

Hadoop的JobHistoryServer服务未启动、端口配置错误或者防火墙拦截了10020端口。

排查解决步骤

  • 第一步:确认作业历史服务是否启动
    执行jps命令查看Java进程列表,检查是否存在JobHistoryServer进程,若不存在执行启动命令:
    $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
    
    启动后再次执行jps确认进程正常运行。
  • 第二步:核对作业历史服务端口配置
    打开$HADOOP_HOME/etc/hadoop/mapred-site.xml文件,确认包含以下配置:
    mapreduce.jobhistory.address localhost:10020 mapreduce.jobhistory.webapp.address localhost:19888
    若配置有误修改后,重启作业历史服务器生效:
    $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh stop historyserver
    $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
    
  • 第三步:检查防火墙端口拦截
    执行sudo ufw status查看Ubuntu防火墙规则,确认10020端口是否放行,若被拦截执行命令放开端口:
    sudo ufw allow 10020
    

内容的提问来源于stack exchange,提问作者Sudip Chatterjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:27:01