Apache Sparkとは

建物の屋上の航空写真

Apache Sparkとは

Apache Sparkは、ビッグデータ最大のオープンソース・コミュニティーによって支援されている、機械学習およびAIアプリケーション用の超高速のオープンソース・データ処理エンジンです。

Apache Spark(Spark)は大規模なデータ・セットを簡単に処理でき、PySparkに適した高速な汎用クラスタリング・システムです。ビッグデータ、特にストリーミング・データ、グラフ・データ、分析機械学習、大規模データ処理、人工知能(AI)アプリケーションに必要な計算速度、拡張性、プログラミング可能性を実現するように設計されています。

Sparkの分析エンジンは、小規模なワークロードでは、Hadoopなどの他の方法よりも10~100倍も高速にデータを処理します。並列処理とフォールト・トレランスが組み込まれており、処理ワークフローをコンピューターの大規模クラスター全体に分散することで拡張できます。Scala、Java、Python、Rなど、データアナリストやデータサイエンティストの間で人気のあるプログラミング言語用のAPIにも対応しています。

SparkはApache Hadoop、特にHadoopのネイティブ・データ処理コンポーネントであるHadoop MapReduceと比較されることがよくあります。SparkとMapReduceの主な違いは、Sparkはディスクへの書き込みやディスクからの読み取りを行わずに、後続のステップのためにデータを処理してメモリー内に保持するため、処理速度が大幅に向上する点です。(SparkとHadoopの間の違いについての詳細は、この記事の他のセクションで説明します。)

Sparkは2009年にカリフォルニア大学バークレー校の AMPLabで開発されました。現在、Apache Software Foundationが管理するSparkには、1,000人を超えるコントリビューターを擁するビッグデータ分野最大のオープンソース・コミュニティーがあります。また、いくつかの商用ビッグデータ製品のコア・コンポーネントとしても含まれることもあります。

ニュースレターを表示しているスマホの画面

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

Apache Sparkの仕組み

Apache Sparkには、階層的なプライマリー/セカンダリー・アーキテクチャーがあります。Spark Driverはセカンダリー・ノードを管理し、アプリケーション・クライアントにデータ結果を提供するクラスター・マネージャーを制御するプライマリー・ノードです。

Spark Driverは、アプリケーション・コードに基づいてSparkContextを生成し、クラスター・マネージャー(Sparkのスタンドアロン・クラスター・マネージャー、またはHadoop YARN、Kubernetes、Mesosなどの他のクラスター・マネージャー)と連携して、ノード間で実行を分散および監視します。また、Sparkの驚異的な処理速度を支えるResilient Distributed Datasets(RDD)も作成します。

耐障害性分散データ・セット(RDD)


耐障害性分散データ・セット(RDD)は、クラスター内の複数のノードに分散して並列処理できる、耐障害性のある要素のコレクションのことです。RDDはApache Sparkの基本構造です。

Sparkは、データ・ソースを参照するか、処理のためにデータをRDDにキャッシュするSparkContext並列化メソッドを使用して既存のコレクションを並列化することにより、データを読み込みます。データがRDDに読み込まれると、Sparkはメモリー内のRDDに対して変換とアクションを実行します。これがSparkの高速処理の鍵となります。また、Sparkは、システムのメモリーが不足するか、ユーザーが永続化のためにデータをディスクに書き込むことを決定しない限り、データをメモリーに保存します。

RDD内の各データセットは論理パーティションに分割され、クラスターの異なるノードで計算できます。また、ユーザーは、トランスフォーメーションとアクションという2種類のRDD操作を実行できます。トランスフォーメーションは、新しいRDDを作成するために適用される操作です。アクションは、Apache Sparkに計算を適用し、結果をドライバーに返すように指示するために使用されます。

Sparkは、RDDでのさまざまなアクションとトランスフォーメーションをサポートします。この分散はSparkによって行われるため、ユーザーは適切な分散の計算について心配する必要はありません。

有向非巡回グラフ(DAG)


MapReduceの2段階の実行プロセスとは対照的に、SparkはDAG(有向非巡回グラフ)を作成してタスクのスケジューリングとクラスタ全体のワーカー・ノードのオーケストレーションを行います。Sparkがタスク実行プロセスで機能してデータを変換するとき、DAGスケジューラーはクラスター全体でワーカー・ノードを調整することで効率を高めます。このタスク追跡は、記録された操作を以前の状態からデータに再適用するため、フォールト・トレランスを可能にします。

