Apache Spark は、ビッグデータのワークロードを処理するために一般的に使用されているオープンソースの分散処理システムです。Apache Spark では、高速パフォーマンス向けにメモリキャッシングと最適化がなされた実行方法が使用され、一般的なバッチ処理、ストリーミング分析、機械学習、グラフデータベース、アドホッククエリなどがサポートされています。
Hadoop YARN の Apache Spark が Amazon EMR でネイティブにサポートされており、AWS マネジメントコンソール、AWS CLI または Amazon EMR API から簡単かつ迅速にマネージド型の Apache Spark クラスターを作成できます。さらに、Amazon EMR File System (EMRFS) を使用した Amazon S3 との接続、Amazon EC2 スポットマーケットとの統合、クラスターのインスタンスを簡単に追加または削除するサイズ再設定コマンドといった Amazon EMR の他の機能も活用できます。また、Apache Zeppelin を使用して、インタラクティブなコラボレーション型ノートブックを作成し、Apache Spark でデータ調査を行うこともできます。
Will Spark Power the Data behind Precision Medicine?
Analyze Your Data on Amazon DynamoDB with Apache Spark
Optimize Spark-Streaming to Efficiently Process Amazon Kinesis Streams
Submitting User Applications with spark-submit
Querying Amazon Kinesis Streams Directly with SQL & Spark Streaming
Running an External Zeppelin Instance using S3 Backed Notebooks with Spark on Amazon EMR
Directed Acyclic Graph (DAG) 実行エンジンを使用することにより、Apache Spark ではデータ変換用の効率的なクエリプランが可能になっています。また、Apache Spark では、入力、出力、および中間データのインメモリデータが Resilient Distributed Dataset (RDD) として保存されるため、I/O コストをかけずに高速処理が可能となり、反復ワークロードやインタラクティブなワークロードのパフォーマンスが向上します。
Apache Spark では Java、Scala および Python がネイティブサポートされ、アプリケーションの構築にさまざまな言語を使用できます。また、Spark SQL モジュールを使用して、SQL または HiveQL クエリを Apache Spark に送信できます。アプリケーションの実行に加えて、クラスターの Apache Spark シェルから Python または Scala を直接使用して、Apache Spark API をインタラクティブに使用することもできます。データの調査と可視化のために、Zeppelin を使用してインタラクティブなコラボレーション型ノートブックを作成することも可能です。
Apache Spark には、機械学習 (MLlib)、ストリーム処理 (Spark Streaming) およびグラフ処理 (GraphX) 向けアプリケーション構築に役立つライブラリが含まれています。これらのライブラリは Apache Spark エコシステムと緊密に統合されており、さまざまなユースケースに合わせてそのまますぐに活用することができます。
ワークロードに応じて、Amazon EMR Step API による Apache Spark ジョブの送信、Apache Spark と EMRFS を併用した Amazon S3 データへの直接アクセス、Amazon EC2 スポットキャパシティーを利用したコスト節減、長期使用のクラスターや一時的なクラスターの作成が行えます。Amazon EMR では Hadoop YARN に Apache Spark をインストールして管理します。Hadoop エコシステムの他のアプリケーションもクラスターに追加できます。Amazon EMR の特徴の詳細についてはここをクリックしてください。
Intent Media
Intent Media は、旅行販売サイトの広告向けプラットフォームを運営しています。データチームは Amazon EMR で Apache Spark と MLlib を使用して、テラバイト単位の e コマースデータを毎日取り込み、その情報を活用して判定サービスを強化し、顧客収入を最適化しています。詳細については、ここをクリックしてください。
Krux
Krux では、顧客インサイトのデータ管理プラットフォームの一部として、多数の機械学習ワークロードと一般処理ワークロードを Apache Spark を使用して実行させています。Krux では Amazon EC2 スポットキャパシティーを利用した一時的な Amazon EMR クラスターを活用することでコストを節減し、EMRFS によって Amazon S3 を Apache Spark のデータレイヤーとして使用しています。
GumGum
画像内および画面内広告のプラットフォームである GumGum では、Amazon EMR の Spark を在庫予測、クリックストリームログの処理、Amazon S3 の非構造化データのアドホック分析に利用しています。Spark によりパフォーマンスが強化されることで、GumGum ではワークフローにかかる時間と費用を節約できています。
CrowdStrike
CrowdStrike は、侵害対策のエンドポイント保護を提供しています。Amazon EMR と Spark を使用することで、数百テラバイトものイベントデータを処理し、ホストでより高レベルな動作記述にまとめています。CrowdStrike では、そのデータからイベントデータについてまとめ、悪意のあるアクティビティの存在を判定することができています。
Amazon Kinesis、Apache Kafka またはその他のデータストリームからのリアルタイムデータを、Amazon EMR で Spark Streaming を使用して取り込み、処理します。ストリーミング分析を耐障害性のある方法で実行し、結果を Amazon S3 やクラスターの HDFS に書き込みます。
- Apache Spark を使用する Amazon EMR クラスターの作成手順
- Spark プロジェクトについての詳細情報 (Spark プロジェクトについての Apache Software Foundation のウェブサイト)
- Amazon EMR の Spark 起動についての記事およびデモ (AWS ブログ)
- Amazon EMR で Apache Spark を使用した機械学習についての Intent Media によるゲスト投稿記事 (AWS ビッグデータブログ)