You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

提交MapReduce作业报错:HDFS输入路径不存在问题求助

解决Hadoop MapReduce输入路径不存在的问题

从你给出的错误日志来看,核心问题是Hadoop无法找到指定的输入文件,具体触发的错误是:

Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost:9000/input/BX-Book-Ratings.csv

这里有两个关键问题需要排查和修复:

1. HDFS路径大小写不匹配

你执行命令时指定的输入路径是/Input/BX-Book-Ratings.csv(首字母大写的Input),但错误日志里Hadoop实际去查找的是/input/BX-Book-Ratings.csv(小写的input)。HDFS的文件路径是严格区分大小写的,这大概率是导致本次报错的直接原因。

2. 本地文件未同步到HDFS

你提到CSV文件在本地的/home/user/Desktop目录下,但Hadoop默认会优先去HDFS(分布式文件系统)中查找输入路径,而非本地文件系统。所以即使本地存在该文件,只要HDFS中没有同步过去,就会触发路径不存在的错误。

具体解决步骤:

  • 第一步:检查HDFS中的目标路径
    先执行以下命令确认HDFS里是否存在你指定的目录和文件:

    hdfs dfs -ls /Input
    

    如果返回File does not exist,说明HDFS里还没有对应的目录和文件。

  • 第二步:创建HDFS目录并上传本地文件
    先创建和命令中大小写一致的HDFS目录:

    hdfs dfs -mkdir -p /Input
    

    再把本地的CSV文件上传到这个HDFS目录下(替换成你实际的本地文件路径):

    hdfs dfs -put /home/user/Desktop/BX-Book-Ratings.csv /Input/
    
  • 第三步:重新运行Jar包
    完成上述操作后,再次执行你的原命令,应该就能正常找到输入文件了:

    hadoop jar /home/user/Desktop/project1_usecase3.jar /Input/BX-Book-Ratings.csv /Output
    

额外提示:

关于日志中的这个警告:

WARN mapreduce.JobSubmitter: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.

它不会导致当前的输入路径错误,但如果想规范Hadoop应用的命令行参数处理,可以让你的主类实现org.apache.hadoop.conf.Configurableorg.apache.hadoop.util.Tool接口,然后用ToolRunner.run()来启动应用,这样能更优雅地处理Hadoop的配置参数。

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

火山引擎 最新活动