SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2013】セッションレポート(AD)

【デブサミ2013】14-A-2 レポート
AmebaのスマートフォンプラットフォームにHBaseを採用した理由、そして得た知見

  • X ポスト
  • このエントリーをはてなブックマークに追加

 サイバーエージェントでは昨年、『デカグラフ』構想のもとにAmebaのスマートフォンプラットフォームをリリースした。この構想を実現するにはユーザー同士のつながりを効率よく管理する必要がある。それを実現するため、採用されたのが列指向分散データベース『HBase』である。なぜHBaseを選んだのか。その開発・運用を通してどんな知見が得られたのか。サイバーエージェントの鈴木俊裕氏が解説した。

  • X ポスト
  • このエントリーをはてなブックマークに追加

株式会社サイバーエージェント 鈴木俊裕氏
株式会社サイバーエージェント 鈴木俊裕氏

大量データの書き込みに最適な『HBase』。RDBとの違いとは

 「AmebaにおけるHBaseの導入事例を紹介する前に、まずはHBaseについて簡単に説明したい」──。冒頭でこう切り出したのはサイバーエージェントでHadoopを使ったログ解析基盤およびHBaseをつかった基盤システムの開発・運用を手掛けている鈴木氏である。続けて同氏は「HBaseを使ったことがある方」と参加者に問いかけた。すると手を挙げたのは2~3割。「意外に多い」と少し驚いた表情をみせ、鈴木氏はHBaseの解説を始めた。

 HBaseとはNoSQLのひとつで、Google基盤ソフトウェアである『Bigtable』のオープンソースクローンである。

 「一言で表すと分散ストレージ。その特徴は高可用性、高パフォーマンス。そしてデータモデルは多次元ソートマップであること」と鈴木氏。またHBaseの使いどころとして最適なのは、『大量のデータがあるとき』だという。HBaseのAuto Shardingという機能により、「データが自動的に分割され、負荷分散される。これにより、大量データに対する運用コストの削減が可能になる」(鈴木氏)という。

 鈴木氏はHBaseのアーキテクチャについても次のように説明する。

 「HBaseのアーキテクチャはマスタ型。HMasterとHRegionServerという2種類のプロセスがあり、マスタであるHMasterがHRegionServerの管理やコーディネーションをする」

 クライアント直接やり取りするのはHRegionServerである。「HMasterに負荷が集中することがないため、HMasterがボトルネックにならない」(鈴木氏)という。そしてデータは分散ファイルシステムであるHDFS(Hadoop Distributed File System)に保存される。つまりHBaseの信頼性は、HDFSに依存しているというわけだ。

 次に鈴木氏が説明したのはHBaseのデータモデルである。HBaseはテーブルのカラムにバリュー(値)を格納する、RowKey(RDBの主キー)や辞書順でソートされている点はRDBと似ているが、少し異なるところがある、と言う。それは「カラムはカラムファミリーによってグルーピングされていること、値は複数バージョン持てるところだ」と鈴木氏。そのほかにも、データ分割はRegion単位で分割されること、Rowの更新処理はアトミックに行われること、データファイル数はカラムファミリー×リージョン数となること(列指向データフォーマット)、カラムファミリーはI/Oを分割したいときに使われることも異なる点だ。またHBaseの特徴として鈴木氏は「カラムファミリーはあらかじめ定義しておくこと、カラムは後から追加できること」と挙げる。

 HBaseの設計の考え方もRDBとは異なる。HBaseではRowKeyの範囲でRegionに分割されて負荷分散される。そのため、Rowkeyの設計次第で負荷やデータ量が偏ることもあるという。またRowkeyで辞書順にソートされているHBaseでは、連続したRowはScanでまとめてとることができる。したがって「一度に取りたいデータは連続して 置いておくこと」も設計する上では重要なポイントだ。そのほかにもRowのカラムはいくらでも増やすことができる、更新処理がアトミック、Joinがないので非正規化がほぼ前提となる、クエリに対してスキーマが決まる、などという点を考慮して設計をしなければならない、と指摘。「さらなる詳細を知りたい場合は、CodeZineの連載『初めてのHBase』を読んでほしい」(鈴木氏)。

RDBと少し異なるHBaseのデータモデル
RDBと少し異なるHBaseのデータモデル

次のページ
Amebaのスマートフォン向けプラットフォームをHBaseで構築

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2013】セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7037 2013/03/22 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング