ホーム topics Apache Spark Apache Sparkとは
IBM Apache Sparkソリューションの詳細はこちら AI関連の最新情報を購読する
雲、円グラフ、グラフのピクトグラムのコラージュを使用したイラスト
Apache Sparkとは

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

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

Sparkの分析エンジンは、小規模なワークロードでは、Hadoop(ibm.com外部へのリンク)などの他の方法よりも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人を超えるコントリビューターを擁するビッグデータ分野最大のオープンソース・コミュニティーがあります。また、いくつかの商用ビッグデータ製品のコア・コンポーネントとしても含まれることもあります。

エンタープライズ向け生成AIとML

生成AIの主な利点と、組織が生成AIと機械学習をビジネスに組み込む方法について学びます。

電子ブック

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では、開発、データサイエンス、データエンジニアリング、統計のバックグラウンドを持つ、より多様なグループの人々がビッグデータを処理できるようになります。

Apache Sparkのメリット

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

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

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

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

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

  • 高速処理:Sparkは、高度なインメモリー・コンピューティング・エンジンとディスク・データ・ストレージにより、小規模なワークロードではHadoop( ibm.com外部へのリンク)よりも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は、ストリームデータの処理を高速化するインクリメンタル・バッチ処理も可能です。

関連リンク

Hadoop

ビッグデータ分析

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 Analytics Engine

IBM Analytics Engineは、分析アプリケーションを作成するためのApache SparkとApache Hadoopを組み合わせたサービスです。

IBM Analytics Engineの詳細はこちら
IBM Watson Studio

信頼を構築し、クラウド環境全体でAIを拡張します。データサイエンティスト、開発者、アナリストがAIモデルを構築、実行、管理し、意思決定を最適化できるようにします。

IBM Watson Studioの詳細はこちら
Apache Spark on IBM Power

非常に高速で大規模なデータ処理用に最適化されたオープンソースのクラスター・コンピューティング・フレームワークに依存しています。

Apache Spark on IBM Powerの詳細はこちら
IBM Spectrum Conductor

IBM Spectrum Conductor やその他のサービスを、オンプレミスとクラウドの両方でマルチテナント・エンタープライズ環境に自信を持って導入できます。

IBM Spectrum Conductorの詳細はこちら
参考情報 Apache Sparkを用いたビッグデータ分析の詳細はこちら

大量のリアルタイム・データを処理するという、困難で計算量の多いタスクをSparkがどのように簡素化するかについて理解を深めましょう。

HadoopとSparkの違い

HadoopとSparkのそれぞれのアーキテクチャー、そしてこれらのビッグデータ用フレームワークがさまざまなシナリオでどのように異なるかについてご覧ください。

エンタープライズ向け生成AIとML

生成AIの主な利点と、組織が生成AIと機械学習をビジネスに組み込む方法について学びます。

開発者が1つ以上のタスクを完了するために実行できる詳細な手順を表示します。

各チュートリアルでは、開発者がプロジェクトでテクノロジーを使用する方法を学ぶのに役立つ実践的な手順を紹介しています。

レガシー・アプリケーションのApache Sparkへの移行

Apache Sparkを使用してコア・システムを変革する方法をご覧ください。俊敏性、パフォーマンスを高め、より広範なエコシステムへのアクセスを実現します。

次のステップ

オープンなデータレイクハウス・アーキテクチャー上に構築された、目的に合ったデータ・ストアであるIBM watsonx.dataを使用すれば、あらゆるデータのAIワークロードをどこにでも拡張できます。

watsonx.dataの詳細はこちら デモの予約