How to upgrade from CDH3 to CDH4 for Debian

イベント2つを経て、何から書くか迷うところですが、先に @tagomoris との約束を果たすためにCDH3からCDH4への具体的なアップグレード手順を紹介します。

この約束を果たすと、@ryu_kobayashi が Huahin Framework をCDH4対応してくれるというパーフェクトフローになっておりますが、JobTrackerがResourceManagerになってるので大変そうですね!



はじめに

公式

  • CDH4 Installation
  • Upgrading from CDH3 to CDH4
  • Deprecated Properties

  • 過去記事

  • Upgrade CDH3 to CDH4 注意点その1
  • Upgrade CDH3 to CDH4 注意点その2

  • OSについて

    Debian Squeeze です。LennyにはCDH4は存在しませんし、無理矢理もほぼ不可能です。
    CentOSとかはパッケージ操作が違うだけのはずなので、適当に変換してください。

    MapReduceについて

    当然、YARNです。

    設定ファイルについて

    どのように設定ファイルを編集したかは紹介しますが、絶対に物足りないので、別途次の記事で実際に使っている設定も紹介したいと思います。

    気合で description に日本語説明を残してあるので結構需要があるはず。

    ディレクトリパスなど

    ホスト名・ディレクトリ名・ファイルパスなどは空気を読んで脳内変換をお願いします。
    ここでは基本的なデータディレクトリを /data 、SLAVEの複数HDDを /disk/1, /disk/2, … としています。

    冗長化構成について

    NameNodeやJobTrackerはDRBDなどで冗長化しているかもですが、その部分は抜いて説明します。

    CDH3停止と削除

    先に監視アラートを止めておいたり、政治的な手続きは済ませておいてください。

    全ノードの停止

    HadoopのMaster,Slaveサーバ全台で実行します。

    NameNodeでバックアップ

    SecondaryNameNodeでバックアップ

    石橋を叩く。

    Fuseアンマウント

    マウントしてるサーバ全台で解除しておきます。

    Hive Metastoreでバックアップ

    全Hadoopでパッケージ削除

    sources.list 更新

    cdh3行を削除しておきます。

    CDH4インストール

    Hadoop全台で実行します。

    APT設定

    パッケージインストール

    hadoopパッケージ以外は必要に応じて。avahiはログイン遅延回避のため削除。

    Hive用jdbc

    設定ディレクトリを作成

    既存のパスを利用する場合は一度 mv でどけておいたほうがよいです。
    CentOSの場合は /usr/sbin/alternatives になっています。

    ディレクトリ作成

    HDFS, MapReduce, ログ用のディレクトリはCDH3のをそのまま利用します。
    YARN用のディレクトリはSLAVEサーバの分散HDD配下に必要とするので後で作ります。

    ulimit

    パッケージにより /etc/security/limits.d/ に色々入るので確認しておきます。

    pseudoを用意する

    適当な仮想環境にでもpseudoで擬似分散環境を作成しておきます。pseudoは正常に動くので、困ったときに見比べたり設定検証をするとよいです。多分、ないと厳しいです。

    設定

    ファイル構成

    /etc/hadoop/conf/ 配下のファイル構成は、pseudoを参考にしてください。デフォだと余計なのが入って動かない、とか注意点があります。

    で、そこに対して古い site.xml を上書きして編集する形がよろしいかと・・・

    CDH3からCDH4への変換方法

    プロパティ名の違いはこちらに記載されています。
  • Deprecated Properties

  • このリストをvim置換コマンドに変換したものがこちらになります。
  • cdh3DeprecatedProperties2cdh4

  • このコマンドをCDH3の core-site.xml, hdfs-site.xml, mapred-site.xml に対して実行し、新規に yarn-site.xml を作成すれば完了となります。ただし、過去記事にも書いた通り、Hiveなどは古い設定を必要としていたりするので、これだけだと期待通りに動かなくなります。

    そのため、いったん変換後の設定で動かして足りない分を補足していくか、1つのファイルに変換前+変換後の設定両方を記載してあとで削っていくかのどちらかになります。

    具体的な設定

    私はいったん変換して、あとから補足していきました。その仕上がった具体的な設定については、多いので次の記事で紹介します。(後でリンクもはっておきます)

    仮想環境の場合、設定の配布ができたら、ここまでの状態をイメージでとっておくと他が楽になります。

    NameNodeのインストール

    HDFSメタデータを更新します。

    ログの確認をします。

    起動しなかったら原因を解決してから起動します。

    管理画面の確認をします。

  • http://hostname-of-namenode:50070/

  • /static/hadoop.css がないのでデザインが変なのはご愛嬌。
    https://issues.apache.org/jira/browse/HDFS-2608


    SecondaryNameNodeのインストール

    まず、元のデータをどけておきます。そうしないと、おそらくVERSIONファイルの食い違いによって同期エラーとなります。

    インストールします。

    ログの確認をします。

    起動しなかったら原因を解決してから起動します。

    管理画面の確認をします。

  • http://hostname-of-secondarynamenode:50090/

  • DataNode / NodeManager のインストール

    SLAVEサーバ全台で実行します。
    yarn.nodemanager.local-dirsyarn.nodemanager.log-dirs のディレクトリを作成します。/disk/1, /disk/2, … というディスクに対しての内容です。HDFS, Mapred はCDH3用のをそのまま使います。

    CDH3のログが邪魔なら削除しておきます。

    インストールします。

    ログの確認をします。

    失敗したら修正して起動します。


    HDFSディレクトリ作成

    YARN用のHDFSディレクトリを作成しておきます。

    ResourceManagerのインストール

    JobTrackerはResourceManagerとHistoryServerに分れましたが、一緒のサーバにいれても分けても問題無いです。

    ログの確認をします。

    失敗したら修正して起動します。

    管理画面を確認します。

  • ResourceManager : http://hostname-of-job:8088/
  • HistoryServer : http://hostname-of-job:19888/

  • Hive Metastoreのschemaアップグレード


    Fuseインストール

    CDH3と変りません。

    起動時設定。
    /etc/fstab

    ジョブ実行テスト

    実行してResouceManagerやHistoryServerの管理画面に形跡が残っていればOK。

    成功したらHiveも実行してみる。



    他のエコシステム入れてたり、環境によって色々違うと思いますが、Hadoop+Hiveだとこんな感じということで。。公式の説明を元に進めて、少し補足しただけの内容ですが、設定ファイル以外はほとんど困ることはありませんでした。

    ということで次回は出血大サービスで外道式CDH4設定を紹介したいと思います。