でカーネルを強化する magic EMR Studio の コマンド - Amazon EMR

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

でカーネルを強化する magic EMR Studio の コマンド

概要

EMR Studio とEMRノートブックのサポート magic コマンド。マジック コマンド、または magicは、データの実行と分析に役立つ IPython カーネルが提供する機能強化です。IPython は、Python で構築されたインタラクティブなシェル環境です。

Amazon は EMRもサポートしています Sparkmagic、Spark 関連のカーネル (PySpark、SparkR、Scala カーネル) に特定の を提供するパッケージ magic クラスターで Livy を使用して Spark ジョブを送信する コマンドと コマンド。

以下を使用できます..。magic EMR ノートブックに Python カーネルがある限り、 コマンド。同様に、Spark 関連のカーネルは、Sparkmagic コマンド。

Magic コマンド、別名 magicには、次の 2 種類のバリエーションがあります。

  • 行 magic - これら magic コマンドは 1 つの%プレフィックスで表され、1 行のコードで動作します。

  • セル magic - これら magic コマンドは二重%%プレフィックスで表され、複数のコード行で動作します。

使用可能なすべての の場合 magic「」を参照してくださいリスト magic and Sparkmagic commands

考慮事項と制限事項

  • EMR サーバーレスは の実行%%shをサポートしていませんspark-submit。EMR ノートブックをサポートしていません magic。

  • EMR EKS クラスター上の Amazon は をサポートしていません Sparkmagic EMR Studio の コマンド。これは、マネージドエンドポイントで使用する Spark カーネルが Kubernetes に組み込まれており、 ではサポートされていないためです。Sparkmagic および Livy。次の例に示すように、回避策として Spark 設定を SparkContext オブジェクトに直接設定できます。

    spark.conf.set("spark.driver.maxResultSize", '6g')
  • 以下のようになります magic コマンドとアクションは、以下によって禁止されています AWS。

    • %alias

    • %alias_magic

    • %automagic

    • %macro

    • proxy_user を使用した %configure の変更

    • KERNEL_USERNAME または %env を使用した %set_env の変更

リスト magic and Sparkmagic commands

次のコマンドを使用して、使用可能な を一覧表示します。magic コマンド:

  • %lsmagic 現在利用可能なすべての を一覧表示する magic 関数。

  • %%help 現在利用可能な Spark 関連のリスト magic によって提供される 関数 Sparkmagic パッケージ。

%%configure を使用して Spark を設定する

最も便利な の 1 つ Sparkmagic コマンドは、セッション作成パラメータを設定する %%configure コマンドです。conf 設定を使用すると、Apache Spark の設定ドキュメントで説明されている任意の Spark 設定を構成できます。

例 Maven リポジトリまたは Amazon S3 からEMRノートブックに外部JARファイルを追加する

次の方法を使用して、 でサポートされている Spark 関連のカーネルに外部JARファイルの依存関係を追加できます。Sparkmagic.

%%configure -f {"conf": { "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3", "spark.jars": "s3://amzn-s3-demo-bucket/my-jar.jar" } }
例 : Hudi を設定する

ノートブックエディタを使用して、Hudi を使用するようにEMRノートブックを設定できます。

