goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

HBaseを読む(5)ストレージAPI,HFileなど

2012-08-26 12:08:02 | AI・BigData
NHNカンファレンスでもらったHBaseの本を、ざっと斜め読みして、適当にまとめるシリーズ「HBaseを読む」の続きです。

ちゃんとした情報を知りたい人は、HBaseの本を見てください。

今回は、1.4章後半と1.5章




1.4.4 ストレージAPI

 ストレージAPI
   テーブルや列ファミリの生成/削除
   テーブルや列ファミリのメタデータの変更
     →圧縮、ブロックサイズ
   値の生成や削除
   行キーに対する値の取得

 スキャンAPI
   指定した範囲の行に対する繰り返し処理を効率的に
   セルのバージョン数制限
   フィルターを使って列をマッチ
   特定の期間内のバージョンを得られる
     →開始時間と終了時間を指定して

 より高度な機能
   単一行に対するトランザクション
   単一の行キーの下で保存されているデータに対する
     読み出し-変更-書き込みの
     アトミックなシーケンス
   セルの値:アトミックに更新できる
     カウンターとして解釈
   クライアントから提供したコードをサーバーで実行
     コプロセッサ
     軽量なバッチジョブの実装
     様々な演算子に基づくデータの解釈や集約
     バージョン0.91からHBaseへ

 MapReduceフレームワークと結合されている
 アクセスは、クライアント側のAPIを通じて、純粋に命令的に行われる


1.4.5 実装

HFile:データ保存用のファイル群
  キーと値からなる永続化された順序つきの
    イミュータブルなMap
  内部的にはブロックの並び
  ブロックのインデックスが末尾に保存
  デフォルトのブロックサイズは64K
  APIを提供
    特定の値にアクセスするAPIや
    指定された開始及び終了キーの範囲内にある値をスキャンするAPI

 すべてのHFileにはブロックインデックスがある
   →ルックアップを行うのに必要なシークは1回だけ
 保存用のファイル:通常HDFSに保存
 更新されたデータ
   コミットログに書き込まれる
     →HBaseではこのログをライトアヘッドログ(WAL)と呼ぶ
   メモリ内のmemstoreに保存され
   最大値を超えると、HFileとしてディスク書き出し
     →memstoreは交代制
       新しいmemstore:更新受付
       古いmemstore:ファイルに変換
   memstore内のデータは、キーでソート済み

 ローカリティの性質
   関連しあうデータを一緒に纏めておくには、キーを指定しないといけない

 保存用のファイル
   イミュータブル
   削除:削除マーカー(墓石マーカー)が書かれる
   データを読み出しなおす:memstoreの保存内容のマージ
       WALは使われない(サーバークラッシュのとき使う)

 コンパクション
   memstoreのディスク書き出し→多量のHFile→1つのファイルにする
   2種類
     マイナーコンパクション
     メジャーコンパクション
   メジャーコンパクション
     すべのキー、値ペアがスキャン
     削除エントリを削除マーカー含め消去
       predicate deletes処理

 このアーキテクチャ:LMSツリーから
   バックグラウンドで実行されるコンパクション
     →LMSツリーのマージ

HBaseの構成
  クライアントライブラリ
  1つのマスターサーバー
  多くのリージョンサーバー

 マスターサーバー
   リージョンの割当に責任
   高い信頼性と可用性
     →永続化分散強調サービスのApache ZooKeeper利用
   リージョンのロードバランシングの調整
   クラスタの状態管理
   メタデータの処理:
     →スキーマ変更、テーブル・列ファミリの生成

 リージョンサーバー
   リージョンに対する読み書きリクエスト
   リージョンの分割

コラム:Apache ZooKeeper
 GoogleのChubbyに相当
 所有権の調停、サービスの登録、更新の監視
 リージョンサーバー:一時ノードを作成
 マスターサーバー:利用可能なサーバの検索
 HBaseでは、以下の目的にも利用
   動作中のマスターが1つしなかい確認
   開始地点の保存
   リージョンサーバーの登録


1.4.6 まとめ

Bigdataのストレージアーキテクチャ:ペタバイト級までスケール
列指向のアーキテクチャ→HBaseの強力な一貫性
マルチバージョニング




1.5 HBase:Hadoopデータベース

1.5.1 歴史

2006年11月 Bigtableの論文
2007年 2月 HBaseの初期プロトタイプ
2011年 1月 HBase0.90.0リリース
2011年 中頃 0.92.0リリース

HBaseの開発者たち:Hadoopと歩調を合わせるのをやめた
  →0.20.xから0.89.xという明らかなジャンプ

1.5.2 用語

HBaseとBigtableでことなる
 ・リージョン(tablet)、
  マイナーコンパクション・フラッシュ
  ライトアヘッドログ(コミットログ)
  Memstore(memtable)
  HFile(SSTable)
  Zookeeper(Chubby)
    など


1.5.3 まとめ

HBase
・一貫性をもつ永続的ストレージシステム
・列ファミリ:圧縮
・柔軟なセカンダリインデックス
・Push-down predication
・行のアトミック性と読み出し-修正-書き込み
・スケーラビリティははじめから考慮
・バランス取り直し、シャード:自動化




来週から2章。
2章以降は、もっと手を抜いていきます。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする