如何解决Apache Pig MapReduce模式下DUMP命令无法正常运行的问题
Pig MapReduce模式双报错排查解决方案
报错1:HDFS输入路径不存在
根因
Pig运行在MapReduce模式时,默认所有读写路径均指向HDFS,你填写的本地文件路径会被自动拼接HDFS前缀,因此会到HDFS中查找对应路径的文件,自然找不到。
解决方案
二选一即可:
- 方案1(推荐):将本地文件上传到HDFS对应路径
依次执行两条HDFS命令:
上传完成后直接运行原LOAD语句即可正常读取数据。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/ - 方案2:指定读取本地文件系统
将LOAD语句中的路径前缀加上file://,修改后语句如下:
注意:该方案仅在Hadoop集群所有节点的相同路径下都存放了myfile1.txt时才会正常运行,否则会出现部分分区找不到文件的报错,生产环境不推荐使用。A = LOAD 'file:///home/hadoop/hadoop-2.9.2/Pig/pigprogs/myfile1.txt' USING PigStorage(',') AS (a1:int, a2:int, a3:int);
报错2:无法连接localhost:10020作业历史服务器
根因
Hadoop的JobHistoryServer服务未启动、端口配置错误或者防火墙拦截了10020端口。
排查解决步骤
- 第一步:确认作业历史服务是否启动
执行jps命令查看Java进程列表,检查是否存在JobHistoryServer进程,若不存在执行启动命令:
启动后再次执行jps确认进程正常运行。$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver - 第二步:核对作业历史服务端口配置
打开$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
相关产品推荐
相关产品推荐