DataFrameとDataset

RDDに加えて、SparkはDataFrameとDatasetという他の2つのデータ・タイプを処理します。

DataFrameは最も一般的な構造化アプリケーション・プログラミング・インターフェース(API)で、行と列を含むデータ表を表します。RDDはSparkにとって重要な機能ですが、現在はメンテナンス・モードになっています。Sparkの機械学習ライブラリー(MLlib)の人気により、DataFrameはMLlib(拡張性を実現する機械学習アルゴリズムのセットと、機能の選択とMLパイプラインの構築のためのツール)のプライマリーAPIとして主導的な役割を果たしてきました。DataFrameはScala、Java、Python、Rなどのさまざまな言語間で統一性を提供するため、MLlib APIを使用する場合はこれに注意することが重要です。

Datasetは、タイプセーフなオブジェクト指向プログラミング・インターフェースを提供するDataFrameの拡張機能です。Datasetは、デフォルトでは、DataFrameとは異なり、厳密にタイプ指定された一連のJVMオブジェクトです。

Spark SQLを使用すると、DataFrameやApache HiveなどのSQLデータ・ストアからデータをクエリーできるようになります。Spark SQL Queryは、別の言語内で実行されるとDataFrameまたはDatasetを返します。

Spark Core

Spark Coreはすべての並列データ処理のベースであり、スケジューリング、最適化、RDD、データ抽象化を扱います。Spark Coreは、Sparkライブラリー、Spark SQL、Spark Streaming、MLlib機械学習ライブラリー、およびGraphXグラフ・データ処理の機能基盤を提供します。Spark Coreとクラスター・マネージャーは、Sparkクラスター全体にデータを分散し、抽象化します。このような分散と抽象化により、ビッグデータの取り扱いが非常に速く、使いやすいものとなります。

Spark API

Sparkには、Sparkの機能を幅広いユーザーに提供するためのさまざまなアプリケーション・プログラミング・インターフェース(API)が含まれています。Spark SQLを使用すると、リレーショナル方式でRDDデータと対話できます。Sparkには、Scala、Java、Python、R用の十分に文書化されたAPIもあります。Sparkの各言語APIには、データの処理方法に特有のニュアンスがあります。RDD、DataFrame、Datasetは各言語APIで利用できます。さまざまな言語のAPIを備えたSparkでは、開発、データサイエンス、データエンジニアリング、統計のバックグラウンドを持つ、より多様なグループの人々がビッグデータを処理できるようになります。

Think 2025

ハイブリッドクラウドを活用してAIの価値を大規模に高める

適切に設計されたハイブリッド・アーキテクチャーが、データ統合、高性能コンピューティングの活用、セキュリティー強化により、大規模なAIの導入を成功につなげる仕組みについて説明します。

Apache Sparkのメリット

Sparkは、さまざまな方法で開発とオペレーションを高速化します。Sparkはチームを次のように支援します。

  • アプリケーション開発の加速:MLlibとGraphXを基盤とするApache SparkのストリーミングとSQLプログラミング・モデルにより、機械学習とグラフ分析を活用するアプリケーションを簡単に構築できます。

  • イノベーションの迅速化APIは、半構造化データの操作やデータ・トランスフォーメーションを容易にします。

  • 管理が簡単:統合エンジンは、SQL Query、ストリーミング・データ、機械学習(ML)、グラフ処理をサポートします。

  • オープン・テクノロジーによる最適化OpenPOWER Foundationは、GPU、CAPIフラッシュ、RDMA、FPGAアクセラレーション、機械学習のイノベーションを可能にし、Apache Sparkワークロードのパフォーマンスを最適化します。

  • 高速処理:Sparkは、高度なインメモリー・コンピューティング・エンジンとディスク・データ・ストレージにより、小規模なワークロードではHadoopよりも100倍高速になります。

  • メモリー・アクセスの高速化:Sparkを使用すると、データ処理用に1つの大きなメモリー領域を作成できるため、上級ユーザーはPython、R、Spark SQLを使用するインターフェースを介してデータにアクセスできます。

Apache Sparkと機械学習

Sparkには、機械学習、人工知能(AI)、ストリーム処理の機能を拡張するさまざまなライブラリーがあります。

