EMR Studio 考量 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

EMR Studio 考量

考量事項

使用 EMR Studio 時應考慮以下內容:

  • EMR 工作室提供以下 AWS 區域產品:

    • 美國東部 (俄亥俄) (us-east-2)

    • 美國東部 (維吉尼亞北部) (us-east-1)

    • 美國西部 (加利佛尼亞北部) (us-west-1)

    • 美國西部 (奧勒岡) (us-west-2)

    • 非洲 (開普敦) (af-south-1)

    • 亞太區域 (香港) (ap-east-1)

    • 亞太區域 (雅加達) (ap-southeast-3) *

    • 亞太區域 (墨爾本) (ap-southeast-4) *

    • 亞太區域 (孟買) (ap-south-1)

    • 亞太區域 (大阪) (ap-northeast-3) *

    • 亞太區域 (首爾) (ap-northeast-2)

    • 亞太區域 (新加坡) (ap-southeast-1)

    • 亞太區域 (雪梨) (ap-southeast-2)

    • 亞太區域 (東京) (ap-northeast-1)

    • 加拿大 (中部) (ca-central-1)

    • 歐洲 (法蘭克福) (eu-central-1)

    • 歐洲 (愛爾蘭) (eu-west-1)

    • 歐洲 (倫敦) (eu-west-2)

    • 歐洲 (米蘭) (eu-south-1)

    • 歐洲 (巴黎) (eu-west-3)

    • 歐洲 (西班牙) (eu-south-2)

    • 歐洲 (斯德哥爾摩) (eu-north-1)

    • 歐洲 (蘇黎世) (eu-central-2) *

    • 以色列(特拉維夫)(il-central-1)*

    • 中東(阿拉伯聯合大公國)(我-中部 -1)*

    • 南美洲 (聖保羅) (sa-east-1)

    • AWS GovCloud (美國東部) (gov-us-east-1)

    • AWS GovCloud (美國西部) (gov-us-west-1)

    * 這些區域不支援即時 Spark 使用者介面。

  • 若要讓使用者針對工作區佈建在 Amazon EC2 上執行的新 EMR 叢集,您可以將 EMR Studio 與一組叢集範本建立關聯。系統管理員可以使用 Service Catalog 定義叢集範本,並且可以選擇使用者或群組是否可以存取 Studio 中的叢集範本,或不存取叢集範本。

  • 當您定義存放在 Amazon S3 中之筆記本檔案的存取許可或從中讀取密碼時 AWS Secrets Manager,請使用 Amazon EMR 服務角色。這些許可不支援工作階段政策。

  • 可以建立多個 EMR Studio,以控制對不同 VPC 中 EMR 叢集的存取。

  • 使用在 AWS CLI EKS 叢集上設定 Amazon EMR。然後,可以使用 Studio 介面將叢集附接至具有受管端點的作業區,以執行筆記本作業。

  • 當您將 Trusted Identity Propagation 與 Amazon EMR 搭配使用時,還有其他考量事項也適用於 EMR Studio。如需詳細資訊,請參閱 Amazon EMR 與身分中心整合的注意事項和限制

  • EMR Studio 不支援下列 Python 魔術命令:

    • %alias

    • %alias_magic

    • %automagic

    • %macro

    • %%js

    • %%javascript

    • 使用 %configure 修改 proxy_user

    • 使用 %env%set_env 修改 KERNEL_USERNAME

  • EKS 叢集上的 Amazon EMR 不支援 EMR 工作室的 SparkMagic 命令。

  • 要在筆記本單元格中撰寫多行 Scala 陳述式,請確保除最後一行以外的所有陳述式以句點結尾。以下範例使用了多行 Scala 陳述式的正確語法。

    val df = spark.sql("SELECT * from table_name). filter("col1=='value'"). limit(50)
  • 為了增強可能與 Amazon EMR 搭配使用的主控台外應用程式的安全性,應用程式託管網域會在公用尾碼清單 (PSL) 中註冊。這些託管網域的範例包括:emrstudio-prod.us-east-1.amazonaws.com.rproxy.goskope.comemrnotebooks-prod.us-east-1.amazonaws.com.rproxy.goskope.comemrappui-prod.us-east-1.amazonaws.com。為了加強安全性,如果您需要在預設網域名稱中設定敏感性 Cookie,我們建議您使用具 __Host- 前置詞的 Cookie。這將有助於保護您的網域免受跨站請求偽造 (CSRF) 攻擊。如需詳細資訊,請參閱《Mozilla 開發人員網路》中的 Set-Cookie 頁面。

已知問題

  • 使用已啟用 Trusted Identity Propagation 之 IAM Identity Center 的 EMR Studio 只能與也使用 Trusted Identity Propagation 的 EMR 叢集建立關聯。

  • 建立 Studio 之前,請務必在瀏覽器中停用代理管理工具,例如 FoxyProxy 或 SwitchyOmega。當您選擇建立 Studio 時,作用中的代理可能會導致錯誤,並導致網路失敗錯誤訊息。

  • 在 Amazon EMR on EKS 叢集上執行的核心可能會因為逾時問題而無法啟動。如果您在啟動核心時遇到錯誤或問題,則請關閉筆記本檔案,關閉核心,然後重新開啟筆記本檔案。

  • 當您使用 Amazon EMR on EKS 叢集時,重新啟動核心操作無法如預期般運作。選取重新啟動核心之後,請重新整理工作區以使重新啟動生效。

  • 如果工作區未附接至叢集,則當 Studio 使用者開啟筆記本檔案並嘗試選取核心時,會顯示錯誤訊息。可以選擇確定來忽略此錯誤訊息,但您必須將工作區附接至叢集並選取核心,才能執行筆記本程式碼。

  • 使用具有安全組態的 Amazon EMR 6.2.0 來設定叢集安全性時,工作區介面會顯示為空白,無法如預期般運作。如果想要為叢集的 EMRFS 設定資料加密或 Amazon S3 授權,建議使用其他受支援的 Amazon EMR 版本。EMR Studio 適用於 Amazon EMR 版本 5.32.0 (Amazon EMR 5.x 系列) 和 6.2.0 (Amazon EMR 6.x 系列) 及更高版本。

  • 當您進行 在 Amazon EC2 任務上EMR執行的 Amazon 時,叢集上 Spark UI 的連結可能無法運作或無法顯示。若要重新產生連結,請建立新的筆記本儲存格並執行 %%info 命令。

  • Jupyter Enterprise Gateway 不會清除下列 Amazon EMR 發行版本中叢集主節點上的閒置核心:5.32.0、5.33.0、6.2.0 和 6.3.0。閒置核心會消耗運算資源,並可能導致長時間執行的叢集失敗。可以使用下列範例指令碼,為 Jupyter Enterprise Gateway 設定閒置核心清理。您可以 使用以下方式 Connect 到主節點 SSH,或提交指令碼作為一個步驟。如需詳細資訊,請參閱在 Amazon EMR 叢集上執行命令和指令碼

    #!/bin/bash sudo tee -a /emr/notebook-env/conf/jupyter_enterprise_gateway_config.py << EOF c.MappingKernelManager.cull_connected = True c.MappingKernelManager.cull_idle_timeout = 10800 c.MappingKernelManager.cull_interval = 300 EOF sudo systemctl daemon-reload sudo systemctl restart jupyter_enterprise_gateway
  • 當您搭配使用自動終止政策與 Amazon EMR 5.32.0、5.33.0、6.2.0 或 6.3.0 時,Amazon EMR 會將叢集標示為閒置,並可能會自動終止叢集,即使您擁有作用中的 Python3 核心。這是因為執行 Python3 核心不會在叢集上提交 Spark 作業。若要將自動終止與 Python3 核心搭配使用,建議您使用 Amazon EMR 6.4.0 版或更新版本。如需有關自動終止的詳細資訊,請參閱 使用自動終止政策

  • 當您使%%display用在表 DataFrame 中顯示 Spark 時,非常寬的表可能會被截斷。可以在輸出上按一下滑鼠右鍵,然後選取為輸出建立新檢視,以取得輸出的可捲動檢視。

  • 啟動火花型核心 (例如 PySpark Spark 或 SparkR) 會啟動 Spark 工作階段,然後在筆記本中執行儲存格會將該工作階段中的 Spark 工作排入佇列。中斷正在執行的儲存格時,Spark 作業將繼續執行。若要停止 Spark 作業,應該使用叢集上的 Spark UI。如需有關如何連線到 Spark UI 的說明,請參閱 使用 EMR Studio 偵錯應用程式和工作

  • 以根使用者身分使用 Amazon EMR 工作室工作區會 AWS 帳戶 導致403: Forbidden錯誤。這是因為 Amazon EMR 中的 Jupyter 企業閘道組態不允許存取根使用者。我們建議您不要將 root 使用者用於日常工作。如需其他身份驗證選項,請參AWS Identity and Access Management 閱 Amazon EMR 相關資訊。

功能限制

Amazon EMR Studio 不支援以下 Amazon EMR 功能:

  • 使用指定 Kerberos 驗證的安全組態,在 EMR 叢集上附接和執行作業

  • 具有多個主節點的叢集

  • 使用以 AWS 引力 2 為基礎的 Amazon EC2 執行個體的叢集 (適用於 Amazon EMR 6.x 版本低於 6.9.0 版本),而 5.x 版本低於 5.36.1

使用 Trusted Identity Propagation 的 Studio 不支援下列功能:

  • 無需範本即可建立 EMR 叢集。

  • 使用 EMR Serverless 應用程式。

  • 啟動 Amazon EMR on EKS 叢集。

  • 使用執行期角色。

  • 啟用 SQL Explorer 或工作區協作。

EMR Studio 的服務限制

下表顯示 EMR Studio 的服務限制。

項目 限制
EMR Studio 每個 AWS 帳號最多可容納 100 個
子網 每個 EMR Studio 最多關聯 5 個
IAM Identity Center 群組 每個 EMR Studio 最多指派 5 個
IAM Identity Center 使用者 每個 EMR Studio 最多指派 100 個

VPC 和子網路最佳實務

請使用下列最佳實務,為 EMR Studio 設定含有子網路的 Amazon Virtual Private Cloud (Amazon VPC):

  • 可以在 VPC 中指定最多五個子網路,以與 Studio 建立關聯。建議您在不同的可用區域中提供多個子網路,以支援工作區可用性,並讓 Studio 使用者存取跨不同可用區域的叢集。若要進一步了解如何使用 VPC、子網路和可用區域,請參閱《Amazon Virtual Private Cloud 使用者指南》中的 VPC 和子網路

  • 您指定的子網路應該能夠彼此通訊。

  • 若要讓使用者將工作區連結至公開託管的 Git 儲存庫,您應該只指定可透過網路位址轉譯 (NAT) 存取網際網路的私有子網路。如需有關設定 Amazon EMR 私有子網路的詳細資訊,請參閱 私有子網路

  • 搭配使用 Amazon EMR on EKS 與 EMR Studio 時,Studio 和用於註冊虛擬叢集的 Amazon EKS 叢集之間必須至少有一個共同子網路。否則,您的受管端點將不會顯示為 Studio 工作區中的選項。可以建立 Amazon EKS 叢集,並將其與屬於 Studio 的子網路產生關聯,或者建立 Studio 並指定 EKS 叢集的子網路。

  • 如果打算搭配使用 Amazon Amazon EMR on EKS 與 EMR Studio,請選擇與 Amazon EKS 叢集工作節點相同的 VPC。

Amazon EMR Studio 的叢集要求

在 Amazon EC2 上執行的 Amazon EMR 叢集

您為 EMR Studio Workspace 建立的 Amazon EC2 上執行的所有 Amazon EMR 叢集必須符合下列要求。使用 EMR Studio 介面建立的叢集會自動滿足這些要求。

  • 叢集必須使用 Amazon EMR 版本 5.32.0 (Amazon EMR 5.x 系列) 或 6.2.0 (Amazon EMR 6.x 系列) 或更高版本。您可以使用 Amazon EMR 主控台或開發套件建立叢集 AWS Command Line Interface,然後將其附加到 EMR 工作室工作區。Studio 使用者也可以在 Amazon EMR Workspace 中建立或運作時佈建和附接叢集。如需詳細資訊,請參閱 將運算連接到工作EMR室工作區

  • 叢集必須位於 Amazon Virtual Private Cloud 中。不支援 EC2-Classic 平台。

  • 叢集必須安裝 Spark、Livy 以及 Jupyter Enterprise Gateway。如果打算將叢集用於 SQL Explorer,應安裝 Presto 和 Spark。

  • 若要使用 SQL Explorer,叢集必須使用 Amazon EMR 5.34.0 版或更高版本或者 6.4.0 版或更高版本,並已安裝 Presto。如果要將 AWS Glue 資料目錄指定為 Presto 的 Hive 中繼存放區,則必須在叢集上進行配置。如需詳細資訊,請參閱搭配使用 Presto 與 AWS Glue Data Catalog

  • 叢集必須位於具有網路位址轉譯 (NAT) 的私有子網路中,才能搭配 EMR Studio 使用公開託管的 Git 儲存庫。

當您使用 EMR Studio 時,建議您使用下列叢集組態。

  • 將 Spark 工作階段的部署模式設定為叢集模式。叢集模式會將應用程式主程序置於核心節點上,而不是叢集的主節點上。這樣做可以減輕主節點的潛在記憶體壓力。如需詳細資訊,請參閱 Apache Spark 文件中的叢集模式概觀

  • 將 Livy 逾時從預設值一小時變更為六小時,如下列範例組態所示。

    { "classification":"livy-conf", "Properties":{ "livy.server.session.timeout":"6h", "livy.spark.deploy-mode":"cluster" } }
  • 建立最多具有 30 個執行個體的不同執行個體機群,並在 Spot 執行個體叢集中選取多個執行個體類型。例如,您可以針對 Spark 工作負載指定下列記憶體優化執行個體類型:r5.2x、r5.4x、r5.8x、r5.12x、r5.16x、r4.2x、r4.4x、r4.8x、r4.12 等。如需詳細資訊,請參閱 設定執行個體機群

  • 使用 Spot 執行個體的容量優化配置策略,協助 Amazon EMR 根據 Amazon EC2 的即時容量洞察進行有效的執行個體選擇。如需詳細資訊,請參閱 執行個體機群的配置策略

  • 在叢集上啟用受管擴展。將最大核心節點參數設定為您計劃使用的最小持續容量,並在 Spot 執行個體上執行的多樣化任務機群上設定擴展以節省成本。如需詳細資訊,請參閱 在 Amazon 中使用受管擴展 EMR

我們還敦促您保持啟用「Amazon EMR 封鎖公開存取」,並將傳入 SSH 流量限制為受信任的來源。叢集的傳入存取可讓使用者在叢集上執行筆記本。如需詳細資訊,請參閱 使用 Amazon EMR 塊公共訪問使用安全群組控制網路流量

Amazon EMR on EKS 叢集

除了在 Amazon EC2 上執行的 EMR 叢集之外,您還可以使用 AWS CLI,針對 EMR Studio 來設定和管理 Amazon EMR on EKS 叢集。使用下列準則設定 Amazon EMR on EKS 叢集:

  • 針對 Amazon EMR on EKS 叢集建立受管 HTTPS 端點。使用者將工作區附接至受管端點。您用來註冊虛擬叢集的 Amazon Elastic Kubernetes Service (EKS) 叢集必須擁有私有子網路才能支援受管端點。

  • 如果您想要使用公開託管的 Git 儲存庫,則請使用具有至少一個私有子網路和網路位址轉譯 (NAT) 的 Amazon EKS 叢集。

  • 避免使用 Amazon EKS 優化的 ARM Amazon Linux AMI,Amazon EMR on EKS 受管端點不支援。

  • 避免 AWS Fargate僅使用不受支援的 Amazon EKS 叢集。