Cascadingは、HadoopのMap/Reduceを隠蔽(抽象化)するライブラリー。
これはApacheのプロジェクトではない。
|
|
|
Cascadingは、HadoopのMapタスクやReduceタスクに相当するタスクをPipeという単位で記述し、Pipeをつなげて処理を作る。
Hadoopの基本であるMap/Reduceでは、ひとつのジョブは、Mapperの次にReducerを処理して、それで終了する。
複数種類のMapperを実行する事は出来ないし、Reducerの結果を次のMapperに渡す事も出来ない。
Cascadingでは、任意のPipe同士をつなげて一連の処理とする事が出来る。
(Reducerに相当するPipeの処理結果を、Mapperに相当する次のPipeに渡す事が出来る)
特に、複数のPipeを1つのPipeに結合することが出来るのは便利。
また、MapperやReducerは(キーと)値を一種類しか指定できないが、Cascadingでは項目名を付けることが出来るので、複数の値を指定することが出来る。
Cascadingは、表面上(コーディング上)、Map/Reduceは出てこない。
実行時にPipeの内容に応じて内部的にMapReduceを生成して実行する。
Cacadingで使われる用語。[2010-04-14]
用語 | 読み? | 説明 | 関連 |
---|---|---|---|
Cascading | カスケーディング カスケイディング |
ライブラリー名(固有名詞)。 Googleで「Cascading」だけ入れて検索すると、CSS(Cascading Style Sheet)の方がいっぱい出てくる(苦笑) Hadoopの様に、他に例を見ない名前の方が良かったのにねぇ。 |
|
flow | フロー | 一連のパイプをつないでひとまとまりにした実行単位をフローと呼ぶ。 どの入力ファイルを読み込んで どのファイルへ出力するのかは、フローで指定する。 複数のフローを実行すると、並列で実行されるらしい。 |
Flowクラス |
pipe | パイプ | ひとつひとつの処理。 Map/ReduceのMapper・Reducerに相当する。 タプルストリーム内のタプルを加工し、新しいタプルストリームを作り出す。 |
Pipeクラス |
tuple stream | タプルストリーム | 処理対象となるタプル群。 | TupleEntryIterator TupleEntryCollector |
tuple | タプル | 1レコードに相当するデータ。いわば、“要素数が固定”のリスト。 | Tupleクラス |
field | フィールド | タプル内の個々のデータ、あるいはその項目名。 | Fieldsクラス |
tap | タップ | 入出力ファイル(あるいはDB)。 入力元はsource、出力先はsinkと呼ぶ。 |
Tapクラス |
source | ソース | 入力元のTap。 | Tapクラス |
sink | スィンク(シンク) | 出力先のTap。 | Tapクラス |
incoming | インカミング | パイプへ入ってくること。あるいはそのデータ(タプルやフィールド名)。 | |
outgoing | アウトゴーイング | パイプから出力されること。あるいはそのデータ(タプルやフィールド名)。 |