Apache Spark MLlib

Apache Sparkの重要な機能の1つは、Spark MLLibで利用できる機械学習機能です。これにより、分類と回帰、協調フィルタリング、クラスタリング、分散線形代数、デシジョン・ツリー、ランダム・フォレスト、勾配ブースティング決定木、頻度パターン・マイニング、評価メトリクス、統計を行うためのすぐに使えるソリューションが提供されます。MLlibの機能とさまざまなデータ・タイプを組み合わせることで、Apache Sparkは不可欠なビッグデータ用ツールとなります。

Spark GraphX

API機能に加えて、Spark GraphXはグラフの問題を解決するために設計されています。GraphX は、グラフおよびグラフ並列計算用のRDD を拡張するグラフ抽象化です。Spark GraphXは、相互接続情報やソーシャル・ネットワークのような接続情報のWebを保存するグラフ・データベースと統合します。

Spark Streaming

Spark Streamingは、ライブ・データ・ストリームのスケーラブルで耐障害性の高い処理を可能にする、Core Spark APIの拡張機能です。Spark Streamingはデータを処理する際、ファイル・システム、データベース、ライブ・ダッシュボードにデータを配信し、Sparkの機械学習およびグラフ処理アルゴリズムを使用してリアルタイムのストリーミング分析を行うことができます。Spark SQLエンジンをベースに構築されたSpark Streamingは、ストリームデータの処理を高速化するインクリメンタル・バッチ処理も可能です。

SparkとApache HadoopおよびMapReduceの違い

「SparkとHadoopの違い」はウェブ上でよく検索されるキー・ワードですが、前述のように、SparkはHadoop、より具体的にはHadoopのネイティブ・データ処理コンポーネントであるMapReduceを拡張したものです。実際、SparkはMapReduceフレームワークに基づいて構築されており、現在、ほとんどのHadoop実装にはSparkが含まれています

Sparkと同様に、MapReduceを使用すると、プログラマーは、大規模なコンピューター・クラスター全体でデータ・セットの一部を並列処理することで、膨大なデータ・セットを高速に処理するアプリケーションを作成できます。しかし、MapReduceがデータをディスク上で処理するため、読み込みと書き込みに時間がかかり処理が遅くなるのに対し、Sparkはメモリー上で計算を行うため、はるかに高速です。その結果、SparkはMapReduceよりも最大100倍高速にデータを処理できます。

Sparkには複数の言語に対応したAPIが組み込まれているため、プログラミングが難しいことで知られるMapReduceよりも開発者にとって実用的で親しみやすいものになっています。また、MapReduceとは異なり、Sparkなら、Hadoopのリソース管理およびジョブ・スケジューリング・フレームワークである「YARN」を使用して、Hadoopクラスター上でストリーム処理アプリケーションを実行できます。上で述べたように、SparkにはMLlib、GraphX、およびSparkSQLの機能が追加されています。さらに、Sparkでは、Apache Kafkaなど、Hadoopアプリケーション以外の他のデータ・ソースからのデータも処理できます。

それ以外の場合、SparkはHadoopと互換性があり、それを補完します。HDFS(Hadoop分散ファイルシステム)、HBase(HDFS上で実行される非リレーショナル・データベース)、Apache Cassandra(HDFSのNoSQLバージョン)、Hive(Hadoopベースのデータウェアハウス)のデータを含むHadoopデータを処理できます。

関連ソリューション
IBM Z Operational Log and Data Analytics 

リアルタイムの運用分析でハイブリッド・インシデントの特定を加速します。

IBM Zについて
クラウド分析ソリューション

データの分析や機械学習モデルの構築を簡単に行えるクラウド分析ソリューションで、ビジネスを変革しましょう。

クラウド分析ソリューションの詳細はこちら
クラウド・コンサルティング・サービス

IBMのクラウド・コンサルティング・サービスの新しい機能を確認し、ビジネスの俊敏性を高めましょう。

クラウド・コンサルティング・サービスの詳細はこちら
次のステップ

IBM Zのデータからリアルタイムの洞察を引き出し、メインフレームとクラウドをつなぐ強力な分析機能を活用することで、より迅速に行動し、リスクを軽減し、より賢明な意思決定ができます。

IBM Zについて 詳細を取得する