Amazon EMR の Apache Spark

EMR での Apache Spark を使用すべき理由

Amazon EMR は Apache Spark を実行するのに最適です。AWS マネジメントコンソール、AWS CLI、または Amazon EMR API 使用すると、Spark マネージドクラスターをすばやく簡単に作成できます。さらに、Amazon EMR File System (EMRFS) を使用した Amazon S3 との高速接続、Amazon EC2 スポットマーケットおよび AWS Glue データカタログとの統合、EMR Managed Scaling によるクラスターへのインスタンスの追加と削除など、Amazon EMR の他の機能も活用できます。 AWS Lake Formation はきめ細かなアクセスコントロールを可能にし、AWS Step Functions との統合はデータパイプラインのオーケストレーションに役立ちます。 EMR Studio (プレビュー) は、R、Python、Scala、PySpark で記述されたデータエンジニアリングやデータサイエンスのアプリケーションを、データサイエンティストとデータエンジニアが簡単に開発、視覚化、デバッグできるようにする統合開発環境 (IDE) です。EMR Studio は、完全管理型の Jupyter Notebook と、デバッグを簡素化する Spark UI や YARN Timeline Service などのツールを提供します。 EMR Notebooks を使用することで、Spark を使用したアプリケーションを簡単に実験および構築できます。また、Apache Zeppelin で Spark を使用して、インタラクティブかつ共同作業が可能なノートブックを作成してデータ探索を行うことができます。

Apache Spark の詳細については、こちらをご覧ください

特徴と利点

EMR では、Apache Spark 用 Amazon EMR ランタイムも使用できます。これは、Apache Spark のためのパフォーマンス最適化ランタイム環境であり、Amazon EMR クラスターでデフォルトでアクティブになっています。ApacheSpark の Amazon EMR ランタイムは、EMR ランタイムのないクラスターよりも 3 倍以上速く、標準の Apache Spark と 100% の API 互換性があります。こうしたパフォーマンスの向上により、アプリケーションに変更を加えることなく、ワークロードを高速に実行し、計算コストを節約できます。

有向非巡回グラフ (DAG) 実行エンジンを使用することで、Spark はデータ変換のための効率的なクエリプランを作成できます。また、Spark は、入力、出力、中間データを回復力のあるデータフレームとしてメモリ内に保存し、I/O コストをかけずに高速な処理を可能にし、反復処理やインタラクティブなワークロードのパフォーマンスを向上させます。

Apache Spark では Java、Scala、SQL、Python がネイティブサポートされているため、アプリケーションの構築にさまざまな言語を使用できます。また、Spark SQL モジュールを使用して、SQL または HiveQL クエリを送信できます。アプリケーションを実行するだけでなく、Spark シェル内で直接、または EMR Studio やクラスター上の Jupyter Notebook を介して、Python または Scala を使用して Spark API をインタラクティブに使用できます。EMR 6.0 における Apache Hadoop 3.0 のサポートにより、Docker コンテナのサポートが導入され、依存関係の管理が簡素化されます。クラスターに依拠しない EMR Notebooks (Jupyter ベース) や、Zeppelin を活用して、インタラクティブで共同作業が可能なノートブックを作成してデータの探索とビジュアライゼーションを行うこともできます。クラスターから独立した、永続的な Spark 履歴サーバーを持つ EMR コンソールで、ワークロードをチューニングおよびデバッグできます。

Apache Spark には、機械学習 (MLlib)、ストリーム処理 (Spark Streaming)、グラフ処理 (GraphX) のためのアプリケーションを構築するのに役立つライブラリがいくつか含まれています。これらのライブラリは Spark エコシステムと緊密に統合されており、さまざまなユースケースに合わせてすぐに活用できます。加えて、Apache MXNet などの深層学習フレームワークを Spark アプリケーションで使用できます。AWS Step Functions との統合により、サーバーレスワークフローのオートメーションとオーケストレーションをアプリケーションに追加できます。

