Upgrade CDH3 to CDH4 注意点その1

既存のCDH3をCDH4にアップグレードしたり、
新規でCDH4をインストールする際の注意点をパラパラ書き留めておきます。

まだCDH4のマスターには程遠いので、まだまだ出るでしょうから小分けにします。



CDH3からCDH4のHDFSは利用できない

CDHはそもそもバージョンを揃えるのが基本ですが、
それを知りつつもせっかく確認したことがあるので書いておきます。

エコシステムからHDFSに書き込めない

CDH4のHDFSに対して、CDH3のHiveやFlumeなどからは書き込めません。
Hadoop本体だけでなく、例えばログ収集Agentまでアップグレード必須になると
台数が多かったり、他の会社が管理するサーバがあると大変です。

こういう場合、WebHDFSなどのAPIがあるとある程度吸収してくれるのでしょうが、CDH3にはWebHDFSがないのでアップグレードするしかありません。構成によりけりでしょうが、CDH4からはシステムによってAPIにすべきかどうか考えておくと少し幸せになると思われます。

Hadoop本体はマイナーバージョンまで統一必須

これはCDH3u3からCDH3u4に更新した時の話ですが、更新はいったん全Hadoopを止めてからやるのが基本ですが、NameNodeだけu4にしてu3のDataNodeを起動してみるとDataNodeは何もエラーを吐かずにシャットダウンします。

台数が多い時に抜けが出て、起動できないノードができちゃった時に
ログが何も残らなくて解決に時間がかかる──というのを無くしたいですね。

設定 ***-site.xml

基本的には Upgrading from CDH3 to CDH4 の手順で事故は起きないのですが、CDH3との違いはノード名が変わってJobTrackerが分かれただけだべ って思ってると色々引っかかります。

設定名の変更

CDH4 Deprecated Properties の通り、かなり設定名に変更が入っています。

俺はこのリストからvim置換用の :%s/fs.default.name/fs.defaultFS/g のリストを作って ***-site.xml を全て置換しましたが、既存の設定はだいたいこれで大丈夫でした。yarn-site.xml は新規なのでまた別途頑張ることになりますが、そんなに量は多くないです。

Hiveのみ一部が旧設定を利用する

mapred-site.xml の設定の大半が CDH3の時の mapred.*** から mapredce.*** に変更されたわけですが、Hiveはなぜか旧設定を使おうとする場合があります。

例えば、CDH4における出力の圧縮形式は mapreduce.output.fileoutputformat.compression.codec
指定しますが、Hiveは mapred.output.compression.codec を見るため、新設定にGzipを指定してもデフォルトのDeflateになる、といった現象になります。

なので、毎回XMLを読むようなシステムは同じように旧設定を警戒するか、現段階なら、思い切って旧設定をXMLにCDH3の時のまま残しておくのもよいかもしれません。その場合は fs.default.name と fs.defaultFS のように両方有効なものを除かなくちゃですが・・・

ポートを何にするか

CDH4のデフォルトポート Configuring Ports for CDH4 と、YARNの所の推奨値 Deploying MapReduce v2 (YARN) on a Cluster では、部分的に違いがあります。別にどちらでも動作しますが、8040 とかはそれぞれで別設定なのに同じ番号になっていて、わかりづらいです。

俺の推奨は、まずはデフォルト値で動かすことで、慣れたとしてもデフォルト値でいいと思います。いきなりポートを推奨値にすると、動かない時にCDH4で構成が変わった中で何が悪いのかわからなくなり、結局、擬似分散モードからきっちり見なおして動作確認をするハメになります。

とはいえ、どうせ完全分散にするとホスト指定のために設定を書くことになるのですが、
ResourceManagerは yarn-site.xml に yarn.resourcemanager.addressyarn.resourcemanager.resource-tracker.address を。
JobHistoryは mapred-site.xml に mapreduce.tasktracker.report.addressmapreduce.jobhistory.address を書けば完全分散としても基本的な部分は動くはずです。

他の ***.***.address はちゃんとジョブが納得行く動作をしてから理解するので十分です。

管理画面

CDH4にしてまず驚くのは、NameNode管理画面にCSSが存在しないことで、
これしきのことが確認されてないシステムって・・・と疑心暗鬼になること間違いなしです。
その不安に見合う苦労をすることも間違いないです。先生・・・早くCSSが欲しいです。



長くなったので区切ります。