為什麼我不能從 Amazon EMR 中的 Spark Web UI 檢視 Apache Spark 歷史事件或日誌?

2 分的閱讀內容
0

我無法從 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 將跳過憑證驗證。


AWS 官方
AWS 官方已更新 1 年前