AmazonEKS上のAmazonEMR の展開オプションを提供します アマゾンEMR これにより、分析ワークロードを実行できるようになります。 Amazon Elastic Kubernetesサービス (アマゾンEKS)。これは、インフラストラクチャをプロビジョニングすることなく、リソースの共通プールでアプリケーションを実行できるため、魅力的なオプションです。さらに、次のこともできます。 アマゾンEMRスタジオ Amazon EKS クラスター上で実行される分析コードを構築します。 EMR Studio は、EKS 上の EMR を含む任意の EMR クラスターに接続できるフルマネージド Jupyter ノートブックを使用する Web ベースの統合開発環境 (IDE) です。それは使用しています AWSシングルサインオン (SSO) または互換性のあるアイデンティティ プロバイダー (IdP) を使用して、企業の資格情報を使用して安全な URL 経由で EMR Studio に直接ログインします。
EMR Studio をデプロイして EKS 上の EMR に接続するには、いくつかの AWS サービスを統合する必要があります。
さらに、EKS コンポーネントに次の EMR をインストールする必要があります。
この投稿は、必要なすべてのコンポーネントを構築し、単一のスクリプトを実行することでそれらをつなぎ合わせるのに役立ちます。また、このセットアップのアーキテクチャとコンポーネントがどのように連携するかについても説明します。
アーキテクチャの概要
EKS 上の EMR を使用すると、同じ Amazon EKS クラスター上で他のタイプのアプリケーションと並行して Spark アプリケーションを実行できるため、リソースの割り当てが改善され、インフラストラクチャ管理が簡素化されます。 Amazon EMR が Amazon EKS クラスター内でどのように動作するかについての詳細は、を参照してください。 新機能 – Amazon Elastic Kubernetes Service (EKS) 上の Amazon EMR。 EMR Studio は、EMR で実行されるアプリケーションの開発、視覚化、デバッグを容易にする Web ベースの IDE を提供します。詳細については、「」を参照してください。 Amazon EMR Studio (プレビュー): Amazon EMR を使用した新しいノートブックファーストの IDE エクスペリエンス.
Spark カーネルは、Amazon EKS クラスターの名前空間にスケジュールされたポッドです。 EMR Studio は、Jupyter Enterprise Gateway (JEG) を使用して、Amazon EKS 上で Spark カーネルを起動します。 JEG タイプのマネージド エンドポイントは、EMR 仮想クラスターの関連名前空間に Kubernetes デプロイメントとしてプロビジョニングされ、Kubernetes サービスとして公開されます。各 EMR 仮想クラスターは、Amazon EKS クラスターに登録された Kubernetes 名前空間にマッピングされます。仮想クラスターは物理的なコンピューティングやストレージを管理しませんが、ワークロードがスケジュールされている Kubernetes 名前空間を指します。各仮想クラスターには複数の管理対象エンドポイントを含めることができ、それぞれにさまざまなユースケースやニーズに合わせて独自に構成されたカーネルがあります。 JEG 管理エンドポイントは、Application Load Balancer (ALB) によってサービスされる HTTPS エンドポイントを提供します。これらのエンドポイントは、EMR Studio および Amazon EKS VPC のプライベート サブネット内に作成された自己ホスト型ノートブックからのみアクセスできます。
マネージドエンドポイントは、仮想クラスターの Amazon EKS 名前空間 (この場合、 sparkns
)、HTTPS エンドポイントはプライベート サブネットからサービスを受けます。カーネル ポッドは、管理対象エンドポイントで定義されたジョブ実行 IAM ロールを使用して実行されます。マネージド エンドポイントの作成中、EKS 上の EMR は AWS ロード バランサー コントローラーを使用します。 kube-system
名前空間を使用して、仮想クラスターの Kubernetes 名前空間内の JEG 管理対象エンドポイントに接続するターゲット グループを持つ ALB を作成します。
各管理対象エンドポイントのカーネルを別々に構成できます。たとえば、Spark カーネルの使用を許可するには、 AWSグルー カタログとして、次の構成 JSON ファイルを — に適用できます。configuration-overrides
マネージド エンドポイントを作成するときにフラグを設定します。
管理対象エンドポイントは、構成された名前空間内のサービスが前面にある Kubernetes デプロイメントです (この場合、 sparkns
)。エンドポイント情報を追跡すると、Jupyter Enterprise Gateway デプロイメントが ALB およびターゲット グループにどのように接続されているかがわかります。
これがどのように関連するかを確認するために、18888 つの EMR Studio セッションを考えてみましょう。 ALB はポート 18888 を EMR Studio セッションに公開します。 JEG サービスは、ALB 上の外部ポート XNUMX を動的ポートにマッピングします。 NodePort
JEG サービス (この場合は 30091) 上で。 JEG サービスはトラフィックを TargetPort
9547。トラフィックを適切な Spark ドライバー ポッドにルーティングします。次の図に示すように、各ノートブック セッションには独自のカーネルがあり、それぞれの Spark ドライバー ポッドとエグゼキューター ポッドがあります。
EMR Studio を仮想クラスターと管理対象エンドポイントに接続する
ユーザーが仮想クラスターとマネージド エンドポイントを Studio ワークスペースにアタッチし、Spark セッションを起動するたびに、Spark ドライバーと Spark エグゼキューターがスケジュールされます。走ってみるとわかります kubectl
どのポッドが起動されたかを確認するには:
各ノートブックの Spark カーネル セッションは、カーネル セッションがシャットダウンされるまで実行を続けるドライバー ポッドとエグゼキューター ポッドをデプロイします。
ノートブックのセル内のコードは、Amazon EKS クラスターにデプロイされたエグゼキューター ポッドで実行されます。
EKS と EMR Studio で EMR をセットアップする
EKS と EMR Studio で EMR をセットアップするには、いくつかの手順と部分が必要です。 AWS SSO を有効にすることが前提条件です。このセクションで提供されている 2 つの起動スクリプトを使用することも、この投稿で後述する手順を使用して手動でデプロイすることもできます。
この投稿では 2 つの起動スクリプトを提供します。 1 つは、次を使用する bash スクリプトです。 AWS CloudFormation、eksctl、および AWSコマンドラインインターフェイス (AWS CLI) コマンドを使用して、完全なソリューションのエンドツーエンドのデプロイを提供します。もう一方は、 AWSクラウド開発キット (AWS CDK) そうするために。
次の図は、デプロイするアーキテクチャとコンポーネントを示しています。
前提条件
次の前提条件を必ず満たしてください。
サポートされている IdP については、次を参照してください。 Amazon EMR Studio の AWS シングルサインオンを有効にする.
Bashスクリプト
スクリプトは、 GitHubの.
前提条件
スクリプトでは以下を使用する必要があります AWS クラウド9。の指示に従ってください。 Amazon EKS ワークショップ。次の指示に注意深く従ってください。
AWS Cloud9 デスクトップをデプロイしたら、次のステップに進みます。
準備
次のコードを使用して GitHub リポジトリのクローンを作成し、AWS Cloud9 の前提条件を準備します。
スタックをデプロイします
スクリプトを実行する前に、次の情報を指定します。
- AWS アカウント ID とリージョン (AWS Cloud9 デスクトップが EKS に EMR をデプロイするのと同じアカウント ID またはリージョンにない場合)
- の名前 Amazon シンプル ストレージ サービス 作成する (Amazon S3) バケット
- EMR Studio セッションに関連付けられる AWS SSO ユーザー
スクリプトがスタックをデプロイすると、デプロイされた EMR Studio への URL が表示されます。
AWS CDK スクリプト
AWS CDK スクリプトは次から入手できます。 GitHubの。チェックアウトする必要があります main
支店。スタックは、プライベートサブネットを持つ新しい VPC の EKS 仮想クラスターに Amazon EKS クラスターと EMR をデプロイし、オプションで アマゾンマネージドアパッチエアフロー (Amazon MWAA) 環境と EMR Studio。
前提条件
AWS CDK バージョン 1.90.1 以降が必要です。詳細については、「」を参照してください。 AWSCDKの使用を開始する.
当社はプレフィックス リストを使用して、一部のリソースへのアクセスを、お客様が承認したネットワーク IP 範囲に制限します。を作成します プレフィックスリスト まだ持っていない場合。
EMR Studio を使用する予定がある場合は、AWS SSO が必要です アカウントで設定されている.
準備
リポジトリのクローンを作成し、チェックアウトした後、 main
ブランチして、新しい Python 仮想環境を作成してアクティブ化します。
次に、Python の依存関係をインストールします。
最後に、AWS CDK をブートストラップします。
スタックをデプロイする
次のコードを使用して AWS CDK スタックを合成します。
このコマンドは 4 つのスタックを生成します。
- emr-eks-cdk – メインスタック
- mwaa-cdk – Amazon MWAA を追加します
- スタジオ-cdk – EMR Studio の前提条件を追加
- studio-cdk-ライブ – EMRスタジオを追加
次の図は、AWS CDK スタックによってデプロイされたリソースを示しています。
最初のスタックをデプロイすることから始めます。
Apache Airflow をオーケストレーターとして使用する場合は、そのスタックをデプロイします。
最初の EMR Studio スタックをデプロイします。
管理対象エンドポイントがアクティブになるまで待ちます。次のコードを実行してステータスを確認できます。
仮想クラスター ID は、emr-eks-cdk スタックからの AWS CDK 出力で入手できます。
エンドポイントがアクティブになったら、2 番目の EMR Studio スタックをデプロイします。
手動展開
EKS および EMR Studio に EMR を手動でデプロイする場合は、このセクションの手順を使用してください。
VPC をセットアップする
Amazon EKS v. 1.18 を使用している場合は、プライベート サブネットも持ち、外部ロードバランサー用に適切にタグ付けされた VPC をセットアップします。タグ付けについては、以下を参照してください。 Amazon EKS でのアプリケーションのロードバランシング & EMR Studio サービス ロールを作成する.
AmazonEKSクラスターを作成する
少なくとも 1 つの管理対象ノードグループを含む Amazon EKS クラスターを起動します。手順については、を参照してください。 セットアップ & Amazon EKS の使用開始.
関連する IAM ポリシー、ロール、IdP、および SSL/TLS 証明書を作成する
IAM ポリシー、ロール、IdP、および SSL/TLS 証明書を作成するには、次の手順を実行します。
- EKS で EMR のクラスター アクセスを有効にする.
- EKS OIDC プロバイダー URL に基づいて IAM で IdP を作成する.
- SSL/TLS 証明書を作成して、 AWS証明書マネージャー.
- 関連する IAM ポリシーとロールを作成します。
- ジョブ実行の役割
- 信頼ポリシーを更新する ジョブ実行ロールの場合
- AWS Load Balancer Controller の IAM ポリシーをデプロイおよび作成する
- EMR Studio サービスの役割
- EMR Studio ユーザーの役割
- EMR Studio ユーザー ポリシー AWS SSO ユーザーおよびグループに関連付けられている
- AmazonEKSクラスターをAmazonEMRに登録します 仮想EMRクラスターを作成するには
- 適切なを作成します セキュリティグループ 作成された各 EMR Studio に添付されるもの:
- ワークスペースセキュリティグループ
- エンジンセキュリティグループ
- セキュリティ グループに適切なタグを付けます。手順については、を参照してください。 EMR Studio サービス ロールを作成する.
Amazon EKS に必要なインストール
を展開します AWS ロードバランサーコントローラー まだ行っていない場合は、Amazon EKS クラスターに追加します。
EKS 関連部分に EMR を作成し、ユーザーを EMR Studio にマッピングする
次の手順を完了します。
- Amazon EKS クラスターに関連付けられた EMR 仮想クラスターを少なくとも 1 つ作成します。手順については、次の手順 XNUMX を参照してください。 EMR Studio 用に EKS で Amazon EMR をセットアップする.
- 少なくとも 2 つの管理対象エンドポイントを作成します。手順については、次の手順 XNUMX を参照してください。 EMR Studio 用に EKS で Amazon EMR をセットアップする.
- 少なくとも 1 つの EMR Studio を作成します。 EMR Studio を、Amazon EKS クラスターで構成されたプライベートサブネットに関連付けます。手順については、を参照してください。 EMRスタジオを作成する.
- EMR Studio が利用可能になると、 AWS SSO ユーザーまたはグループを EMR Studio にマッピングする そして、そのユーザーに適切な IAM ポリシーを適用します。
EMRスタジオを使用する
EMR Studio の使用を開始するには、次の手順を実行します。
- リージョン内のスタジオごとに EMR スタジオの URL を見つけます。
- リストされた URL で、前に使用した AWS SSO ユーザー名を使用してログインします。
認証後、ユーザーは EMR Studio ダッシュボードにルーティングされます。
- 選択する ワークスペースを作成する.
- ワークスペース名、名前を入力します。
- サブネット、管理対象ノード グループに関連付けられたサブネットの 1 つに対応するサブネットを選択します。
- S3の場所、ノートブックのコンテンツを保存できる S3 バケットを入力します。
- ワークスペースを作成したら、
Ready
状態。
- サイドバーで、EMR クラスター アイコンを選択します。
- クラスタータイプ¸選ぶ EKS上のEMRクラスター.
- 使用可能な仮想クラスターと使用可能な管理対象エンドポイントを選択します。
- 選択する 添付する.
アタッチ後、EMR Studio には、使用可能なカーネルが表示されます。 ノート & 領事 のセクションから無料でダウンロードできます。
- 選択する PySpark (Kubernetes) ノートブック カーネルを起動し、Spark セッションを開始します。
ここのエンドポイント設定ではメタストアに AWS Glue を使用しているため、AWS Glue データ カタログに接続されているデータベースとテーブルを一覧表示できます。次のサンプル スクリプトを使用して、セットアップをテストできます。データ カタログにある適切なデータベースとテーブルに合わせて、必要に応じてスクリプトを変更します。
クリーンアップ
今後の料金発生を回避するには、remove_setup.sh を実行して、ここで起動したリソースを削除します。
まとめ
EKS 上の EMR を使用すると、インフラストラクチャをプロビジョニングすることなく、Amazon EKS クラスター内のリソースの共通プールでアプリケーションを実行できます。 EMR Studio は、Amazon EKS 上の仮想クラスターを含む EMR クラスター上で実行されるカーネルをプロビジョニングする、フルマネージドの Jupyter ノートブックおよびツールです。この投稿では、EMR Studio が EKS 上の EMR に接続する方法のアーキテクチャについて説明し、2 つのサービスを接続するためのすべてのコンポーネントを自動的にデプロイするためのスクリプトを提供しました。
ご質問やご提案がございましたら、コメントを残してください。
著者について
ランディ・デフォー アマゾン ウェブ サービスのプリンシパル ソリューション アーキテクトです。彼は AWS の顧客と協力してデータベース プロジェクトに関するガイダンスと技術支援を提供し、顧客が AWS を使用する際のソリューションの価値を向上できるよう支援しています。
マシュータン アマゾンウェブサービスのシニアアナリティクスソリューションアーキテクトであり、アナリティクスワークロードでAWSアナリティクスサービスを使用してソリューションを開発しているお客様にガイダンスを提供します。
- '
- "
- 100
- 7
- 9
- アクセス
- アクティブ
- すべて
- 配分
- Amazon
- Amazon Webサービス
- 分析論
- アパッチ
- 申し込み
- 建築
- 認証
- AWS
- スイング
- ビルド
- 例
- 証明書
- 課金
- 注文
- 分類
- クラウド
- コード
- コマンドと
- 計算
- コンテンツ
- 続ける
- コントローラ
- 作成
- Credentials
- Customers
- ダッシュボード
- データ
- データベース
- データベースを追加しました
- 開発する
- 開発
- ドライバー
- エンドポイント
- Enterprise
- 環境
- 実行
- 体験
- 工場
- 名
- 正面
- 未来
- Gitの
- GitHubの
- グループ
- Hadoopの
- こちら
- ハイブ
- 認定条件
- HTTPS
- IAM
- ICON
- アイデンティティ
- 含めて
- 情報
- インフラ
- IP
- IT
- ジョブ
- ジュピターノート
- Kubernetes
- 起動する
- 起動
- LINE
- リスト
- 負荷
- 管理
- 地図
- ゲレンデマップ
- ネットワーク
- ノートPC
- オプション
- その他
- 物理的な
- ポッド
- ポリシー
- 方針
- プール
- プレビュー
- 校長
- プライベート
- プロジェクト(実績作品)
- Python
- 要件
- リソースを追加する。
- リソース
- ラン
- ランニング
- セキュリティ
- サービス
- セッションに
- 簡単な拡張で
- So
- ソリューション
- SQL
- start
- 開始
- 都道府県
- Status:
- ストレージ利用料
- 店舗
- サポート
- ターゲット
- 技術的
- test
- 時間
- トラフィック
- 信頼
- users
- 値
- バーチャル
- ウェブ
- Webサービス
- 以内
- 言葉
- 仕事
- 作品