%%configure { "conf": { "spark.jars": "hdfs://apps/hudi/lib/hudi-spark-bundle.jar,hdfs:///apps/hudi/lib/spark-spark-avro.jar", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.hive.convertMetastoreParquet":"false" } }

%%sh を使用して spark-submit を実行する

%%sh magic は、アタッチされたクラスターのインスタンスのサブプロセスでシェルコマンドを実行します。通常、Spark 関連のカーネルのいずれかを使用して、アタッチされたクラスターで Spark アプリケーションを実行します。ただし、Python カーネルを使用して Spark アプリケーションを送信する場合は、以下を使用できます。magic、バケット名を小文字のバケット名に置き換えます。

%%sh spark-submit --master yarn --deploy-mode cluster s3://amzn-s3-demo-bucket/test.py

この例では、クラスターは、s3://amzn-s3-demo-bucket/test.py の場所にアクセスできる必要があります。アクセスできないと、コマンドは失敗します。

では、任意の Linux コマンドを使用できます。 %%shmagic。 Spark または YARN コマンドを実行する場合は、次のいずれかのオプションを使用して emr-notebook Hadoop ユーザーを作成し、そのユーザーにコマンドを実行するアクセス許可を付与します。

%%display を使用して Spark データフレームを視覚化する

は、 %%displaymagic Spark データフレームを視覚化します。これを使用するには magic、次のコマンドを実行します。

%%display df

以下の図のように、結果を表形式で表示することを選択します。

%%display を使用した の出力 magic テーブル形式で結果を表示する 。

5 種類のグラフでデータを視覚化することもできます。オプションには、円グラフ、散布図、折れ線グラフ、面グラフ、棒グラフがあります。

%%display を使用した の出力 magic グラフ形式で結果を表示する 。

EMR ノートブックを使用する magics

Amazon EMR では、以下のEMRノートブックを提供しています。magicPython3 および Spark ベースのカーネルで使用できる :

  • %mount_workspace_dir – Workspace 内の他のファイルからコードをインポートして実行できるように、Workspace ディレクトリをクラスターにマウントします。

    注記

    %mount_workspace_dir では、Python 3 カーネルのみがローカルファイルシステムにアクセスできます。Spark エグゼキューターは、このカーネルではマウントされたディレクトリにアクセスできません。

  • %umount_workspace_dir – Workspace ディレクトリをクラスターからアンマウントします

  • %generate_s3_download_url - Amazon S3 オブジェクトのノートブック出力に一時的なダウンロードリンクを生成します。

前提条件

EMR ノートブックをインストールする前に magicで、次のタスクを実行します。

  • クラスターEC2インスタンスのサービスロール (EC2 インスタンスプロファイル) が Amazon S3 の読み取りアクセス権を備えていることを確認してください。EMR_EC2_DefaultRoleAmazonElasticMapReduceforEC2Role マネージドポリシーを使用すると、この要件が満たされます。カスタムロールまたはポリシーを使用する場合は、必要な S3 アクセス許可があることを確認してください。

    注記

    EMR ノートブック magicは、ノートブックユーザーとしてクラスターで実行され、EC2インスタンスプロファイルを使用して Amazon S3 とやり取りします。Workspace ディレクトリを EMRクラスターにマウントすると、そのクラスターにアタッチする権限を持つすべての Workspace とEMRノートブックがマウントされたディレクトリにアクセスできます。

    デフォルトでは、ディレクトリは読み取り専用としてマウントされます。s3fs-fuse および goofys は読み取り/書き込みマウントを許可しますが、読み取り/書き込みモードでディレクトリをマウントするようにマウントパラメータを変更しないことを強くお勧めします。書き込みアクセスを許可すると、ディレクトリに加えられたすべての変更が S3 バケットに書き込まれます。誤って削除したり上書きしたりしないように、S3 バケットのバージョニングを有効にできます。詳細については、「S3 バケットでのバージョニングの使用」を参照してください。

  • クラスターで次のいずれかのスクリプトを実行して、EMRノートブックの依存関係をインストールします。magic。スクリプトを実行するには、実行中のEMRクラスターが既にある場合、Amazon クラスターでコマンドとスクリプトを実行するの手順に従うカスタムブートストラップアクションの使用か、実行します。

    インストールする依存関係を選択できます。s3fs-fusegoofys はどちらも FUSE (ユーザースペースのファイルシステム) ツールで、Amazon S3 バケットをクラスター上のローカルファイルシステムとしてマウントできます。このs3fsツールは、 のようなエクスペリエンスを提供しますPOSIX。このgoofysツールは、 POSIX準拠のファイルシステムよりもパフォーマンスを優先する場合に適しています。

    Amazon EMR7.x シリーズでは、EPELリポジトリをサポートしていない Amazon Linux 2023 を使用します。Amazon 7.x EMR を実行している場合は、s3fs-fuse GitHub の指示に従って をインストールしますs3fs-fuse。5.x または 6.x シリーズを使用する場合は、次のコマンドを使用して s3fs-fuse をインストールします。

    #!/bin/sh # Install the s3fs dependency for EMR Notebooks magics sudo amazon-linux-extras install epel -y sudo yum install s3fs-fuse -y

    または

    #!/bin/sh # Install the goofys dependency for EMR Notebooks magics sudo wget https://github.com/kahing/goofys/releases/latest/download/goofys -P /usr/bin/ sudo chmod ugo+x /usr/bin/goofys

EMR ノートブックのインストール magics

注記

Amazon EMRリリース 6.0~6.9.0、および 5.0~5.36.0 では、emr-notebooks-magicsパッケージバージョン 0.2.0 以降のみがサポートされます。 %mount_workspace_dirmagic.

EMR ノートブックをインストールするには、次のステップを実行します。magic。

  1. ノートブックで以下のコマンドを実行して emr-notebooks-magics パッケージをインストールします。

    %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
  2. カーネルを再起動してEMRノートブックをロードする magic。

  3. 次のコマンドを使用してインストールを検証します。これにより、%mount_workspace_dir の出力ヘルプテキストが表示されます。

    %mount_workspace_dir?

%mount_workspace_dir を使用してWorkspace ディレクトリをマウントする

%mount_workspace_dir magic では、Workspace ディレクトリをEMRクラスターにマウントして、ディレクトリに保存されている他のファイル、モジュール、またはパッケージをインポートして実行できます。

次の例では、Workspace ディレクトリ全体をクラスターにマウントし、オプションの <--fuse-type> 引数を指定してディレクトリのマウントに goofys を使用しています。

%mount_workspace_dir . <--fuse-type goofys>

Workspace ディレクトリがマウントされていることを確認するには、次の例のように、ls コマンドを使用して現在の作業ディレクトリを表示します。出力には、Workspace 内のすべてのファイルが表示されます。

%%sh ls

Workspace での変更が完了したら、次のコマンドを使用して Workspace ディレクトリをアンマウントします。

注記

Workspace が停止またはデタッチされた場合でも、Workspace ディレクトリはクラスターにマウントされたままです。Workspace ディレクトリを明示的にアンマウントする必要があります。

%umount_workspace_dir

%generate_s3_download_url を使用して Amazon S3 オブジェクトをダウンロードする

generate_s3_download_url コマンドは、Amazon S3 に保存されているオブジェクトURLの署名付き を作成します。署名付き を使用してURL、オブジェクトをローカルマシンにダウンロードできます。例えば、コードが Amazon S3 generate_s3_download_urlに書き込むSQLクエリの結果をダウンロードするには、 を実行します。 Amazon S3

署名付き URLは、デフォルトで 60 分間有効です。有効期限は、--expires-in フラグに秒数を指定することで変更できます。たとえば、 URLは 30 分間有効な --expires-in 1800を作成します。

次の例では、完全な Amazon S3 パス s3://EXAMPLE-DOC-BUCKET/path/to/my/object を指定して、オブジェクトのダウンロードリンクを生成しています。

%generate_s3_download_url s3://EXAMPLE-DOC-BUCKET/path/to/my/object

generate_s3_download_url の使用の詳細については、次のコマンドを実行してヘルプテキストを表示してください。

%generate_s3_download_url?

%execute_notebook を使用してノートブックをヘッドレスモードで実行する

%execute_notebook の場合 magicでは、別のノートブックをヘッドレスモードで実行し、実行した各セルの出力を表示できます。この magic には、Amazon EMRと Amazon がEC2共有するインスタンスロールに対する追加のアクセス許可が必要です。追加のアクセス許可を付与する方法の詳細については、%execute_notebook? コマンドを実行してください。

長時間かかるジョブの実行中、操作がないためにシステムがスリープ状態になったり、インターネット接続が一時的に切断されたりすることがあります。その結果、ブラウザと Jupyter Server 間の接続が中断される可能性があります。この場合、Jupyter Server から実行して送信したセルの出力が失われる可能性があります。

を使用してヘッドレスモードでノートブックを実行する場合 %execute_notebook magicEMR ノートブックは、ローカルネットワークに中断が発生した場合でも、実行されたセルからの出力をキャプチャします。 EMRノートブックは、実行したノートブックと同じ名前の新しいノートブックに出力を増分的に保存します。 EMRノートブックは、ノートブックをワークスペース内の新しいフォルダに配置します。ヘッドレス実行は同じクラスターで行われ、EMR_Notebook_DefaultRole サービスロールを使用しますが、引数を追加することでデフォルト値を変更できます。

ノートブックをヘッドレスモードで実行するには、以下のコマンドを使用します。

%execute_notebook <relative-file-path>

ヘッドレス実行のクラスター ID とサービスロールを指定するには、以下のコマンドを使用します。

%execute_notebook <notebook_name>.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>

Amazon EMRと Amazon がインスタンスロールEC2を共有する場合、ロールには次の追加のアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:StartNotebookExecution", "elasticmapreduce:DescribeNotebookExecution", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::<AccoundId>:role/EMR_Notebooks_DefaultRole" } ] }
注記

%execute_notebook を使用するには magic、 emr-notebooks-magicsパッケージ、バージョン 0.2.3 以降をインストールします。