Pyflink作業在yarn上提交失敗:python腳本缺失原因分析及解決方法
使用YARN提交PyFlink作業時,可能會遇到找不到python腳本的錯誤,例如:
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
這通常發生在使用以下類似命令時:
./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
與之對比,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
Java作業成功提交,說明HDFS配置正確,問題在于PyFlink作業的Python腳本路徑或配置。
立即學習“Python免費學習筆記(深入)”;
排查及解決步驟
-
驗證Python腳本路徑: 使用hdfs dfs -ls hdfs://nameservice1/pyflink/wc2.py命令檢查腳本wc2.py是否存在于指定的HDFS路徑。如果不存在,請確保正確上傳腳本到該路徑。
-
檢查PyFlink配置: 仔細檢查-pyarch、-pyclientexec和-pyexec參數,確保它們準確指向PyFlink環境和Python解釋器。 pyflink181.zip必須包含所有必要的Python庫和執行環境。
-
權限問題: 使用hdfs dfs -ls -h hdfs://nameservice1/pyflink/wc2.py查看腳本的HDFS權限。 如果權限不足,使用hdfs dfs -chmod 755 hdfs://nameservice1/pyflink/wc2.py修改權限,確保YARN和Flink用戶擁有讀取權限。
-
日志分析: 啟用Flink和YARN的詳細日志記錄,分析錯誤日志以獲取更具體的錯誤信息和發生位置。
-
Python環境兼容性: 確保PyFlink使用的Python版本與開發腳本時使用的版本一致,避免版本不兼容導致腳本無法識別或執行。
通過以上步驟,系統地排查問題,并根據實際情況調整配置,即可解決PyFlink作業在YARN上提交時找不到Python腳本的問題。 如果問題仍然存在,請提供更詳細的Flink和YARN日志信息以便進一步分析。