本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
、emrnotebooks-prod.us-east-1.amazonaws.com
、emrappui-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 叢集。