Amazon Managed Service for Apache Flink 之前稱為 Amazon Kinesis Data Analytics for Apache Flink。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
疑難排解適用於 Apache Flink 的受管理服務的工作室
本節包含 Studio 筆記本的疑難排解資訊。
停止卡住的應用程式
若要停止停留在暫時狀態的應用程式,請在Force
參數設定為的情況下呼叫StopApplication動作true
。如需詳細資訊,請參閱 Managed Service for Apache Flink 開發人員指南中的執行應用程式。
在沒有網際網路存取的情況下部署為VPC具有持久狀態的應用程式
Apache Flink 工作室 deploy-as-application 功能的託管服務不支持沒有互聯網訪問的VPC應用程序。我們建議您在 Studio 中建置應用程式,然後使用 Managed Service for Apache Flink 手動建立 Flink 應用程式,並選取您在筆記本中建置的 zip 檔案。
下列步驟概述了這種方法:
建置 Studio 應用程式並將其匯出到 Amazon S3。這必須是一個 zip 檔案。
使用引用 Amazon S3 中 zip 檔案位置的程式碼路徑,手動建立 Managed Service for Apache Flink 應用程式。此外,您將需要使用以下
env
變數 (總共 2 個groupID
,3 個var
) 設定應用程式:kinesis.analytics.flink.run.options
python: source/note.py
罐子文件:庫PythonApplicationDependencies/.
managed.deploy_as_app.options
資料庫ARN:
<glue database ARN (Amazon Resource Name)>
您可能需要為應用程式使用的服務授與 Apache Flink 工作室的受管理服務和 Apache Flink IAM 角色的受管理服務。您可以對這兩個應用程式使用相同的IAM角色。
D eploy-as-app 尺寸和構建時間縮短
Python 應用程序的工作室 deploy-as-app 打包 Python 環境中可用的所有內容,因為我們無法確定您需要哪些庫。這可能會導致比必要的大小。 deploy-as-app 下列程序示範如何藉由解除安裝相依性來減少 deploy-as-app Python 應用程式大小的大小。
如果您正在構建具有 Studio deploy-as-app 功能的 Python 應用程序,如果您的應用程序不依賴,則可以考慮從系統中刪除預先安裝的 Python 包。這不僅有助於減少最終成品大小,以避免違反應用程序大小的服務限制,還可以縮短具有該 deploy-as-app 功能的應用程序的構建時間。
您可以執行以下命令以列出所有已安裝的 Python 套件及其各自的安裝大小,並有選擇地移除較大的套件。
%flink.pyflink !pip list --format freeze | awk -F = {'print $1'} | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{gsub("-","_",$1); print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null | sort -hr
注意
apache-beam
是 Flink Python 運作必需的套件。始終不能移除此套件及其相依性。
以下是在 Studio V2 中預先安裝的、可以考慮移除的 Python 套件之清單:
scipy statsmodels plotnine seaborn llvmlite bokeh pandas matplotlib botocore boto3 numba
若要從 Zeppelin 筆記本中移除 Python 套件:
在移除之前,請檢查您的應用程式是否依賴於該套件或其任何消費套件。您可以使用 pipdeptree
識別套件的相依性。 執行以下命令來移除套件:
%flink.pyflink !pip uninstall -y <package-to-remove>
如果需要檢索錯誤移除的套件,請執行以下命令:
%flink.pyflink !pip install <package-to-install>
範例 示例:在使用功能部署 Python 應用程序之前刪除scipy
deploy-as-app 包。
使用
pipdeptree
發現所有scipy
使用者,並驗證是否可以安全移除scipy
。透過筆記本安裝該工具:
%flink.pyflink !pip install pipdeptree
藉由執行以下命令取得
scipy
的反向相依性樹:%flink.pyflink !pip -r -p scipy
您應該會看到類似下列的輸出 (為求簡化已進行壓縮):
... ------------------------------------------------------------------------ scipy==1.8.0 ├── plotnine==0.5.1 [requires: scipy>=1.0.0] ├── seaborn==0.9.0 [requires: scipy>=0.14.0] └── statsmodels==0.12.2 [requires: scipy>=1.1] └── plotnine==0.5.1 [requires: statsmodels>=0.8.0]
仔細檢查
seaborn
、statsmodels
和plotnine
在應用程式中的使用情況。如果應用程式不依賴scipy
、seaborn
、statemodels
或plotnine
中的任意一項,便可移除所有這些套件,或只移除應用程式不需要的套件。執行以下命令移除套件:
!pip uninstall -y scipy plotnine seaborn statemodels
取消工作
本節說明如何取消無法從 Apache Zeppelin 取得的 Apache Flink 作業。若要取消此類作業,請前往 Apache Flink 儀表板,複製作業 ID,然後在下列其中一個範例中使用它。
取消單一作業:
%flink.pyflink import requests requests.patch("https://zeppelin-flink:8082/jobs/[job_id]", verify=False)
取消所有執行中作業:
%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: if (job["status"] == "RUNNING"): print(requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False))
取消所有作業:
%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False)
重新啟動阿帕奇 Flink 解釋器
在 Studio 筆記本中重新啟動 Apache Flink 解譯器
選擇熒幕右上角附近的組態。
選擇解譯器。
-
選擇重新啟動,然後按確定。