CDH4.1のリリースがされたのでCDH4.0をアップグレードしてみました。
次の記事に書きますが、アップグレードとは別のところが原因で手間取ってしまったものの、CDH4.1へのアップグレードそのものは何も問題なくできたので、たいして楽しくない内容ですが記録しておきます。
アップグレード手順
リンク
DRBDなどの追加システムが無いものとして記述します。
全停止とバックアップ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# hdfs-fuseでマウントしてたらアンマウント fusermount -u /mnt/hadoop # 全Hadoop(MASTER,SLAVE,Client)で実行 for x in /etc/init.d/hadoop-* ; do $x stop ; done # NameNodeでバックアップ cd /data/hadoop/cache/hdfs/dfs/name/ tar czf /var/tmp/namenode20121004.tar.gz ./ # SecondaryNameNodeでバックアップ cd /data/hadoop/cache/hdfs/dfs/namesecondary/ tar czf /var/tmp/secondarynamenode-20121004.tar.gz ./ # Hive Metastoreでバックアップ mysqldump -u root -p hive_metastore > /var/tmp/hive_metastore-20121004.sql |
アップグレード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 全Hadoopで実行 # - ノードは自動起動するのでログを確認すること apt-get update apt-get -y --force-yes install hadoop hive # hdfs-fuseでマウント # - /etc/fstab に記述済みなら mount /mnt/hadoop # Hive Metadataのschemaアップグレード # - 中身が無いに等しいので実は不要 cd /usr/lib/hive/scripts/metastore/upgrade/mysql/ mysql -u hive -p hive_metastore mysql> SOURCE upgrade-0.8.0-to-0.9.0.mysql.sql; |
変更がなかった点
CDH4.0から4.1では、必要な変更がゼロでした。パッケージリポジトリ
CDH4.0から変わっていないので、そのまま apt-get update でOK。NameNodeメタデータ
CDH4 Beta2以降からの場合、upgrade不要。もし実行しちゃっても実害はないです。ローカル&HFDSディレクトリ
tmp や /user 、アプリケーションログのディレクトリは既にあるのでそのまま利用。何か新しいのを作る必要も特にありません。
Hiveメタデータ
一応アップグレード用のクエリファイルが用意されていますが、更新クエリは含まれていないので実行不要です。
1 2 3 |
$ cat /usr/lib/hive/scripts/metastore/upgrade/mysql/upgrade-0.8.0-to-0.9.0.mysql.sql SELECT 'Upgrading MetaStore schema from 0.8.0 to 0.9.0' AS ' '; SELECT 'Finished upgrading MetaStore schema from 0.8.0 to 0.9.0' AS ' '; |
バージョン互換性
CDH3の時は u3 と u4 の混在とかできませんでしたが、CDH4はパッケージリポジトリに変化がないので混在できそうだなーと思ってやってみたら、SLAVEだけ4.1にして起動してジョブの実行ができました。量が多いSLAVEだけ先にやっておけたら、いざMASTERの時に作業量が減っていいかなーと考えてやったのですが、素直に全停止から上手に並行して実行するのがよろしいかと。まだHiveの検証とかはきっちりやっていないですが、基本部分は平和でしたよ、ということで・・・
次の記事では手間取った理由について紹介します。