Apache Spark とは

Apache Spark は、SQL、ストリーミング、機械学習、グラフ処理用の組み込みモジュールを備えた大規模なデータ処理のための統合分析エンジンです。Spark は、Apache Hadoop、Kubernetes、クラウド上で単独で実行でき、さまざまなデータソースに対して実行できます。Java、Scala、Python、R 向けに豊富な API を提供しているため、幅広いデベロッパーやデータ サイエンティストが利用できます。また、Python API である PySpark は、データ操作用の Pandas などの一般的なライブラリとも緊密に統合されています。Google Cloud では、サーバーレス オプション、Lightning Engine などの画期的なパフォーマンス強化、統合されたデータと AI プラットフォームへの緊密な統合により、Apache Spark はさらに高い次元へと進化しています。

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

Google Cloud が、よりシンプルで統合的かつ費用対効果の高い方法で Apache Spark ワークロードを実行できるようにする仕組みをご紹介します。Apache Spark 用 Google Cloud Serverless を活用してゼロオペレーションの開発を行うことも、Dataproc を使用してマネージド Spark クラスタを作成することもできます。

Apache Spark の概要

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

  • Spark Core は、汎用の分散データ処理エンジンです。基盤となる実行エンジンとして、分散タスクの割り当てやスケジューリング、基本的な I/O 処理を管理します。Spark Core は、Resilient Distributed Datasets(RDD)という概念を導入しました。RDD は、耐障害性で並列処理できるオブジェクトの不変的な分散コレクションです。その上に、SQL、ストリーム処理、ML、グラフ計算用のライブラリがあります。これらはすべて、1 つのアプリケーション内で併用できます。


  • Spark SQL は、構造化データを扱うための Spark モジュールです。DataFrames を導入しており、構造化データ操作のために RDD よりも最適化され、デベロッパー指向の API を提供します。これにより、SQL や使い慣れた DataFrame API を使用して、Spark プログラム内の構造化データをクエリできます。Spark SQL は HiveQL 構文をサポートし、既存の Apache Hive ウェアハウスへのアクセスを可能にします。Google Cloud は、Lightning Engine などのイノベーションにより、特に SQL と DataFrame のオペレーションで Spark ジョブのパフォーマンスをさらに加速させます。Google Cloud で Spark を実行する際に、クエリやデータ処理タスクが大幅に高速化できます。


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


  • MLlib 実用的な ML をスケーラブルで簡単にするツールを備えた、Spark のスケーラブルな機械学習ライブラリです。MLlib には、分類、回帰、レコメンデーション、クラスタリングなど、数多くの一般的な学習アルゴリズムが含まれています。また、ワークフローに加え、特長変換、ML パイプライン構築、モデル評価、分散線形代数、統計などのユーティリティも含まれています。Google Cloud の Vertex AI と組み合わせることで、Spark MLlib ワークフローを MLOps パイプラインにシームレスに統合でき、コーディングとトラブルシューティングに Gemini を活用して開発作業を効率化できます。


  • GraphX は、グラフおよびグラフ並列計算用の Spark API です。柔軟性があり、グラフとコレクションの両方をシームレスに扱うことができます。抽出、変換、読み込み、探索的分析、反復グラフ計算を 1 つのシステム内に統合させることができます。

これらのコンポーネント全体で、Google Cloud は最適化された環境を提供します。たとえば、Lightning Engine は Spark と DataFrame のパフォーマンスを向上させ、Apache Spark 用 Google Cloud Serverless はデプロイと管理を簡素化します。また、Gemini BigQuery StudioVertex AI Workbench などのノートブック環境でデベロッパーの生産性を高めます。

Apache Spark の仕組み

Apache Spark の強みは、次のいくつかの主要なアーキテクチャ原則に由来しています。

  • インメモリ処理: Spark はデータをメモリに読み込むため、ディスクベースのシステムと比較して、反復アルゴリズムとインタラクティブなクエリが大幅に高速化されます。
  • 分散実行: マシンのクラスタ上で動作します。ドライバ プログラムは、異なるデータ パーティションでタスクを並行して実行するエグゼキュータ(ワーカー プロセス)を調整します。
  • RDD と DataFrame: 耐障害性分散データセット(RDD)は、基本的なフォールト トレラント データ抽象化です。RDD 上に構築された DataFrame は、構造化データ向けのより豊富なスキーマ対応 API を提供し、Catalyst オプティマイザーによる最適化を可能にします。
  • 遅延評価と DAG: Spark は、有向非巡回グラフ(DAG)のオペレーションを構築します。変換は「遅延」型(すぐに計算されない)であるため、Spark は「アクション」が実行をトリガーする前にワークフロー全体を最適化できます。

