Cloudera Manager Advent Calendar 2015の24日目の記事になります。
はじめに
株式会社サイバーエージェントの秋葉原ラボに所属している梅田と申します。
普段はHBaseクラスタの運用したり、HBaseを用いたグラフデータベースの開発・運用をしていたりします。
今年1月に共著でHBaseの入門書を出したりしました。
弊社では複数のHBaseクラスタを運用していますが、Cloudera Managerで管理していたり、自力(気合)で管理していたりします。
Cloudera Managerは優れもので、無料版であるClondera Expressエディションでもそれなりに運用できます。
ただし、Clondera Enterpriseエディションでないとローリングリスタート機能が使えなかったりします。
設定変更などをオンラインで行う上でローリングリスタート機能がないと結構不便なので、Cloudera Manager APIを用いたローリングリスタートスクリプトを作ってみたので紹介してみたいと思います。
Cloudera Manager API
Cloudera Managerには、Cloudera Manager APIというAPIが用意されており、ほとんどの操作をAPI経由で実行することができます。
さらにこのAPIのクライアントとして、JavaクライアントやPythonクライアントが用意されています。
今回は、pythonクライアントを用いてローリングリスタートスクリプトを作りました。
クライアントの詳細な情報については以下を参照してください。
ローリングリスタートスクリプトの概要
私が管理しているクラスタは、基本的にはHDFS、HBase、YARN、Zookeeperで構成されています。
このうち、HDFS、HBase、YARNについてはちょくちょく設定変更するため、ローリングリスタートスクリプトではこれらのプロセスを再起動する仕様にしています。
スクリプトの概要は以下になります。
-
HBase関連のプロセス再起動
- Masterプロセスの再起動
- RegionServerプロセスの再起動
- プロセス停止前にRegionのunloadを行う
- プロセス開始後にRegionのloadを行う
-
HDFS関連のプロセス再起動
- NameNodeのプロセス再起動
- NameNodeのフェイルオーバも行う
- DataNodeのプロセス再起動
- NameNodeのプロセス再起動
-
YARN関連のプロセス再起動
- ResourceManagerのプロセス再起動
- NodeManagerのプロセス再起動
- HistoryServerのプロセス再起動
前提条件
- CDH5のクラスタのみ対象
- NameNodeがHA化されていること
ローリングリスタートスクリプト
gitで公開しているので、興味のあって実験できる環境を持っている方は動かしてみてください。
インストール方法については、READMEを参照してください。
※ 残念ながら動作保証はできません。自己責任でお願いします。
おわりに
Cloudera Manager APIの活用方法の一例として、自作のローリングリスタート機能を紹介しました。
もうちょっと頑張れば、ローリングアップグレードもできるようになるんじゃないかと思っています。
今後もいろいろ試していこうと思います。