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 ユーザで実行されるが、パーミッションが無視されるのでエラーにはならない。
若干、負けた感があるが、今のところパーミッション使ってて助かったことがあまりなく、むしろ面倒臭いだけなので、とりあえずよしとしよう・・・