本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用筆記本來控制 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 執行個體
請在 https://console.aws.amazon.com/elasticmapreduce/
開啟 Amazon EMR 主控台。 -
在導覽窗格中,選擇建立叢集。
-
在建立叢集 - 快速選項頁面上的軟體組態底下,選擇 Spark: Spark 2.4.4 on Hadoop 2.8.5 YARN with Ganglia 3.7.2 and Zeppelin 0.8.2。
-
設定該頁面上的其他參數,然後選擇建立叢集。
-
在叢集頁面上,選擇您所建立的叢集名稱。請記下 EMR 叢集建立所在的主要公有 DNS、EMR 主節點的安全群組以及 VPC 名稱和子網路 ID。您會在建立筆記本時用到這些值。
建立會使用 Sparkmagic 來控制 Amazon EMR Spark 執行個體的筆記本
在 https://console.aws.amazon.com/sagemaker/
:// 開啟 Amazon SageMaker AI 主控台。 -
在導覽窗格的筆記本執行個體底下,選擇建立筆記本。
-
輸入筆記本執行個體名稱,並選擇執行個體類型。
-
選擇其他組態,然後在生命週期組態底下,選擇建立新的生命週期組態。
-
將下列程式碼新增至生命週期組態指令碼:
# 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"
-
在指令碼的
PARAMETERS
區段中,將your.emr.master.ip
取代為 Amazon EMR 執行個體的主要公有 DNS 名稱。 -
選擇建立組態。
-
在建立筆記本頁面上,選擇網路 - 選項。
-
選擇 Amazon EMR 執行個體所在的 VPC 和子網路。
-
選擇 Amazon EMR 主節點所使用的安全群組。
-
選擇建立筆記本執行個體。
在系統建立筆記本執行個體時,其狀態會是待定。在執行個體建立完成且生命週期組態指令碼成功執行後,其狀態則會變為 InService。
注意
如果筆記本執行個體無法連線至 Amazon EMR 執行個體,SageMaker AI 就無法建立筆記本執行個體。如果 Amazon EMR 執行個體和筆記本不在相同的 VPC 和子網路中、筆記本未使用 Amazon EMR 的主安全群組,或指令碼中的主要公有 DNS 名稱不正確,連線便可能失敗。
測試 Amazon EMR 執行個體與筆記本之間的連線
-
當筆記本的狀態為 InService 時,請選擇開啟 Jupyter以開啟筆記本。
-
選擇新增,然後選擇 Sparkmagic (PySpark)。
-
在程式碼儲存格中輸入
%%info
,然後執行儲存格。其輸出應該會類似以下內容
Current session configs: {'driverMemory': '1000M', 'executorCores': 2, 'kind': 'pyspark'} No active sessions.