Cascading(リンク)はHadoop(リンク)クラスタ上でデータ処理する新しい処理系API であり、Hadoop MapReduceアルゴリズムを直接実装するのとは対照的に、表現豊かなAPIを使って複雑な処理ワークフローの構築をサポートする。
この処理系APIにより、開発者はMapReduce(リンク)で「考える」必要なしに、複雑な分散プロセスを素早く組み立てられます。また、依存性やその他の利用可能なメタデータに基づいて、効率的にスケジュールできます。
Cascadingの概念の中核にあるのは、パイプとフローである。パイプは、これから行われるデータ処理を定義する一連の処理ステップ(パース、ループ、フィルタなど)であり、フローはパイプ(もしくはパイプ一式)をデータソースやデータシンクと関連づけるものである。換言すれば、フローはデータが通っている状態のパイプである。さらに一歩進めると、カスケードとは複数のフローをつなげ、分岐し、グループ化することである。
このAPIが提供する重要機能は多数ある。
- 依存性ベースの「トポロジー型スケジューラー」とMapReduceの計画立案 -- Cascadingの2つの重要コンポーネントが、依存性に基づいてフローの呼び出しをスケジュールする能力を発揮します。実行順序は構築順序から独立しているため、フローやカスケードの部分的な同時呼び出しが可能なことが多々あります。さらに、様々なフローのステップをhadoopクラスタと対比して、インテリジェントにmap-reduceの呼び出しに変換します。
- イベント通知 -- フローの様々なステップは、コールバックを介して通知を実行できるため、ホストアプリケーションはデータ処理の進行状況をレポートし、反応できます。
- スクリプト可能 -- Cascadingは、JythonやGroovy、JRuby用のスクリプト可能なインタフェースを備えているので、人気の高い動的JVM言語で容易にアクセス可能です。
Cascadingの概念や実装を学べる文書が多数存在する。ウォークスルーでCascadingの中心概念(リンク)を紹介するハイレベルの概説プレゼンテーションがPDF版で手に入る。また、単純なApacheログパーサーの作成をウォークスルーする「やさしい入門」例もある(リンク)。最後になるが、Cascadingに関するJavadocの完全版もある(リンク)。