« Amazon S3 - オブジェクト数が1兆個に! | メイン | Amazon Elastic MapReduceにてHive 0.8.1が利用可能になりました! »

Apache HBaseがAmazon Elastic MapReduce上で利用可能に!

HBaseとは?
AWSは既に様々なストレージとデータ処理のオプションをご提供してきました。本日非常に大事な新機能の追加を発表します。

たった今より、AWS上で膨大な量のデータ(10億行で1行毎に数億のカラムがあるような場合を想像してみてください)を処理するためにApache HBaseを利用できるようになりました!HBaseは以下にあげるような数々の強力な機能を利用できます:

  • 強い一貫性を持つ読み込みと書き込み
  • 高いライトスループット
  • テーブルの自動シャーディング
  • スパースなデータの効率的な保存
  • インメモリ操作を伴う低レイテンシでのデータアクセス
  • Hadoopジョブへのダイレクトな入出力
  • SQLライクなクエリ言語Apache Hiveを使ったHBaseテーブル、ジョイン、JDBCサポート

HBaseは元々Apache Hadoopプロジェクトの一部で、今回の発表でAmazon Elastic MapReduce上で動かすことが出来るようになりました!コマンドラインまたはAWSマネージメントコンソールからHBase(バージョン0.92.0)をロウンチすることが出来ます。

HBase実践
HBaseは低レイテンシな検索とレンジスキャンに最適化されており、また各レコードの効率的な更新と削除も行えます。以下のような事がHBaseを使うことで実現できます:

Hadoopを使った解析へのデータ参照 - HBaseはHadoopとHiveと連携できるので、Hadoop上に保存したデータへの高速なアクセスを提供できます。そのため、単一または複数Hadoopクラスタ上で展開される単一または複数ジョブで使われる参照データをHBaseに保存するのはよいアイデアです。

ログ保存とバッチ解析 - HBaseは簡単にリアルタイムでのログデータ保存を実現できるます。これは高い書き込みのスループットと効率的なスパースデータの保存機構によって成し遂げられています。HBaseと、Hadoopのシーケンシャルな読み込みとスキャンに高度に最適化された能力と併用することによって、ログ分析のための非常に強力なツールとなります。

多用するカウンターとサマリーデータのためのストレージ - HBaseは強い一貫性の読み込みと書き込みに加えて、非常に高い頻度の更新(クラシックなread-modify-writeです)をサポートしています。これら機能はカウンターやサマリーデータの保存に最適です。max-minやsum、average、group-byなどの複雑な集合操作はHadoopジョブとして実行され、結果はHBaseテーブルに書き戻されます。

残念ながら今回のリリースのHBase on EMRは現状単一アベイラビリティゾーンで実行されるので、データの堅牢性は必ずしも保証されない事はお伝えしておかなくてはいけません。HBaseクラスタに保存されたデータはクラスタのマスターノードが障害があった場合に損失する可能性がまだ残されています。そのため、HBaseはサマリーデータかセカンダリデータの保存先として使うか、または下記にあるバックアップ機能を使うことを検討してください。

これら(と更に他にも)はHBase on AWSで実現可能です。得られる利点としては:

退屈で単調な仕事からの解放- よりお客様と自社のビジネスのためにフォーカス出来ます。HBaseクラスターをもう1からセットアップして、管理して、チューニングする必要はありません。Elastic MapReduceがEC2のプロビジョニング、セキュリティ設定、HBaseそのものの設定、ログ集約、ヘルスチェック、そして障害時のインスタンスの交換などを行ってくれます。また、1回のAPIコールでHBaseクラスターのサイズを拡張する事さえ出来るのです。

バックアップとリカバリー機能 - HBaseからAmazon S3へのデータのフルバックアップと差分バックアップの機能を提供します。既存クラスター上にバックアップデータからロールバックしたり、バックアップからリストアして新規に起動したクラスターを動かす事も出来ます。

AWSサービスとのシームレスな連携 - HBase on EMRはS3や、DynamoDBEC2, そしてCloudWatchなどのAWS各種サービスと容易かつシームレスに連携できるように設計されています。

さあ始めましょう!
では始めてみましょう。HBase on EMRはEMRクラスタ作成時にコマンドラインで--hbaseオプションを渡すだけで実行できます:

$ elastic-mapreduce --create --hbase --name "Shinpei's HBase Cluster" --num-instances 2 --instance-type m1.large

AWSマネージメントコンソール上のCreate New Clusterページでも同様の事が出来ます:

HBaseジョブフローをコンソール上から作成するときに、既存バックアップからリストアするか、または今後のバックアップスケジュールを作成できます:

アドバンスドトピック
以下に、幾つかのアドバンスドな機能と設定をご紹介しておきます:

EMRブートストラップアクションを使って、クラスター起動時にHBase設定を変更することが出来ます。例えば、最大ファイルサイズ(hbase.hregion.max.filesize)やメモリ上のデータ構造であるmemstoreの最大サイズ (hbase.regionserver.global.memstore.upperLimit)を変更できます。

全てのElastic MapReduceジョブフローで生成される標準的なCloudWatchメトリクスをHBaseクラスタでも利用して監視をすることが出来ます。また、Gangliaをインストールする事が出来ます。事前に定義されたブートストラップアクション (install-gangliaconfigure-hbase-for-ganglia)の両方をクラスター起動時に実行する必要があります。今後、HBase固有のメトリクスを追加していく予定です。

Apache HiveをHBaseと同一クラスター、または別のクラスターにインストールして利用することが出来ます。HiveはHBaseとHiveテーブルに透過的にクエリーを実行することが出来ます。ただし、同一クラスターでHBaseとHiveを動かす場合には、注意が必要な点を申し上げておきます。何故なら、HBaseはCPUインテンシブかつメモリインテンシブであり、一方その他の多くのMapReduceジョブはIOバウンドで一定のメモリ要求と散発的に発生するCPU利用があるためです。

この新しい強力な機能をぜひ楽しんでください!

大谷晋平(Facebook, Twitter)

PS - HBaseを実行するには追加のチャージはありません。今まで通りElastic MapReduceとEC2コストだけお支払いいただく形になります。

http://hadoop.apache.org/

コメント

トラックバック

この記事のトラックバックURL:
http://www.typepad.com/services/trackback/6a00d8341c534853ef016306823f59970d

Apache HBaseがAmazon Elastic MapReduce上で利用可能に!を参照しているブログ:

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31