Apache Spark のメリット

スピード

Spark のインメモリ処理と DAG スケジューラにより、特に反復タスクでは、Hadoop MapReduce よりも高速なワークロード処理が可能になります。Google Cloud は、最適化されたインフラストラクチャと Lightning Engine により、さらに処理速度を向上させます。

使いやすさ

Spark の高レベルの演算子により、並列アプリの構築が簡単になります。Scala、Python、R、SQL を使用したインタラクティブな操作で、迅速な開発が可能です。また、Google Cloud では、サーバーレス オプションや Gemini と統合されたノートブックも利用できます。



スケーラビリティ

Spark は水平方向の拡張性を提供し、クラスタノード間で作業を分散することで膨大なデータを処理します。Google Cloud は、サーバーレスの自動スケーリングと柔軟な Dataproc クラスタによりスケーリングを簡素化します。

一般性

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

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

Spark は、オープンソース コミュニティの力を活用して迅速なイノベーションと問題解決を実現します。Google Cloud はこのオープンな精神を尊重し、標準的な Apache Spark を提供しながら、その機能を強化しています。

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

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

Apache Impala、Apache Hive、Apache Drill などの SQL 専用エンジンでは、ユーザーは複数のデータベースに保存されているデータをクエリするために SQL または SQL に似た言語のみを使用できます。これは、フレームワークが Spark と比較して小さいことを意味します。 しかし、Google Cloud では、厳密な選択をする必要はありません。BigQuery は強力な SQL 機能を備えており、Apache Spark 用の Google Cloud Serverless と Spark および Hadoop のマネージド サービス用の Dataproc により、Spark の多様性を活用できます。多くの場合、BigLake Metastore とオープン形式を通じて、同じデータで活用できます。

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

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

  • 大規模な ETL/ELT
  • リアルタイム データ処理
  • 機械学習
  • インタラクティブなデータ探索
  • グラフ分析

データ エンジニア

データ エンジニアは、拡張された言語セットでプログラミングするオプションを使用し、Spark を使用してコーディングとデータ処理ジョブの構築を行います。Google Cloud では、データ エンジニアは、ゼロオペレーションの ETL/ELT パイプラインのために Google Cloud Serverless for Apache Spark を活用したり、マネージド クラスタの制御のために Dataproc を使用したりできます。これらはすべて、ガバナンスのために BigQuery や Dataplex Universal Catalog などのサービスと統合されています。

データ サイエンティスト

データ サイエンティストは、GPU で Spark を使用して分析や ML のより豊かな体験を実現できます。使い慣れた言語で大量のデータをより高速に処理できるため、イノベーションの加速に貢献します。 Google Cloud は、Spark の堅牢な GPU サポートと Vertex AI とのシームレスな統合を提供し、データ サイエンティストがモデルをより迅速に構築してデプロイできるようにします。BigQuery Studio、Vertex AI Workbench などのさまざまなノートブック環境を活用したり、Jupyter や VS Code などの好みの IDE を接続したりできます。この柔軟な開発エクスペリエンスと Gemini を組み合わせることで、当初のプロトタイピングから本番環境へのデプロイまで、ワークフローを加速できます。

Google Cloud 上で Spark をより効率的に活用する方法

Google Cloud は、Spark を大規模に実行する際の一般的な課題を解消し、インフラストラクチャではなく分析情報に集中できるようにします。

さらに簡単

プロビジョニングとスケーリングを自動化するフルマネージドの DataprocApache Spark 向け Serverless オプションにより、運用上の負担と「チューニング税」を排除します。

 よりスマートに

Gemini の力を活用して、開発からデプロイ、モニタリング、トラブルシューティングまで、Spark デベロッパーのライフサイクル全体を支援します。すべてを、レイクハウス対応の統合データ プラットフォーム内で実現できます。

速い

手動チューニング不要で Spark ジョブを高速化する次世代エンジン、Lightning Engine により、業界トップクラスの Spark パフォーマンスと費用削減を実現します。

次のステップ

$300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して、Google Cloud で構築を開始しましょう。

  • Google Cloud プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud