Hadoop 3.3.0 WordCount程序执行后无法在HDFS生成输出文件夹求助
Hadoop 3.3.0 WordCount程序执行后无法在HDFS生成输出文件夹求助
你好,我梳理了你的操作流程和遇到的问题,咱们一步步来排查可能的原因:
你的环境与已完成操作
- 运行环境:Windows10 + Hadoop 3.3.0 + JDK 1.8
- 已完成的步骤:
- 创建本地文件
data.txt,通过命令上传至HDFS的/input目录,且在Namenode管理页面(http://localhost:9870/)确认文件已存在 - 执行WordCount任务命令:
hadoop jar "C:\hadoop-3.3.0\share\hadoop\mapreduce\hadoop-mapreduce-examples-3.3.0.jar" wordcount /input/data.txt /output - 遇到的问题:执行命令后,Namenode页面始终看不到
/output文件夹,任务未生成预期输出
- 创建本地文件
排查步骤与解决方案
一、优先查看控制台(Img4)的日志报错
这是定位问题最直接的方式,Hadoop的任务日志会把细节都写出来:
- 如果提示
Output directory already exists:
Hadoop默认不允许覆盖已存在的输出目录,需要先删除旧目录再重试:hdfs dfs -rm -r /output - 如果提示
Permission denied:
Windows下Hadoop的权限配置容易出问题,可以临时关闭权限检查:
修改hadoop-3.3.0/etc/hadoop/hdfs-site.xml,添加或修改以下配置:
保存后重启Hadoop集群,再重新执行任务命令。<property> <name>dfs.permissions.enabled</name> <value>false</value> </property> - 如果提示
FileNotFoundException:
虽然你在页面看到了文件,但可能路径解析有问题,先通过命令验证HDFS里的文件是否存在:
如果返回结果里没有hdfs dfs -ls /inputdata.txt,重新执行上传命令(建议去掉路径的引号,避免解析异常):hdfs dfs -put D:\PhanTichDuLieu\data.txt /input
二、检查Hadoop集群的运行状态
任务执行依赖所有核心进程正常运行,在cmd里执行:
jps
正常情况下应该看到这些进程:NameNode、DataNode、ResourceManager、NodeManager、Jps
如果有进程缺失(比如DataNode没启动),去hadoop-3.3.0/logs目录查看对应进程的日志文件,排查启动失败原因。
三、直接通过命令验证输出目录是否存在
有时候Namenode页面可能因为缓存没刷新看不到目录,先通过命令确认:
hdfs dfs -ls /
如果能看到/output,说明目录已经生成,只是页面没刷新——清空浏览器缓存或重启Namenode服务后再查看;如果看不到,回到第一步重点分析日志报错。
四、Windows下Hadoop的特殊注意事项
Windows运行Hadoop经常有兼容性问题,你可以检查这几点:
- 确认
HADOOP_HOME环境变量已正确配置,且PATH里添加了%HADOOP_HOME%\bin和%HADOOP_HOME%\sbin - 确认你已经替换了对应版本的Windows原生库(winutils.exe等文件),缺失这些文件会导致MapReduce任务无法正常执行
- 尝试用管理员权限打开cmd执行任务命令,避免权限不足的问题
备注:内容来源于stack exchange,提问作者Thanh Thao
相关产品推荐
相关产品推荐

