たごもりすメモ

コードとかその他の話とか。

CDHを使うときのyum.repos.dの設定 と CDH4.2 -> 4.5 の非互換の話

yum.repos.d

CDHをClouderaからyum経由でもってきてインストールして使うとき、以下のように設定をせよとドキュメントに書いてある。

[cloudera-cdh4]
name=Cloudera's Distribution for Hadoop, Version 4
baseurl=http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4/
gpgkey = http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera    
gpgcheck = 1

で、そのままやってたんだけど、これには罠がある。 cdh4/redhat/6/x86_64/cdh/4/ というのは CDH4 の最新マイナーバージョン*1を指しており、この baseurl を指定している状態だと yum update をかけるとCDH4.5にアップデートされてしまう。
バージョン指定して入れられるかなと思ったんだけど、上述 baseurl から見える場所に最新以外のバージョン*2rpmが置かれておらず、yumで入れられない。

正しくは以下のように、マイナーバージョンまで含めたURLで baseurl を指定しよう。

baseurl=http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4.2.0/

なんで cdh/4 の下に全バージョンのパッケージを置いておいてくれないのか謎。そうしてくれれば yum でもバージョン指定で入れられるのに。なんで。なんでなの。

CDH4.2とCDH4.5は混ぜたら動かないよ

起動してみたらこんなログが出て即座に死んだ。JobTracker*3はCDH4.2で新規に追加しようとした TaskTracker がCDH4.5のケース。

2014-01-07 13:02:26,407 FATAL org.apache.hadoop.mapred.TaskTracker: Shutting down. Incompatible version or revision.TaskTracker version '2.0.0-mr1-cdh4.5.0' and build '2.0.0-mr1-cdh4.5.0 from Unknown by jenkins source checksum 999ab1ceefbade5990db1ff9ce20057b' and JobTracker version '2.0.0-mr1-cdh4.2.0' and build '2.0.0-mr1-cdh4.2.0 from Unknown by jenkins source checksum 75d53f44f0029fe1d72a2f3b9571cd17 and hadoop.relaxed.worker.version.check is enabled and hadoop.skip.worker.version.check is not enabled

設定をいじれば動くんだろうけど、えー、って感じですね。マイナーバージョン指定してない yum.repos.d の設定だと普通にCDH4.5が入るのが悲しい。

DataNodeの方は動いた、ように見えた、んだけど、tasktrackerがダメだったんで外そうとして停めてみたら、なんか即座にNameNode側でdeadにならなかった。何故か理由はよくわからない、けど調べてない。どうせこの状況では運用しないし。

(2014/02/19追記)
JobTracker - TaskTracker 間のバージョンチェックについては、TaskTrackerの起動時にのみ行われる、らしい。なのでバージョンアップするときはJobTrackerの方を先にアップデートすれば、TaskTrackerは生きている限りではJobTrackerに再接続できる、とのこと。なんらかの理由で再起動しちゃうと再接続はできないので、まあ混ぜて運用はできない。

(2014/05/09追記)
CDH 4.6 に上げる機会に確認しようと思ってJobTrackerを先にアップデート・再起動したところ、クラスタの全ノードのJobTrackerがクラスタから消えてしまいました。以下のログが残ってました。

2014-05-09 16:35:57,707 FATAL org.apache.hadoop.mapred.TaskTracker: Shutting down. Incompatible version or revision.TaskTracker version '2.0.0-mr1-cdh4.5.0' and build '2.0.0-mr1-cdh4.5.0 from Unknown by jenkins source checksum 999ab1ceefbade5990db1ff9ce20057b' and JobTracker version '2.0.0-mr1-cdh4.6.0' and build '2.0.0-mr1-cdh4.6.0 from Unknown by jenkins source checksum d826f39d272cec18adfa4b2b302f13a3 and hadoop.relaxed.worker.version.check is enabled and hadoop.skip.worker.version.check is not enabled

うーん、やっぱりダメなんじゃないかなあ。

*1:現在だと CDH4.5

*2:自分の今の場合は CDH4.2

*3:や既存 TaskTracker