Cloudera Managerで手軽にNorikraを試す

NorikraをCloudera Managerの管理下に置き手軽に試すためのCSD/Parcelを作りました。NorikraとはSQLでストリーム処理を行えるOSSで、いくつかの制約はありますが、大量のログを低レイテンシで処理することができます。

NorikraはJRubyで実装されているのでgemコマンドでインストールすればすぐ使うことが出来る反面、そもそも標準パッケージにJRubyがないのでインストールが面倒だったり、他のHadoopのコンポーネントはそもそもCloudera Managerで管理しているので、Norikraだけ管理が違うのなんかやだなあ、ということでCloudera Managerで管理できるようにしてみました。

Cloudera Managerとは?

Cloudera社が開発しているCDHというHadoopディストリビュージョン用の管理ツールです。Webコンソールからサービスの追加削除、起動停止、監視や障害検知など運用に関するほぼ全てを行うことができます。管理用のREST APIも用意されているので内製の管理ツールとの連携も簡単です。

Cloudera Managerのバージョン5.0.0以降からアドオンサービスが利用できるようになりました。Custom Service Descriptor(CSD)と呼ばれるサービスの動作を定義したパッケージと、Parcelと呼ばれるサービスのファイル一式が入ったパッケージを用意すれば、Clouderaが提供しているHadoop関連のサービス以外でもCloudera Manager上でサービスの管理ができるようになります。

今回はこの仕組を使ってNorikraを管理できるようにしました。

インストール

まずCloudera Managerのインストールされているホストの/opt/cloudera/csdにNorikraのCSDを配備します。

wget -P /opt/cloudera/csd https://nagaseyasuhito.github.io/norikra-csd/NORIKRA-1.0.5-cdh5.1.0.p0.4.jar

次に配備したパッケージをCloudera Managerにインストールします。REST APIっぽいですが、URIがほかのREST APIのエンドポイントとは違うんですよね。以下のURLにアクセスします。

http://<<Cloudera Manager Server>>:7180/cmf/csd/install?csdName=NORIKRA

レスポンスが

{"data":null,"message":"OK"}

であれば正常にインストールができています。Parcelのステータスを確認してみましょう。

http://<<Cloudera Manager Server>>:7180/cmf/parcel/status

cloudera-manager-04他のサービスと同様にNorikraのサービスがDownloadableのステータスになっています。ダウンロード後Distribute、Activateすれば準備は完了です。

cloudera-manager-05クラスターのAdd a ServiceからNorikraを選択してインストールできます。

コマンド(jruby, norikra, norikra-client)も合わせてインストールされます。起動終了はもちろんのこと、サービスページからNorikra Web UIへのリンク、設定画面ではPort Number、Threading TypeやStats File Pathなども変更できる上、ログもCloudera Manager上で確認できるので、標準的な範囲での利用はとりあえず事足りるのではないでしょうか。

まとめ

足りない設定や不具合など見つけたらPull Requestお待ちしています。コードはこちら
https://github.com/nagaseyasuhito/norikra-csd
https://github.com/nagaseyasuhito/norikra-parcel

近々PrestoのCSD/Parcelも作ろうかと思います。