レジリエント分散データセット(RDD)とは

2025年2月6日

 

 

共同執筆者

James Holdsworth

Content Writer

Matthew Kosinski

Enterprise Technology Writer

レジリエント分散データセット(RDD)とは

レジリエント分散データセット(RDD)とは、不変で耐障害性を備えた要素の集合であり、複数のクラスター・ノードに分散させ、並列処理することができます。RDDは、オープンソースのデータ処理エンジンであるApache Sparkの基本的なデータ構造です。

Sparkは、大規模なデータ処理タスクを小さな並列タスクに分割(「チャンク化」)するためのプログラミング・モデルであるMapReduceの欠点を克服するために開発されました。

MapReduceは処理速度が遅く、非効率的な場合があります。複製(異なる場所にデータの複数のコピーを保持すること)、シリアライズ(複数のプログラムが使用するリソースへのアクセスを調整すること)、および集中的なI/O(ディスク・ストレージの入出力)を必要とします。

Sparkは特に不要な処理を削減するように設計されています。MapReduceが中間データをディスクに書き込むのに対し、SparkはRDDを使用してデータをメモリー上にキャッシュし、計算を行います。その結果、SparkのAnalytics EngineはMapReduceよりも10〜100倍高速にデータを処理できます。1

RDDとApache Spark

Apache Sparkは、高速でオープンソースの大規模データ処理エンジンであり、機械学習(ML)人工知能(AI)のアプリケーションによく使用されます。Sparkは、Hadoop、より具体的にはHadoopのネイティブなデータ処理フレームワークであるMapReduceの改良版と見なすことができます。

Sparkは、大規模なコンピューター・クラスターにデータ処理ワークフローを分散することでスケールし、複数のノードでの並列計算や耐障害性を標準でサポートしています。

Sparkには、アプリケーション・プログラミング・インターフェース(API)が含まれており、データサイエンスデータ・エンジニアリング向けの一般的なプログラミング言語をサポートしています。対応言語には、Java™Python(PySpark)、Scala、およびRが含まれます。

SparkはRDDを使用してデータを管理および処理します。各RDDは論理パーティションに分割され、異なるクラスターノードで同時に計算することができます。また、ユーザーは、トランスフォーメーションとアクションという2種類のRDDオペレーションを実行できます。

  • トランスフォーメーションは、新しいRDDを作成するオペレーションです。

  • アクションは、Sparkに計算を実行させ、その結果をSparkドライバー(Sparkジョブを管理するプロセス)に返すよう指示するオペレーションです。

Sparkは、RDDに対してメモリー上でトランスフォーメーションとアクションを実行します。これがSparkの高速性の鍵となっています。さらに、Sparkはデータをメモリーに保管するだけでなく、永続性を高めるためにディスクに書き込むこともできます。

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

The DX Leaders

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

RDDの仕組み

レジリエント分散データセット(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などのプログラミング言語を使用して作成することも可能です。

AI Academy

生成AIの成功の鍵はデータ管理

生成AIの使用を成功させるために、高品質のデータが不可欠である理由をご覧ください。

永続性

Spark RDDは、オペレーション間でデータセットをメモリーにキャッシュすることができます。各ノードは、自身が計算したパーティションをメモリーに保管し、データセットやその結果となるデータセットに対する後続のアクションで再利用することができます。この永続性により、処理が大幅に高速化されます。

Sparkは、ユーザーに対してインタラクティブなストレージ・オプションを提供し、データの保管方法を制御できるようにします。データはメモリーに保管することも、ディスクに保管することも、またはその両方を組み合わせて保存することもできます。

不変性

RDDは不変であり、一度作成された後に変更することはできません。不変であることは、複数のオペレーションを通じてデータが時間とともに安定して保たれるのに役立ちます。

また、複数のプロセス間でデータを共有しやすく、安全にする効果もあります。また、異なるスレッドからの同時更新によって発生する可能性のあるデータの破損を防ぐのにも役立ちます。

RDDは不変ですが、既存のRDDに対してトランスフォーメーションを適用することで新しいRDDを作成できるため、元のデータを変更せずにデータセットを更新することができます。

非構造化データの容量

RDDは、非構造化データと構造化データの両方を処理できます。非構造化データを処理する際、固定されたスキーマやDataFrameの作成なしに、複数の種類のデータベース、メディア・ストリーム、またはテキスト・ファイルから情報を抽出することができます。

とはいえ、ユーザーはSparkでDataFrameを作成することができ、これにより性能向上のための特定の最適化を活用することができます。

関連ソリューション
データ管理ソフトウェアとソリューション

データ・サイロを排除し、複雑さを軽減し、データ品質を向上させることで、卓越した顧客体験と従業員体験を実現するデータ・ストラテジーを設計します。

データ管理ソリューションの詳細はこちら
IBM watsonx.data

watsonx.dataを使用すると、オープンでハイブリッド、かつ管理されたデータ・ストアを通じて、データがどこに保存されていても、すべてのデータを使用して分析とAIを拡張できます。

watsonx.dataについてはこちら
データ分析コンサルティングサービス

IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。

分析サービスを発見する
次のステップ

データ・サイロを排除し、複雑さを軽減し、データ品質を向上させることで、卓越した顧客体験と従業員体験を実現するデータ・ストラテジーを設計します。

データ管理ソリューションの詳細はこちら watsonx.dataについてはこちら
脚注

1Apache Spark™、Apacheソフトウェア財団、2024年12月20日。