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

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

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

重要

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

AWS Amazon 管理ポリシー SageMaker SageMaker リソースを作成する権限を付与するものには、リソースの作成時にタグを追加する権限が既に含まれています。

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

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

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

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

  • ノートブックと Amazon EMR の接続をテストする

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

  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. [クラスター] ページで、作成したクラスター名を選択します。[マスターパブリック DNS][EMR マスターのセキュリティグループ]、EMR クラスターが作成された VPC 名とサブネット ID を書き留めます。上記の値は、ノートブック作成時に使用します。

Sparkmagic を使って Amazon EMR Spark インスタンスを制御するノートブックを作成するには
  1. https://console.aws.amazon.com/sagemaker/ で Amazon 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 セクションで、your.emr.master.ip を Amazon EMR インスタンスのマスターパブリック DNS 名に置き換えます。

  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. ノートブックのステータスがの場合InService、[Open Jupyter] を選択してノートブックを開きます。

  2. 新規」を選択し、次に「Sparkmagic ()」を選択します。PySpark

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

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

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