如何解决Dataproc提交Python Hadoop作业时Jar文件找不到错误?
解决Dataproc 2.2.x版本Hadoop Streaming作业找不到hadoop-streaming.jar的问题
问题原因
Dataproc 2.x系列镜像(基于Hadoop 3.x)调整了hadoop-streaming.jar的官方存放路径,标准路径为/usr/lib/hadoop-mapreduce/hadoop-streaming.jar。尽管主节点的/usr/lib/hadoop/下存在软链接,但作业提交时必须使用官方标准路径才能被Dataproc作业调度服务正确识别。同时你的命令中还存在脚本文件名不匹配的问题:上传的是mapper.py/reducer.py,但mapper/reducer参数里写的是mapper_task_1.py/reducer_task_1.py,这会导致后续执行阶段找不到脚本。
修正后的完整命令
gcloud dataproc jobs submit hadoop \ --cluster=my-cluster-1 \ --region=us-central1 \ --jar=/usr/lib/hadoop-mapreduce/hadoop-streaming.jar \ --files=gs://<bucket_name>/mapper.py,gs://<bucket_name>/reducer.py \ -- --mapper "python3 mapper.py" \ --reducer "python3 reducer.py" \ --input gs://<bucket_name>/sample/ \ --output gs://<bucket_name>/output/
关键修正点
- 修正jar路径:将
--jar参数的值替换为/usr/lib/hadoop-mapreduce/hadoop-streaming.jar,这是Dataproc 2.x版本的官方标准路径。 - 统一脚本文件名:确保
--mapper/--reducer中指定的脚本名称,与--files参数里上传的文件名完全一致,避免执行时出现文件找不到的错误。
内容的提问来源于stack exchange,提问作者The Beast
相关产品推荐
相关产品推荐