EMR Step API を使用して Apache Spark ジョブを送信して、EMRFS で Spark を使用して S3 のデータに直接アクセスするとともに、EC2 スポットキャパシティを使用してコストを削減し、EMR Managed Scaling を使用してキャパシティを動的に追加および削除して、ワークロードに合わせて長期実行クラスターまたは一時的なクラスターを起動します。EMR のセキュリティ設定を使用すると、Spark 暗号化と Kerberos による認証を簡単に設定できます。さらに、AWS Glue データカタログを使用して Spark SQL テーブルのメタデータを保存したり、Amazon SageMaker を Spark 機械学習パイプラインで使用したりもできます。EMR は Hadoop YARN 上に Spark をインストールして管理します。ユーザーは、クラスター上に他のビッグデータアプリケーションを追加することもできます。EMR with Apache Hudi を使用すると、変更データキャプチャ (CDC) をより効率的に管理するのに役立つほか、レコードの削除を簡素化することで GDPR や CCPA などのプライバシー規制に対応するのにも役立ちます。EMR の特徴の詳細については、こちらをクリックしてください。

ユースケース

Amazon KinesisApache Kafka、または他のデータストリームからのリアルタイムデータを、EMR での Spark Streaming を使用して利用および処理します。ストリーミング分析を耐障害性のある方法で実行し、結果を S3 やクラスター上の HDFS に書き込みます。

EMR での Apache Spark には、多くのスケーラブルな機械学習アルゴリズムに対応する MLlib が含まれています。また、独自のライブラリを使用することも可能です。ジョブの間はデータセットをインメモリに保存することで、機械学習のワークロードにおいて共通して繰り返されるクエリに対して Spark は優れたパフォーマンスを発揮します。簡単なトレーニングモデルおよびホスティングモデル用の Amazon SageMaker Spark を使用して、Apache Spark クラスターにノートブックインスタンスを接続することで、Amazon SageMaker の機能を強化できます。

Spark SQL を使用して、SQL や HiveQL を使用した低レイテンシーのインタラクティブなクエリを実行できます。EMR での Spark は EMRFS を使用できるため、ユーザーは Amazon S3 内のデータセットへのアドホックアクセスを行えます。また、ODBC および JDBC 接続から EMR Studio、EMR Notebooks、Zeppelin notebooks、BI ツールを利用できます。

お客様事例

  • Yelp

    Yelp の広告ターゲティングチームは、ある広告に対するユーザー操作の可能性を判定する予測モデルを作成しています。Amazon EMR での Apache Spark を使用して大量のデータを処理し、機械学習モデルを鍛えることで、Yelp では収入と広告のクリックスルー率を向上させました。

  • The Washington Post

    Washington Post では、Amazon EMR で Apache Spark を使用して、ウェブサイトの推奨エンジンを強化するモデルを構築し、読者のエンゲージメントと満足度を高めることができました。Amazon EMR と Amazon S3 との高性能接続を活用することで、モデルはほぼリアルタイムで更新されます。

  • Krux

    Krux では、顧客インサイトのデータ管理プラットフォームの一部として、多数の機械学習ワークロードと一般処理ワークロードを Apache Spark を使用して実行しています。Krux では Amazon EC2 スポットキャパシティーを利用した一時的な Amazon EMR クラスターを活用することでコストを節減し、EMRFS によって Amazon S3 を Apache Spark のデータレイヤーとして使用しています。

    続きを読む »
  • GumGum

    画像内および画面内広告のプラットフォームである GumGum では、在庫予測、クリックストリームログの処理、Amazon S3 の非構造化データのアドホック分析に Amazon EMR の Spark を使用しています。Spark によりパフォーマンスが強化されることで、GumGum ではワークフローにかかる時間と費用を節約できています。

    続きを読む »
  • Hearst Corporation

    多種多様なメディアや情報を扱う大企業である Hearst Corporation では、200 を超えるウェブプロパティのコンテンツを閲覧する顧客が存在します。Amazon EMR で Apache Spark Streaming を使用することで、Hearst の編集スタッフは、どの記事がよい成績を上げ、どのテーマがトレンドになっているのか、リアルタイムの動きを把握できています。

    続きを読む »
  • CrowdStrike

    CrowdStrike は、侵害対策のエンドポイント保護を提供しています。Amazon EMR と Spark を使用することで、数百テラバイトものイベントデータを処理し、ホストでより高レベルな動作記述にまとめています。CrowdStrike では、そのデータからイベントデータについてまとめ、悪意のあるアクティビティの存在を判定することができています。

    続きを読む »