Apache Hadoopについての基礎知識

Apache Hadoopは、2つの主要コンポーネントで構成されていると考えられます。

  • Hadoop Distributed File System (HDFSと呼ばれます)。
  • MapReduceプログラミング・モデル。このモデルには、マッピング・ステップとシャッフル・アンド・ソート・ステップから構成されていて、フィルタ処理とソート処理の両方を実行するMapフェーズと、その後にMapフェーズによってマップおよび保存した結果に対する要約ステップを実行するReduceフェーズが含まれています。

入手可能な各種のHadoopディストリビューション(Clouderaなど)により、MapReduceジョブで実行するプロセスをオーケストレートするためのインフラストラクチャが提供されます。これには、ジョブのタスクをパラレルで実行する分散型サーバーのマーシャリング、システム各部の間のすべての通信とデータ転送の管理、冗長性とフォルト・トレランスを提供するメカニズムが含まれています。

Hadoopインフラストラクチャには、HDFSに保存されたデータへのアクセスを可能にするコマンドライン・インタフェース(Hadoop CLI)などの対話型ツールも用意されています。ただし、アプリケーション開発者は、HDFSに保存されたデータの読取り、書込みおよび処理にMapReduceジョブを使用することが一般的な方法です。このジョブは、Hadoop MapReduceプログラミング・モデルに準拠しているプログラムです。Hadoop HDFSおよびMapReduceの詳細は、Hadoop MapReduceチュートリアルを参照してください。

前述のように、Oracle NoSQL表APIの導入により、Oracle NoSQL Databaseでは、Hadoop MapReduceプログラミング・モデルを満たすインタフェースとクラスのセットが使用できるようになり、Oracle NoSQL Databaseストアに作成された表に書き込まれたデータを処理するために実行可能なMapReduceジョブを記述できます。こうしたクラスは、oracle.kv.hadoop.tableパッケージに含まれていて、次の型で構成されています。

  • Hadoopクラスのサブクラスorg.apache.hadoop.mapreduce.InputFormat。このサブクラスでは、関連付けられたMapReduceジョブがHadoop RecordReaderを使用して入力データを読み取り、入力データを論理セクションに分割する方法を指定します。それぞれの論理セクションは、InputSplitとして参照されます。
  • Hadoopクラスのサブクラスorg.apache.hadoop.mapreduce.OutputFormat。このサブクラスでは、関連するMapReduceジョブがHadoop RecordWriterを使用して出力データを書き込む方法を指定します。
  • Hadoopクラスのサブクラスorg.apache.hadoop.mapreduce.RecordReader。このサブクラスでは、MapReduceの処理時にマップされたキーと値の検索方法および取得方法を指定します。
  • Hadoopクラスのサブクラスorg.apache.hadoop.mapreduce.InputSplit。このサブクラスは、個々のMapReduce Mapperによって処理されるデータを表します。InputSplitごとに1つのMapperが存在します。

クラスの完全なリストは、Apache Hadoop APIを参照してください。

次の各項で説明するように、Hadoop MapReduceインフラストラクチャでは、Oracle NoSQL Databaseが提供するInputFormatクラスの特定の実装によって、特定のストアとストアに書き込まれたデータにアクセスします。