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

使用jar命令运行Hadoop WordCount程序时提示‘No such file or directory’

解决Hadoop WordCount运行时的“No such file or directory”错误

作为刚上手Hadoop的新手,碰到这个错误太常见了,咱们一步步来排查可能的问题:

1. 检查命令中的关键路径是否正确

你运行的hadoop jar命令里包含三个核心路径:jar包路径、HDFS输入路径、HDFS输出路径,得逐一核对:

  • Jar包路径:先确认你指定的jar文件真实存在。比如你写的是hadoop jar ~/wordcount/WordCount.jar ...,可以先在终端执行ls ~/wordcount/,看看这个jar包是不是在目标位置,注意别犯大小写、拼写错误。
  • 输入文件路径:Hadoop读取的是HDFS上的文件,不是本地系统的!如果你直接写了本地路径比如/home/xxx/test.txt,肯定会找不到。得先把本地文件上传到HDFS,比如执行hdfs dfs -put /home/xxx/test.txt /user/xxx/input/,之后命令里的输入路径要写HDFS路径/user/xxx/input/test.txt或者整个输入目录/user/xxx/input
  • 输出路径:Hadoop要求输出路径必须不存在,如果之前运行过一次,这个目录已经存在,也会抛出类似的错误(有时候提示信息不够直观)。你可以先执行hdfs dfs -rm -r /user/xxx/output删掉已有的输出目录,再重新运行命令。

2. 确认HDFS服务状态正常

如果HDFS没启动或者出现异常,也会导致文件找不到的问题。先执行jps命令,查看是否有NameNodeDataNode这两个进程在运行。如果没有,先启动Hadoop集群:

start-dfs.sh
start-yarn.sh

启动完成后,再用hdfs dfs -ls /测试HDFS根目录是否能正常访问。

3. 检查Jar包的主类配置

你的WordCount程序有没有正确指定主类入口?如果jar包内没有配置主类,运行hadoop jar时需要明确主类的完整路径,比如:

hadoop jar WordCount.jar com.yourpackage.WordCount /user/xxx/input /user/xxx/output

要是漏了主类,Hadoop找不到要执行的程序,也可能抛出奇怪的“文件找不到”错误。你可以用jar tf WordCount.jar查看jar包内的文件,确认com/yourpackage/WordCount.class这类主类文件是否存在。

4. 核对HDFS路径的权限

确保当前用户对HDFS上的输入、输出路径有读写权限。比如执行hdfs dfs -ls /user/xxx/input如果无法查看内容,就是权限不足。可以用hdfs dfs -chmod 755 /user/xxx/input调整权限,或者确保你是用创建这些目录的用户来运行命令。

先从这几个方向排查,一般都能解决问题。如果还是不行,可以把完整的运行命令和错误提示贴出来,咱们再进一步分析~

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

火山引擎 最新活动