我無法從 Amazon EMR 中的 Spark Web UI 檢視 Apache Spark 歷史事件或日誌。
簡短描述
您可以使用以下程式碼檢視 Amazon EMR 上的 Spark History Server:
- 叢集外存取持久性應用程式使用者介面 (從 EMR 5.25.0 開始)。
- 透過 SSH 連線設定 Web 代理,以便在叢集上存取應用程式使用者介面。
解決方案
我無法使用持久性 Spark History Server 或 UI 檢視自己的 Spark 歷史事件
在具有下列項目的 EMR 叢集上,無法存取持久性 Spark History Server 事件:
- 多個主節點
- 與 AWS Lake Formation 整合的 EMR 叢集。
- 預設目錄從 HDFS 變更為不同的檔案系統,如 Amazon Simple Storage Service (Amazon S3)。
如需詳細資訊,請參閱檢視持久性應用程式使用者介面 - 考量和限制。
**注意:**持久的 Spark History Server 不適合負載測試,也不適合檢視數千個平行執行的 Spark 應用程式。若要執行負載測試或檢視許多應用程式,請使用叢集上的 Spark History Server。
我無法使用叢集上的 Spark History Server 或 UI 檢視自己的 Spark 歷史事件
如果您在 6.3* 和 5.30 之前的 Amazon EMR 版本上將 Spark 事件儲存在 S3 儲存貯體中,則無法存取叢集上的 Spark History Server 事件。這些 Amazon EMR 版本中的 Spark History Server 沒有存取 S3 儲存貯體所需的 emrfs-hadoop-assembly JAR 檔案。如果沒有此 JAR 檔案,您會在嘗試存取 Spark History Server 事件時收到下列錯誤:
INFO FsHistoryProvider: History server ui acls disabled; users with admin permissions: ; groups with admin permissions
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found
若要避免此錯誤,請使用下列叢集組態。此組態將所需的 emrfs-hadoop-assembly JAR 檔案新增至 Spark History Server 的 classpath。
[
{
"classification": "spark-defaults",
"configurations": [],
"properties": {
"spark.eventLog.dir": "s3://<yourbucket>/",
"spark.history.fs.logDirectory": "s3://<yourbucket>/"
}
},
{
"classification": "spark-env",
"configurations": [
{
"classification": "export",
"properties": {
"SPARK_DAEMON_CLASSPATH": "$(ls /usr/share/aws/emr/emrfs/lib/emrfs-hadoop-assembly-*)"
}
}
],
"properties": {}
}
]
在 EMR 6.x 版本 (在 6.3 之前) 中,在叢集啟動期間將 Spark 事件日誌目錄設定為 S3而不使用 emrfs-hadoop-assembly,這會導致叢集終止。在叢集執行後進行變更可能會導致組態變更還原。
**備註:**6.3 和 5.30 之後的 Amazon EMR 版本並不需要此因應措施,因為必要的 JAR 檔案預設會新增至資料夾 /usr/lib/spark/jars/。
請記住,將 Spark 事件寫入 S3 時,Spark History Server 不會在不完整的應用程式清單中顯示此應用程式。此外,如果 Spark 內容未正確關閉,則事件日誌不會正確上傳到 S3。
我無法檢視位於私有子網路中的叢集的 Spark 歷史事件
如果您為叢集使用私有子網路,請確定私有子網路的 Amazon Virtual Private Cloud (Amazon VPC) 端點政策正確無誤。VPC 端點政策必須在 S3 的資源清單中包含 arn:aws:s3:::prod.MyRegion.appinfo.src/*。如需詳細資訊,請參閱私有子網路適用的 Amazon S3 最低政策。
在 Spark UI 上開啟傳輸中加密後,我收到錯誤 "NET:ERR_CERT_COMMON_NAME_INVALID"
此錯誤是由瀏覽器憑證驗證問題所造成。如果您使用的是 Mozilla Firefox,則會看到接受風險並繼續使用憑證的選項。在 Google Chrome 中,於警告頁面上輸入 thisisunsafe,這樣 Chrome 將跳過憑證驗證。