使用PyFlink将作业提交到Yarn Application时,经常会遇到找不到Python脚本的错误。本文分析一个具体案例,用户提交PyFlink作业时报错找不到wc2.py
脚本。
用户使用以下命令提交PyFlink作业:
./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命令验证hdfs://nameservice1/pyflink/wc2.py
是否存在且可访问:
hdfs dfs -ls hdfs://nameservice1/pyflink/wc2.py
检查权限: 确认Yarn Application运行用户对该Python脚本拥有读取权限。
Python环境验证: 仔细检查-pyclientexec
和-pyexec
参数指定的Python解释器路径是否正确,并确保pyflink181.zip
中的Python环境配置完整且有效。
版本兼容性: 确保PyFlink版本与Flink版本兼容。版本不兼容可能导致脚本无法正确加载。
增强日志: 提高日志级别以获取更多调试信息:
./flink run-application -t yarn-application -Dlog4j.logger.org.apache.flink.client.python=DEBUG # 其他参数...
通过以上步骤,可以系统地排查PyFlink作业在Yarn Application中找不到Python脚本的问题,并找到根本原因。 建议逐一检查,并根据日志信息进行更精细的排查。