レジリエント分散データセット(RDD)とは、不変で耐障害性を備えた要素の集合であり、複数のクラスター・ノードに分散させ、並列処理することができます。RDDは、オープンソースのデータ処理エンジンであるApache Sparkの基本的なデータ構造です。
Sparkは、大規模なデータ処理タスクを小さな並列タスクに分割(「チャンク化」)するためのプログラミング・モデルであるMapReduceの欠点を克服するために開発されました。
MapReduceは処理速度が遅く、非効率的な場合があります。複製(異なる場所にデータの複数のコピーを保持すること)、シリアライズ(複数のプログラムが使用するリソースへのアクセスを調整すること)、および集中的なI/O(ディスク・ストレージの入出力)を必要とします。
Sparkは特に不要な処理を削減するように設計されています。MapReduceが中間データをディスクに書き込むのに対し、SparkはRDDを使用してデータをメモリー上にキャッシュし、計算を行います。その結果、SparkのAnalytics EngineはMapReduceよりも10〜100倍高速にデータを処理できます。1
Apache Sparkは、高速でオープンソースの大規模データ処理エンジンであり、機械学習(ML)や人工知能(AI)のアプリケーションによく使用されます。Sparkは、Hadoop、より具体的にはHadoopのネイティブなデータ処理フレームワークであるMapReduceの改良版と見なすことができます。
Sparkは、大規模なコンピューター・クラスターにデータ処理ワークフローを分散することでスケールし、複数のノードでの並列計算や耐障害性を標準でサポートしています。
Sparkには、アプリケーション・プログラミング・インターフェース(API)が含まれており、データサイエンスやデータ・エンジニアリング向けの一般的なプログラミング言語をサポートしています。対応言語には、Java™、Python(PySpark)、Scala、およびRが含まれます。
SparkはRDDを使用してデータを管理および処理します。各RDDは論理パーティションに分割され、異なるクラスターノードで同時に計算することができます。また、ユーザーは、トランスフォーメーションとアクションという2種類のRDDオペレーションを実行できます。
Sparkは、RDDに対してメモリー上でトランスフォーメーションとアクションを実行します。これがSparkの高速性の鍵となっています。さらに、Sparkはデータをメモリーに保管するだけでなく、永続性を高めるためにディスクに書き込むこともできます。
レジリエント分散データセット(RDD)は、耐障害性があり、分散されています。つまり、次のような特性を持ちます。
RDDは、データ・リネージ情報を追跡することで、障害が発生した際に失われたデータを再構築できるため、「レジリエント」と呼ばれます。これにより、RDDは高い耐障害性を備えています。
このデータのレジリエンスの例として、RDDパーティションの処理中にエグゼキューター・コアが失われた場合を考えてみましょう。ドライバーはその障害を検知し、そのパーティションを別のエグゼキューター・コアに再割り当てします。
RDDは、データが小さなグループに分割され、異なるコンピュート・ノードに分散されて同時に処理されるため、「分散型」と呼ばれます。
これら2つの核となる特性に加えて、RDDにはSparkにおけるその重要性とオペレーションに寄与する他の特徴もあります。
多くのデータ処理フレームワーク、特にMapReduceは、外部のストレージ・システムから複数回の読み書きを行う必要があり、そのため性能が低下します。RDDは、この問題をApache Sparkで解決するのに役立ちます。
RDDは、反復オペレーションの中間結果をランダム・アクセス・メモリー(RAM)に保管するインメモリー計算を使用することで、ディスクI/Oを削減します。インメモリー計算とストレージを活用することで、高速なアクセスとほぼリアルタイムの処理を実現できます。
RDDは、機械学習アルゴリズムのトレーニング時間や、大規模なビッグデータ分析の処理を高速化するのにも役立ちます。インメモリー計算を利用することで、データ・ストレージへのアクセスにかかる時間を短縮できます。
Sparkでは、すべてのトランスフォーメーション(新しいRDDを作成するために適用されるオペレーション)は「遅延評価」です。つまり、データはすぐにロードまたは計算されるわけではありません。
その代わりに、トランスフォーメーションは有向非巡回グラフ(DAG)内で追跡され、ドライバー・プログラムから特定のアクションが呼び出されたときにのみ実行されます。
ドライバー・プログラムは、Sparkジョブにおけるクラスター計算の主要な機能とオペレーションを指示します。これには、集約、収集、カウント、ファイル・システムへのアウトプットの保存などが含まれます。
数十種類のトランスフォーメーションおよびアクションがあり、aggregateByKey、countByKey、flatMap、groupByKey、reduceByKey、sortByKeyなどが含まれます。
遅延評価は、不要な処理を排除し、無駄な計算を削減することで、データ処理パイプラインを最適化するのに役立ちます。
Sparkは、RDDを自動的に複数のノードにパーティション分割することで、単一のノードには収まりきらない大容量のデータを処理できるようにします。データの破損を防ぐために、各パーティションは単一のノードに保管され、複数のノードに分散されることはありません。
RDDは、組織がコンピュート・パーティションの配置を定義できるようにすることで、タスクを必要なデータの近くで実行できるようにします。この配置により、処理速度が向上します。
さらに、クラスター内のエグゼキューター(ドライバーから割り当てられたタスクを実行するコンピューター)の数を増やすことで、システムの並列処理能力を向上させることができます。アウトプットの並列度は、親RDDのパーティションの数によって決まります。
RDDは、クラスター全体に論理パーティションとして作成され、複数のノードで並列オペレーションを実行できるようにします。RDDは、Amazon Web Services(AWS)S3、Hadoop Distributed File System(HDFS)、Apache HBase、Cassandraなどの安定したストレージ・ソースから作成できます。また、ScalaやPythonなどのプログラミング言語を使用して作成することも可能です。
Spark RDDは、オペレーション間でデータセットをメモリーにキャッシュすることができます。各ノードは、自身が計算したパーティションをメモリーに保管し、データセットやその結果となるデータセットに対する後続のアクションで再利用することができます。この永続性により、処理が大幅に高速化されます。
Sparkは、ユーザーに対してインタラクティブなストレージ・オプションを提供し、データの保管方法を制御できるようにします。データはメモリーに保管することも、ディスクに保管することも、またはその両方を組み合わせて保存することもできます。
RDDは不変であり、一度作成された後に変更することはできません。不変であることは、複数のオペレーションを通じてデータが時間とともに安定して保たれるのに役立ちます。
また、複数のプロセス間でデータを共有しやすく、安全にする効果もあります。また、異なるスレッドからの同時更新によって発生する可能性のあるデータの破損を防ぐのにも役立ちます。
RDDは不変ですが、既存のRDDに対してトランスフォーメーションを適用することで新しいRDDを作成できるため、元のデータを変更せずにデータセットを更新することができます。
RDDは、非構造化データと構造化データの両方を処理できます。非構造化データを処理する際、固定されたスキーマやDataFrameの作成なしに、複数の種類のデータベース、メディア・ストリーム、またはテキスト・ファイルから情報を抽出することができます。
とはいえ、ユーザーはSparkでDataFrameを作成することができ、これにより性能向上のための特定の最適化を活用することができます。
オープンなデータレイクハウス・アプローチがどのように信頼できるデータを提供し、分析とAIプロジェクトをより迅速に実行できるかをご覧ください。
IBMは、2024年もGartner®データ統合ツールのMagic Quadrant™でリーダーに選ばれ、19年連続で選出されました。
データ駆動型の組織を構築し、ビジネス上の優位性を推進するためのデータ・リーダー向けガイドはこちらです。
AIを活用したデータ・インテリジェンスとデータ統合が、構造化データおよび非構造化データへの備えを推進し、AIの成果を加速するために重要である理由をご紹介します。
データ・アクセスを簡素化し、データ・ガバナンスを自動化します。ワークロードのコスト最適化、AIと分析の拡張など、データレイクハウス戦略をデータ・アーキテクチャーに統合することで、あらゆるデータをあらゆる場所で利用できるようになります。
IBM ResearchがIBM® Cloud Pak for Dataの新機能に頻繁に統合されている様子をご覧ください。
ABIソリューションの進化する状況について独自の洞察を提供し、データおよび分析のリーダーにとって重要な調査結果、仮定、推奨事項をご覧ください。
データ・サイロを排除し、複雑さを軽減し、データ品質を向上させることで、卓越した顧客体験と従業員体験を実現するデータ・ストラテジーを設計します。
watsonx.dataを使用すると、オープンでハイブリッド、かつ管理されたデータ・ストアを通じて、データがどこに保存されていても、すべてのデータを使用して分析とAIを拡張できます。
IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。
1Apache Spark™、Apacheソフトウェア財団、2024年12月20日。