CDH4のmapreduce関係のパッケージの構成がカオスな件

モノによっては同じパッケージで同じ名前のクラスが存在する。もしかしたら、3つ同じものが存在する場合もあるかもしれない・・・

ソースtarを見てみると、mapreduce関係のクラスは cdh4.1.2 というtarと mr1-cdh4.1.2 というtarの2つに入っていて、さらに cdh4.1.2 の mapreduce project ディレクトリに client というやつとそれ以外の2箇所ある。
合計で3箇所にmapreduce関係のソースコードが収められており、同じパッケージ・クラス名でダブリが見られるのだ。しかも、同じ名前のクラスで、中身が異なるというものが見受けられる・・・
ついでに言えば、cdh4.1.2 の client のほうは、さらに common、core、app とか細かく分けられていて、ソースを追うときにどこに何が格納されているのか非常に分かりづらい。

CDH3では、元からあった mapred パッケージと、書きなおされたクラス郡が含まれた mapreduce パッケージに分かれていたが、同じクラス名でもパッケージがちゃんと分けられていたし、古い方は deprecated になっていたし、ソースコードは一箇所にまとめてあった。ソースコードは追いやすかった。

という訳で、CDH4の mapreduce は、ソースコードで処理を追おうとしても、どこを実行しているのか訳がわからん。

ちなみに、HADOOP_MAPRED_HOME という環境変数が追加されているが、これも曲者。
YARN の hadoop-env.sh に /usr/lib/hadoop-0.20-mapreduce とあったので、MRv1 は /usr/lib/hadoop-mapreduce なのかと思いきや、これだと動かない。
/usr/lib/hadoop-0.20-mapreduce にするか、設定しないかなら動く。じゃあ、/usr/lib/hadoop-mapreduce って何者なの!?デフォでこっちに設定されちゃうっぽいし。

YARNが安定したら、全部そっちに寄せられて綺麗になるんだろうか・・・
頼みます、Clouderaさん・・・