ついつい CDH4.1 から CDH4.4 にアップグレードしてしまいましたので、手順を省いて注意点などを記しておきます。
機能的には What’s New in CDH4.4.0 まで見てもメリットよりリスク不安の方が高いのですが、Hadoop新担当者の運用鍛錬という名目でゴリッとやってもらって、私はその後ろで煽ってました。
手順について
How to upgrade from CDH4.0 to CDH4.1 for Debian | 外道父の匠 と流れは同じで、だけなので難しいことは特にありません。
QJM HAも特になにもなかったです。
なので、細かいメモだけ書いておきます。
NameNode WARNログ
挙動に支障はないのですが、読み書き両方ともにHDFSを利用するとこんなWARNログが毎回残るようになりました。例は fluentd からの書き込みなのでユーザが td-agent になっています。これについて調べたところ、わりと古い話題ですが
bash -c “id -Gn td-agent” が返らないのが原因ということで、user, group を作って回避しました。これが正当な対応かはアレですが… 目的がログなくすことだったので log4j でフィルタするよりは元を断つべきかな、と。
hiveの出力抑制
hive につなぐとき以下の SLF4J メッセージが出るように。jobの実行等には問題はないので、出力させたくないなら /usr/lib/zookeeper/lib/slf4j-log4j12-1.6.1.jar を退避すればOKです。
hdfsのホームディレクトリ
/etc/passwd のhdfsユーザがこんな感じなのですが/usr/lib/hadoop-0.20 ディレクトリがないとHDFSが起動しなくなりました。
CDH3からアップグレードし続けている弊害と思われます。
たいしたことじゃないのでディレクトリを作成して回避しました。usermodでもいいと思います。
NameNodeのhosts
名前解決の方法が変わった部分があるのか、以下のようなエラーにより、HDFSのsafemodeが解除されない状態になりました。NameNode
DataNode
これはNameNodeの /etc/hosts に DataNode のリストを載せることで解決しました。ちなみに、Hadoop的に必要だったので元々DNSで正引きできるようにしてありましたが、それでは不足なようで。
HiveMetastore
Hive 0.10 でスキーマがだいぶ変わってるから気をつけようねって話。事件当時の思ひ出Tweet
ちゃんとジョブ止めたので何も起きなかったし、スキーマは基本見なくて大丈夫なところだけど、アップグレードクエリは気持ち確認しておいた方がいいですね。
hive load
load元と先に同じファイル名があったら上書きされてたのが、今回からエラーになったようです。どっちかっつーと正しい挙動になったような感じ。
今回はCDH4.4にしただけで、BigDataシステム的には何も変わってないのですが、Cloudera SearchがGAになって遊べるようになってるとか、Impalaもバージョンが上がってきてるとかあるし、あんま放っておくと追随するのがしんどくなるので、やっといて損はなかったかなーと。
Hadoopを教えるのは大変というか難しいけど、もう文献は揃ってるし、Hadoopの完全分散環境を作るのにOpenStackがあるととても練習してもらいやすいしで、だいぶ進行がスムーズなこの頃。安定過ぎてまたガツンと何かをやりたい気分がモヤリ。