CDH4 の oozie で自作Driverによる map/reduce

CDH3までだと、java action で RunJar クラスを指定し、 job-xml 要素に mapred-site.xml を指定しておけばそれが mapreduce の設定に反映されていたはずなんだが、どうもCDH4ではダメ。

なので、いつの間にか追加されている shell action というのを使ってみる。shell action で普通に hadoop jar ・・・ としてみる。

しかし、これは mapred ユーザで実行されてしまい、後続の action では別なユーザで実行しているのでパーミッションのエラーが発生。

shell action 内で sudo するのも試してみたが、これもダメ。どうも、ローカルのパーミッションの問題のようだった。(distcache とかは mapred ユーザが owner になっている)

で、最終的に、dfs.permissions を false にすることで対応。自作 Driver の mapreduce はmapred ユーザで実行されるが、パーミッションが無視されるのでエラーにはならない。

若干、負けた感があるが、今のところパーミッション使ってて助かったことがあまりなく、むしろ面倒臭いだけなので、とりあえずよしとしよう・・・