Apache Spark とは

Apache Spark は、SQL、ストリーミング、機械学習、グラフ処理用の組み込みモジュールを備えた大規模なデータ処理のための統合分析エンジンです。Spark は、Apache Hadoop、Apache Mesos、Kubernetes で実行できます。単独でもクラウドでも実行可能であり、さまざまなデータソースに対して実行できます。

よくある質問として、Apache Spark と Apache Hadoop それぞれの使いどころに関するものがあります。これらは両方とも、今日の市場で特に有名な分散システムであり、ともに Apache トップレベル プロジェクトです。両システムには類似性があり、併用されるケースも少なくありません。Hadoop は、主に MapReduce パラダイムを使用したディスクを大量に使用するオペレーションに使用されます。Spark はより柔軟な、(多くの場合)より費用のかかるインメモリ処理アーキテクチャです。両者の機能を理解すれば、両者の使いどころを決定できるようになります。

Dataproc を使用して Google Cloud 上で Apache Spark クラスタを、シンプルで統合され、費用対効果に優れた方法で実行する使い方について学びましょう。

Apache Spark の概要

Spark のエコシステムには、次の 5 つの主要コンポーネントがあります。

1. Spark Core: 汎用の分散データ処理エンジンです。この上に、SQL、ストリーム処理、機械学習、グラフ計算用のライブラリがあります。これらはすべて、1 つのアプリケーション内で併用できます。Spark Core はプロジェクト全体の基盤であり、分散タスクのディスパッチ機能、スケジューリング機能、基本的な I/O 機能を提供します。

2. Spark SQL: さまざまなデータソースに共通の手法でアクセスできる、構造化データを操作するための Spark モジュールです。SQL や使い慣れた DataFrame API を使用して、Spark プログラム内の構造化データをクエリできます。Spark SQL は HiveQL 構文をサポートし、既存の Apache Hive ウェアハウスへのアクセスを可能にします。サーバーモードにより、Java データベース接続またはオープン データベース接続を介した標準接続が提供されます。

3. Spark Streaming: スケーラブルでフォールトトレラントなストリーミング ソリューションを簡単に構築できるようになります。各言語に統合されたストリーム処理 API により、バッチジョブと同じ方法を使ったストリーミング ジョブを作成できます。Spark Streaming は、Java、Scala、Python に対応しており、ステートフルで正確に 1 回限りの処理を行う(exactly-once)セマンティクスをすぐに利用できます。

4. MLlib: 実用的な ML をスケーラブルで簡単にするツールを備えた、Spark のスケーラブルな機械学習ライブラリです。MLlib には、分類、回帰、レコメンデーション、クラスタリングなど、数多くの一般的な学習アルゴリズムが含まれています。また、ワークフローに加え、特徴変換、ML パイプライン構築、モデル評価、分散線形代数、統計などのユーティリティも含まれています。

5. GraphX: グラフおよびグラフ並列計算用の Spark API です。柔軟性があり、グラフとコレクションの両方をシームレスに扱うことができます。抽出、変換、読み込み、探索的分析、反復グラフ計算を 1 つのシステム内に統合させることができます。GraphX にはきわめて柔軟な API に加え、さまざまなグラフ アルゴリズムが備わっています。Spark の柔軟性、フォールト トレラント、使いやすさを維持するとともに、最速のグラフシステムでパフォーマンスの競争力を維持できます。

Apache Spark のメリット

速度

Hadoop MapReduce よりも 100 倍高速にワークロードを実行できます。Spark であれば、最先端の有向非巡回グラフ スケジューラ、クエリ オプティマイザ、物理実行エンジンを使用して、バッチデータとストリーミング データの両方で高いパフォーマンスを実現できます。

使いやすさ

Spark では、並列アプリの構築を容易にする 80 を超える高レベルの演算子が用意されています。Scala、Python、R、SQL シェルから演算子をインタラクティブに使用して、アプリケーションを迅速に構築できます。

一般性

Spark を基盤として、SQL と DataFrame、機械学習用の MLlib、GraphX、Spark Streaming などのライブラリのスタックが構築されています。これらのライブラリは、同じアプリケーションでシームレスに組み合わせることが可能です。

オープンソース フレームワークのイノベーション

Spark はグローバルなコミュニティを基盤としており、新しいコンセプトと機能を導入することで、社内チームが独自仕様のソリューションに取り組むよりも、迅速かつ効果的に導入することを目指しています。オープンソース コミュニティの力を結集することで、より多くのアイデア、迅速な開発、問題が発生したときのトラブルシューティングが可能になり、市場投入までの時間を短縮できます。

SQL のみのエンジンではなく Spark を選ぶ理由

Apache Spark は、Hadoop クラスタモードでもスタンドアロン モードでもデプロイできる高速な汎用クラスタ計算エンジンです。Spark を使用すると、プログラマーは Java、Scala、Python、R、SQL でアプリケーションを迅速に作成できるようになります。これにより、デベロッパー、データ サイエンティスト、統計の経験を持つ先進的なビジネスマンが、アプリケーションにアクセスできるようになります。Spark SQL を使用すれば、任意のデータソースに接続し、テーブルとして SQL クライアントに提示できます。また、インタラクティブな機械学習アルゴリズムを Spark に簡単に実装できます。

Apache ImpalaApache HiveApache Drill などの SQL のみのエンジンの場合、複数のデータベースに保存されているデータに対するクエリを SQL や SQL ライクな言語で行うことしかできません。これは、フレームワークが Spark と比較して小さいことを意味します。

企業が Spark をどのように活用しているか

多くの企業が Spark を使用して、構造化データと非構造化データの両方を含む大量のリアルタイム データやアーカイブ データの処理や分析という、困難で計算負荷の高いタスクを簡素化しています。Spark を使用すれば、機械学習やグラフ アルゴリズムなどの関連する複雑な機能をシームレスに統合できます。

データ エンジニア

データ エンジニアは、Spark を使用してデータ処理ジョブのコーディングと構築をすることができます。幅広い言語に対応していることも魅力です。

データ サイエンティスト

データ サイエンティストは、GPU で Spark を使用して分析や ML のより豊かな体験を実現できます。使い慣れた言語で大量のデータをより高速に処理できるため、イノベーションの加速に貢献します。

Dataproc は、Apache Spark クラスタと Apache Hadoop クラスタをシンプルかつ統合され、費用対効果に優れた方法で実行するための、高速で使いやすいフルマネージド クラウド サービスです。重要なセキュリティ、ガバナンス、サポートのニーズを満たす他の Google Cloud サービスと完全に統合されているため、データ処理、分析、機械学習のための完全で強力なプラットフォームを入手できます。

BigQueryAI Platform NotebooksDataflow のような Google Cloud のビッグデータ分析ツールを使用することで、コンテキストリッチなアプリケーションを構築し、新しい分析ソリューションを構築して、データを行動につながるインサイトに変換できます。