HBaseCon2013参加レポート(後編) | サイバーエージェント 公式エンジニアブログ
こんにちは、Amebaでカレーを探求している飯島です。
前編に引続きHBaseCon 2013のレポートです。

全部で40以上あるセッションのうち、15ほどを聞いたのですが、後編は次の3つのテーマに絞ってレポートさせていたただきます。

1. HBaseエコシステム
2. Kiji Project
3. Flume HBase sink

1. HBase エコシステム

General Sessionの中で出てきたHBaseエコシステムに触れると、今年のHBaseConのセッションのいくつかを紹介できるのでまずHBaseエコシステムについて書きます。



Hadoopエコシステムの1つとしてHBaseがあるわけですが、そのHBase自身のエコシステムも発展してきています。まず、SQLライクなクエリでHBaseにアクセスできるオープンソースプロダクトとして、ClouderaのImpala、SalesForceのPhoenix、Apache Drillといったものがあります。今回それぞれ本カンファレンスでセッションがありました。

Impala はデータサイエンティストがHadoop上のデータをインタラクティブに解析できることを目指したクエリエンジンで、HBase・HDFSの両方をサポートしています。高速に動作するようC++で開発されており、クエリがHiveQLがベースなので、Hiveを使っているなら馴染みやすいと思います。

Phoenix はJDBCドライバーを組み込んでいて、HBaseネイティブのスピードで動くようSQLを最適化しています。key filterを使えば1億ものRowにアクセスする場合でも低レイテンシで動作します。Salesforceが開発したものでこれもオープンソース化されています。

Apache Drill はApacheのオープンソースコミュニティで発展してきているものですが、バージョンもまだAlphaで上の2つに比べたらまだ発展途上な印象があります。

ちなみに、HortonworksのセッションであったようにHive HBase IntegrationによりHiveからHBaseにアクセスする方法もあります。こちらPhoenixのセッションで検証結果がありましたが、パフォーマンスはあまりよくないようです。

次に、監視システム周りでは、OpenTSDB、Hannibalといったものがあります。

OpenTSDB はHBaseをDBとしている監視ツールでサーバの各種メトリクスをグラフ化できます。Ganglia、Cacti、Muninなど従来の監視ツールではRRDsやFlat filesを使っていて何百台もサーバが監視対象だとスケールしにくいモデルでしたが、OpenTSDBはHBaseを利用しているので容易にスケールします。従来のPollingするタイプではなく、監視対象のサーバからHAProxyにPushするというのも特徴の1つです。

また今回、Hannibalのセッションはなかったですが、RegionのSplit状況をヴィジュアル化してHBaseクラスタの維持管理を容易にするHannibalというオープンソースプロダクトもあります。ちなみにScalaでできています。

その他として、LilyはHBase, Hadoop, Solrなどの大量データを統合的に管理できるようなOne-Stopなデータマネジメントプラットフォームで、APIなどでデータにアクセスできるようです。

また、HadoopやHBaseにログなどのファイルデータを連続的に流し込むFlumeもHadoopエコシステムの1つであり広い意味でHBaseエコシステムの1つとも言えるでしょう。

そして、HBaseを活用してデータの収集や解析、予測モデルなどを作れるフレームワークが出てきました。それが次に紹介するKiji Projectです。


2. Kiji Project

Kiji Projectはリアルタイムな Bigg Data アプリケーションのフレームワークとのことで、REST API、HiveやMapReduceなどのバッチ処理の仕組みなどいくつものコンポーネントがこのフレームワークに揃っていますこれを使うとデータの保存場所としてベストプラクティスでHBaseを利用できて、リアルタイムに大量データを使うようなアプリの開発が容易にできるそうです。



コンポーネントの1つとして、Kiji Schema はKiji Projectで最初に公開されたもので、Avroシリアライゼーションを使って構造化・非構造化データをHBase上で扱う仕組みを提供してくれるようです。

また、Kiji BentoBoxなるものを提供していて(プロダクト名などなぜ日本語(ローマ字)なのかは不明…)、これをインストールすると、HadoopやHBaseを直接インストールすることなく、HBaseミニクラスタ上で Kiji Schema を使うことができます。

…という説明をしても伝わりにくいので、15分でできるからぜひ使ってみてとのことなので、興味ある人は実際に使ってみる方が早いでしょう。 → Kiji BentoBox

また、Kiji ExpressというコンポーネントはPMML(Predictive Model Markup Language)ファイルをImportできるので、データサイエンティストが他のフレームワークで作った予測モデルでも取り込むことができるようです。

大量のデータからレコメンデーション、パーソナライゼーションなど何かしらモデルを表現するフレームワークとしても役立ちそうです。

3. Flume HBase Sink

私がFlumeを使ったプロジェクトに関わっているので、Flumeの
HBase sinkのセッションについて触れておきます。ログなど連続的に発生するデータをストリームとしてHDFSやHBaseに流し込むのに使えるのがFlumeです。


Flume Agentを経由してデータを転送したりするわけですが、最終的にHBaseに保存する方法はHBase sink と非同期版のAsync HBase sinkの2つがあります。どちらもデフォルトで用意されているserializerがあるのでそれを使って連続的に流れてくるデータをHBaseのデータ構造に変換できます。また、デフォルトのserializerをフォークして作り込むことでHBaseで利用したいデータ構造にカスタマイズして保存することもできます。

2つの違いとしては、HBase sinkはセキュリティ面でケルベロス認証をサポートしているのに対し、Async HBase sinkはサポートしていません。しかし、非同期で処理をするAsync HBase sinkの方が高スループットで大量データを扱うのにより適しています。

余談ですが弊社でも、アナリストが見る社内ツールでユーザの課金状況のリアルタイムな反映や、ログをリアルタイムにチェックするのにこのHBase sinkを使っていたりします。

ちなみに、Flumeのその他詳しい使い方も含め 公式ユーザガイド が凄く参考になります。


1dayのカンファレンスでしたが、とても濃厚で刺激的な時間を過ごすことができました。
それにしても先日のQConのレポートでも同じようでしたが、食事がホテルクオリティの朝・昼・晩の3食ドリンク付き、セッション後のパーティでもちろんお酒も用意されていてとても豪華なカンファレンスでした。きっとこの手のカンファレンスの参加費の半分くらいは食事代なのでしょうw お寿司が意外に美味しかったです。