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腳本的問題。 記住仔細檢查每個步驟,并記錄下你的發現,以便更好地理解問題根源。