pyflink作业在yarn application上找不到python脚本的排查指南
本文分析了PyFlink作业提交到Yarn Application时,找不到python脚本的常见问题,并提供了详细的排查步骤。 问题表现为使用flink run-application命令提交PyFlink作业时,出现[errno 2] no such file or Directory错误,提示找不到python脚本。
问题重现:
用户使用以下命令提交PyFlink作业:
立即学习“Python免费学习笔记(深入)”;
./flink run-application -t yarn-application -Dyarn.application.name=flinkcdctestpython -Dyarn.provided.lib.dirs="hdfs://nameservice1/pyflink/flink-dist-181" -Pyarch hdfs://nameservice1/pyflink/pyflink181.zip -Pyclientexec pyflink181.zip/pyflink181/bin/python -Pyexec pyflink181.zip/pyflink181/bin/python -Py hdfs://nameservice1/pyflink/wc2.py
结果报错:
2024-05-24 16:38:02,030 info org.apache.flink.client.python.pythondriver [] - pyflink181.zip/pyflink181/bin/python: can't open file 'hdfs://nameservice1/pyflink/wc2.py': [errno 2] no such file or directory
而提交Java作业则成功:
./flink run-application -t yarn-application -Djobmanager.memory.process.size=1024m -Dtaskmanager.memory.process.size=1024m -Dyarn.application.name=flinkcdctest -Dyarn.provided.lib.dirs="hdfs://nameservice1/pyflink/flink-dist-181" hdfs://nameservice1/pyflink/StateMachineExample.jar
这说明HDFS配置本身没有问题。
排查步骤:
-
验证Python脚本路径: 仔细检查hdfs://nameservice1/pyflink/wc2.py路径的准确性。使用HDFS命令行工具(例如hdfs dfs -ls)验证该文件是否存在,并检查路径拼写是否正确。
-
验证Python解释器路径: 确认pyflink181.zip/pyflink181/bin/python路径下的Python解释器是否存在且可执行。 解压pyflink181.zip文件,检查bin/python是否存在,并尝试手动执行该解释器。
-
检查文件权限: 确保Flink作业在Yarn上的运行用户拥有访问hdfs://nameservice1/pyflink/wc2.py文件的权限。使用HDFS命令行工具检查文件权限,并根据需要修改权限。
-
检查PyFlink和Flink版本兼容性: 确保使用的PyFlink版本与Flink版本兼容。查看PyFlink和Flink的官方文档,确认版本匹配。不兼容的版本可能会导致此类问题。
-
检查Yarn配置: 检查Yarn的配置,特别是与Python相关的配置。 确保Yarn环境能够正确地处理Python作业。这可能需要检查Yarn的日志文件以查找更多线索。
-
检查-Pyarch参数: 确保-Pyarch参数指向的PyFlink包路径正确,并且该包包含必要的Python依赖项。
-
使用绝对路径: 尝试使用Python脚本的绝对HDFS路径,而不是相对路径,以排除任何路径解析问题。
通过系统地检查以上几个方面,可以有效地定位并解决PyFlink作业在Yarn Application上找不到Python脚本的问题。 记住仔细检查每个步骤,并记录下你的发现,以便更好地理解问题根源。