ノートブックを使用して Amazon EMR Spark インスタンスを制御する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ノートブックを使用して Amazon EMR Spark インスタンスを制御する

重要

Amazon SageMaker Studio または Amazon SageMaker Studio Classic が Amazon SageMaker リソースを作成できるようにするカスタムIAMポリシーは、それらのリソースにタグを追加するアクセス許可も付与する必要があります。Studio と Studio Classic は、作成したリソースに自動的にタグ付けするため、リソースにタグを追加するアクセス許可が必要です。IAM ポリシーで Studio と Studio Classic がリソースの作成を許可されていてもタグ付けが許可されていない場合、リソースの作成を試みるとAccessDenied「」エラーが発生する可能性があります。詳細については、「リソースにタグ付けするための SageMakerアクセス許可を提供する」を参照してください。

AWS Amazon のマネージドポリシー SageMaker SageMaker リソースを作成するアクセス許可を付与する には、それらのリソースの作成中にタグを追加するアクセス許可が既に含まれています。

カスタムライフサイクル設定スクリプトで作成されたノートブックインスタンスを使用して、ノートブックから AWS サービスにアクセスできます。例えば、Sparkmagic でノートブックを使用して Amazon EMRインスタンスなどの他の AWS リソースを制御できるスクリプトを作成できます。その後、ノートブックでデータ分析を実行する代わりに、Amazon EMRインスタンスを使用してデータを処理できます。これにより、データを処理するためにインスタンスを使用しないため、より小さなノートブックインスタンスを作成できます。これは、データを処理するために大きなノートブックインスタンスを必要とする大規模なデータセットがある場合に役立ちます。

このプロセスには、Amazon SageMaker コンソールを使用した 3 つの手順が必要です。

  • Amazon Spark EMR インスタンスを作成する

  • Jupyter ノートブックを作成する

  • EMR 接続を notebook-to-Amazonテストする

Sparkmagic EMR を使用してノートブックから制御できる Amazon Spark インスタンスを作成するには
  1. で Amazon EMRコンソールを開きますhttps://console.aws.amazon.com/elasticmapreduce/

  2. ナビゲーションペインで、[クラスターの作成] を選択します。

  3. クラスターの作成 - クイックオプションページのソフトウェア設定 で、Ganglia 3.7.2 および Zeppelin 0.8.2 YARNを使用して Hadoop 2.8.5 で Spark: Spark 2.4.4 を選択します。

  4. ページで追加のパラメータを設定し、[クラスターの作成] を選択します。

  5. [クラスター] ページで、作成したクラスター名を選択します。Master Public DNSEMRマスターのセキュリティグループ 、EMRクラスターが作成されたVPC名前とサブネット ID を書き留めます。上記の値は、ノートブック作成時に使用します。

Sparkmagic を使用して Amazon Spark EMR インスタンスを制御するノートブックを作成するには
  1. で Amazon SageMaker コンソールを開きますhttps://console.aws.amazon.com/sagemaker/

  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セクションで、 を Amazon EMRインスタンスのマスターパブリックDNS名your.emr.master.ipに置き換えます。

  7. [Create configuration] (設定を作成) をクリックします。

  8. [ノートブックの作成] ページで、[ネットワーク - オプション] を選択します。

  9. Amazon EMRインスタンスがあるサブネットVPCとサブネットを選択します。

  10. Amazon EMRマスターノードで使用されるセキュリティグループを選択します。

  11. [Create notebook instance] (ノートブックインスタンスの作成) を選択します。

ノートブックインスタンスの作成中は、ステータスは [保留中] になります。インスタンスが作成され、ライフサイクル設定スクリプトが正常に実行されると、ステータスは になりますInService

注記

ノートブックインスタンスが Amazon EMRインスタンスに接続できない場合は、ノートブックインスタンスを作成 SageMaker できません。Amazon EMRインスタンスとノートブックが同じサブネットVPCとサブネットにない場合、Amazon EMRマスターセキュリティグループがノートブックで使用されていない場合、またはスクリプトのマスターパブリックDNS名が正しくない場合、接続が失敗する可能性があります。

Amazon EMRインスタンスとノートブック間の接続をテストするには
  1. ノートブックのステータスが の場合InServiceOpen Jupyter を選択してノートブックを開きます。

  2. New を選択し、Sparkmagic (PySpark) を選択します。

  3. コードセルで、%%info を入力し、セルを実行します。

    出力は次の例のようになります

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