使用筆記本來控制 Amazon EMR Spark 執行個體 - Amazon SageMaker AI

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

使用筆記本來控制 Amazon EMR Spark 執行個體

重要

允許 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 建立 Amazon SageMaker 資源的自訂 IAM 政策也必須授予許可,才能將標籤新增至這些資源。需要將標籤新增至資源的許可,因為 Studio 和 Studio Classic 會自動標記他們建立的任何資源。如果 IAM 政策允許 Studio 和 Studio Classic 建立資源,但不允許標記,則嘗試建立資源時可能會發生「AccessDenied」錯誤。如需詳細資訊,請參閱提供標記 SageMaker AI 資源的許可

AWS Amazon SageMaker AI 的 受管政策 提供建立 SageMaker 資源的許可,已包含建立這些資源時新增標籤的許可。

您可以使用使用自訂生命週期組態指令碼建立的筆記本執行個體,從筆記本存取 AWS 服務。例如,您可以建立指令碼,讓您使用筆記本搭配 Sparkmagic 來控制其他 AWS 資源,例如 Amazon EMR 執行個體。然後,您可以使用 Amazon EMR 執行個體來處理資料,而不是在筆記本上執行資料分析。這可讓您建立較小的筆記本執行個體,因為您不會使用執行個體來處理資料。當您擁有需要大型筆記本執行個體才能處理資料的大型資料集時,這會很有幫助。

此程序需要使用 Amazon SageMaker AI 主控台執行三個程序:

  • 建立 Amazon EMR Spark 執行個體

  • 建立 Jupyter 筆記本

  • 測試筆記本與 Amazon EMR 的連線

建立可從筆記本使用 Sparkmagic 進行控制的 Amazon EMR Spark 執行個體
  1. 請在 https://console.aws.amazon.com/elasticmapreduce/ 開啟 Amazon EMR 主控台。

  2. 在導覽窗格中,選擇建立叢集

  3. 建立叢集 - 快速選項頁面上的軟體組態底下,選擇 Spark: Spark 2.4.4 on Hadoop 2.8.5 YARN with Ganglia 3.7.2 and Zeppelin 0.8.2

  4. 設定該頁面上的其他參數,然後選擇建立叢集

  5. 叢集頁面上,選擇您所建立的叢集名稱。請記下 EMR 叢集建立所在的主要公有 DNSEMR 主節點的安全群組以及 VPC 名稱和子網路 ID。您會在建立筆記本時用到這些值。

建立會使用 Sparkmagic 來控制 Amazon EMR Spark 執行個體的筆記本
  1. https://console.aws.amazon.com/sagemaker/:// 開啟 Amazon SageMaker AI 主控台。

  2. 在導覽窗格的筆記本執行個體底下,選擇建立筆記本

  3. 輸入筆記本執行個體名稱,並選擇執行個體類型。

  4. 選擇其他組態,然後在生命週期組態底下,選擇建立新的生命週期組態

  5. 將下列程式碼新增至生命週期組態指令碼:

    # OVERVIEW # This script connects an Amazon EMR cluster to an Amazon SageMaker notebook instance that uses Sparkmagic. # # Note that this script will fail if the Amazon EMR cluster's master node IP address is not reachable. # 1. Ensure that the EMR master node IP is resolvable from the notebook instance. # One way to accomplish this is to have the notebook instance and the Amazon EMR cluster in the same subnet. # 2. Ensure the EMR master node security group provides inbound access from the notebook instance security group. # Type - Protocol - Port - Source # Custom TCP - TCP - 8998 - $NOTEBOOK_SECURITY_GROUP # 3. Ensure the notebook instance has internet connectivity to fetch the SparkMagic example config. # # https://aws.amazon.com/blogs/machine-learning/build-amazon-sagemaker-notebooks-backed-by-spark-in-amazon-emr/ # PARAMETERS EMR_MASTER_IP=your.emr.master.ip cd /home/ec2-user/.sparkmagic echo "Fetching Sparkmagic example config from GitHub..." wget https://raw.githubusercontent.com/jupyter-incubator/sparkmagic/master/sparkmagic/example_config.json echo "Replacing EMR master node IP in Sparkmagic config..." sed -i -- "s/localhost/$EMR_MASTER_IP/g" example_config.json mv example_config.json config.json echo "Sending a sample request to Livy.." curl "$EMR_MASTER_IP:8998/sessions"
  6. 在指令碼的 PARAMETERS 區段中,將 your.emr.master.ip 取代為 Amazon EMR 執行個體的主要公有 DNS 名稱。

  7. 選擇建立組態

  8. 建立筆記本頁面上,選擇網路 - 選項

  9. 選擇 Amazon EMR 執行個體所在的 VPC 和子網路。

  10. 選擇 Amazon EMR 主節點所使用的安全群組。

  11. 選擇建立筆記本執行個體

在系統建立筆記本執行個體時,其狀態會是待定。在執行個體建立完成且生命週期組態指令碼成功執行後,其狀態則會變為 InService

注意

如果筆記本執行個體無法連線至 Amazon EMR 執行個體,SageMaker AI 就無法建立筆記本執行個體。如果 Amazon EMR 執行個體和筆記本不在相同的 VPC 和子網路中、筆記本未使用 Amazon EMR 的主安全群組,或指令碼中的主要公有 DNS 名稱不正確,連線便可能失敗。

測試 Amazon EMR 執行個體與筆記本之間的連線
  1. 當筆記本的狀態為 InService 時,請選擇開啟 Jupyter以開啟筆記本。

  2. 選擇新增,然後選擇 Sparkmagic (PySpark)

  3. 在程式碼儲存格中輸入 %%info,然後執行儲存格。

    其輸出應該會類似以下內容

    Current session configs: {'driverMemory': '1000M', 'executorCores': 2, 'kind': 'pyspark'}
                        No active sessions.