4
4

More than 1 year has passed since last update.

Amazon EMR 再入門

Last updated at Posted at 2022-03-09

改めてAmazon EMRを触った際の備忘録

以下のSpark ETLのWorkshop触ってのポイントまとめ
https://emr-etl.workshop.aws/spark_etl/steps.html

対応フレームワーク

Hadoop、Spark、Presto、Hive、Flink などのビッグデータ処理フレームワークやクエリエンジンのほか、TensorFlow、MXNet、Mahout などの機械学習系、Jupyter、Zeppelinなどのノートブックなどなど様々

image.png

EMR クラスタデプロイパターン

オプションは大きく分けて3つ

[1] EMR on EC2

  • 上記豊富なフレームワークから選べる標準的な使い方
  • 基本はマスターノード・コアノード ・タスクノードで構成
  • ノードタイプを固定するUniformインスタンスグループと、スポットインスタンスを組み合わせてコスト最適化戦略が組めるインスタンスフリートから選択

[2] EMR on EKS

[3] EMR Serverless

インタラクティブ操作用インターフェース

※ EMR on EC2 の Spark編

オプションは大きく分けて4つ

[1] Terminal

  • ターミナルでEMRマスターにSSH接続して利用(Cloud9など)

[2] JupyterHub/Zeppelin Notebook

  • EMRにオプションでセットアップするもの
  • JupyterHubの場合はhttps://[マスターパブリックDNS]:9443でアクセス
  • デフォルトユーザ名:jovyan、パスワード:jupyter
     

[3] EMRノートブック

  • EMR機能として提供するサーバーレスのJupyterLab環境 (またはJupyterNotebook)
  • EMR ノートブック自体の内容(ノートブックセル内の方程式、クエリ、モデル、コード、ナラティブテキスト)はクライアントで実行され、コマンドは EMR クラスター上のカーネルを使用して実行される
  • 作成済みのEMRクラスターを指定して立ち上げるか、クラスタの作成も可能
  • ターゲットとするEMRクラスタをアタッチデタッチで切り替えられる
  • ノートブックの内容はS3にも保存される
  • 標準的にインタラクティブに利用するならコレ

[4] EMR Studio

  • JupyterLabを中心とする統合開発環境(IDE)
  • Studioの配下にWorkspaceを作る(WorkspaceごとにEMRノートブック(JupyterLab)が自動作成される)
  • 複数のユーザでのコラボレーションと、データサイエンティストやデータエンジニアのワークフローを想定した各種機能をパッケージ化したイメージ
  • SSOにも対応しており、マネコンログインせずに外部ID認証での利用も可能

EMR Studioセットアップメモ)

EMR StudioはSSOを利用せずIAM認証でも利用できる。
他の機能より事前準備が色々必要なため簡単にメモ

EMR Studioに設定するIAM ROLEとIAM User用のポリシー、SecurityGroupなどが必要。
既存のVPCを利用する場合に最低限必要な追加リソースは、下記GitHubのCloufFormationスタックで作成できる。
min_studio_dependencies.yml
https://github.com/aws-samples/emr-studio-samples

なお、ターゲットとするVPCとサブネットには、「for-use-with-amazon-emr-managed-policies = true」タグの設定が必要。(これの設定漏れでハマった)

全体的な流れは以下動画にまとまってある
https://www.youtube.com/watch?v=E8HxMnjz5JI

ジョブの実行

※ Spark編

オプションは大きく分けて2つ

[1] EMR ステップAPI

  • ステップとは、EMRのAPIを利用して送信されるジョブの単位
  • マネコンか、AWS CLI経由で実行できる
  • ステップは基本シーケンシャル実行だが、Concurrency(同時実行数)を2〜256で変更できる
  • あらかじめS3に格納したJarファイル(PySparkの場合はPythonスクリプトファイル)を指定してサブミットする

[2] spark-submit

クラスタの終了

オプションは大きく分けて3つ
※クラスタ保護オプションに注意

[1] マネコンまたはTerminateJobFlows APIで明示的に削除する

[2] クラスタ作成時のパラメータで、指定した稼働時間後にアイドル状態の場合に自動終了するオプションあり

[3] ステップAPIでジョブをサブミットし完了時に自動終了するオプションもある

ログの確認方法

[1] Terminal で実行した場合は標準出力

[2] 各種アプリケーションUI

  • Spark UI

    • Spark history server UI
  • YARN timeline server

    • YARN アプリケーションログ

ジョブ実行のオーケストレーション

主なオプション

  • Apache Oozie(EMRでセットアップ可能)
  • Apache Airflow(MWAAを利用)
  • AWS Step Functions

参考)
https://aws.amazon.com/jp/blogs/news/orchestrate-apache-spark-applications-using-aws-step-functions-and-apache-livy/

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4