SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
HBase
   The Definitive Guide
5.Client API : Administrative Features
この章について

 この章では、スキーマに関する説明と、実際にスキーマやデータを
操作する為のAPIに関して説明している。

● Schema Definition
   ○ Tables
   ○ Table Properties
   ○ Column Families

● HBaseAdmin
   ○ Basic Operations
   ○ Table Operations
   ○ Schema Operations
   ○ Cluster Operations
   ○ Cluster Status Information
Schema Definition : Tables

HBaseのデータは全てテーブルに格納
テーブルはHTableDescriptorクラスを用いて操作
テーブルにはカラムファミリを定義
この章で説明する大半のクラス(APIを提供する)には、パラメータなしのコンストラクタ
が存在する。
これは、HadoopのWritableインターフェースを実装する事に起因する。
リモート間の通信を行うRPCフレームワークはWritableインターフェースを利用してお
り、write, readFieldsメソッドを実装している。
カスタムのHBaseのExtensionを作成する場合は、以下のルールを守る
 ● 送信/受信双方のRPC通信チャネルを利用可能にする。
 ● Writableインターフェースのwrite(), readFields()を実装する。
 ● パラメータのないコンストラクタを持つ。
Schema Definition : Tables

HTableDescriptor
  HtableDescriptorインスタンスかテーブル名から、テーブルを作
成
  パラメータなしのコンストラクタは、デシリアライズ用なので直接利
用するべきではない
  テーブル名はファイルパスで利用される為、ファイルパスに利用
できる文字でのみ指定可能
  カラム志向のHBaseでは、RDBMSのように多くのテーブルに分け
ず、1つのテーブルにたくさんの詳細情報を詰める
  RDBMSの正規化はHBaseには当てはまらない
Schema Definition : Table Properties

Name
  テーブル名の取得・設定
 ※テーブル名は[a-zA-Z_0-9-.]が利用可能だが、[.-]を最初にはできない。

Column families
  カラムファミリの追加・存在確認・取得・削除
  カラムファミリはHColumnDescriptorを使って扱う
  HColumnDescriptorに関しては後述(本ではP.212)
Schema Definition : Table Properties

Maximum file size
 リージョンの最大ファイルサイズを取得・設定(バイト単位)
 ※「Maxmum file size」とあるが、実際には、カラムファミリ毎作成されるファイルサイ
ズではなく、ストアのサイズを指定するので「maxStoreSize」の方が相応しい。
 設定したサイズを超えるとリージョンのスピリットが発生
 デフォルトは256MBになっているが、システム毎に適切なサイズ
を検討する事が必要

Read-only
  テーブルの読込専用を設定・状態確認
  デフォルトはfalse
Schema Definition : Table Properties

Memstore flush size
 データ書込時にディスクに描き込まず、メモリで処理するデータサ
イズの取得・設定
 デフォルトは64MB
 容量を大きくすれば、パフォーマンスは良くなるが、 障害時にフ
ラッシュされていないデータをWALから復旧する作業に時間がかか
る。

Deferred log flush
  WALの遅延書き込みを利用するかの設定
  デフォルトはfalse
Schema Definition : Table Properties

Miscellaneous option
  その他設定の取得・設定・削除
  ByteかStringでデータは設定するが、内部的には
ImmutableBytesWritableで保持
 例えば、Coprocessorの読み込み設定などに利用
Schema Definition : Column Families

HColumnDescriptorを使って、カラムファミリに対しての設定を行う
※カラムファミリのパラメータを定義している為、HColumnDescriptorというよりは、
HColumnFamilyDescriptorの方が相応しい。

カラムファミリーへの設定は、それに含まれる全てのカラムに適用さ
れる。
カラムは任意の数作成でき、以下のように「:」区切りでカラムファミ
リとカラムクオリファイアを分割して表現する。
family:qualifier
Schema Definition : Column Families

カラムファミリは、ディレクトリパスに利用される為、表示可能な文字
列で指定しなければならない。
※クオリファイアは省略して、カラムファミリだけで扱う事も可能です。
 他のカラムと同様に読み書きが可能であるが、他と区別する為にそれ以外のカラム
にはクオリファイア名を付ける必要がある。

HColumnDescriptorのインスタンスは、引数なし、カラムファミリ名、
カラムファミリの設定から作成する。
Schema Definition : Column Families

Name
  カラムファミリ名の取得
 ※カラムファミリ名の変更はできない。
  カラムファミリを変更したい場合は、カラムファミリを新規で追加し、データのコピー
を行うのが一般的である。
 ※カラムファミリ名には、[:/u0000-u001Fu007F-u009F]とISOに制御文字は利
用できず、[.-]を最初にはできない。

Maximum versions
 データを保持する世代数の取得・設定
 デフォルト3で最小は1
Schema Definition : Column Families

Compression
  圧縮アルゴリズムの設定・確認
  圧縮アルゴリズムは、[NONE][GZ][LZO][SNAPPY]の4種類が設
定でき、デフォルトは[NONE]、[NONE]だと圧縮なし、それ以外は、
記載されている圧縮アルゴリズムが利用される。
  圧縮の詳細は本のP.424参照
Schema Definition : Column Families

Block size
  ブロックサイズの取得・設定
  HBaseの保存ファイルは、RDBMSのページ同様に細かいブロッ
クに分割されて管理
 デフォルトは64KBで、バイト単位で設定
 ※HFileとHDFSのブロックサイズには重要な違いがある。
  MapReduceは分散・並列処理の為に大きなサイズ(デフォルト64MB)を指定してい
るが、HBaseのストレージファイルは効率的にロードし、ブロック操作のデータをキャッ
シュする為に、細かいサイズ(デフォルト64KB)を指定する。
Schema Definition : Column Families

Block cache
  HBaseのブロックキャッシュを有効を取得・設定
  HBaseは効率的なI/Oを行う為、一度読み込んだブロックを
キャッシュとしてメモリに保持し、再度読みこむ際はキャッシュを利
用
  デフォルトはtrueになっているが、特定のカラムファミリに対して、
シーケンシャルリードを行う場合には、設定をfalseにした方がよい。
Schema Definition : Column Families

Time-to-live
  データの生存期間の取得・設定
  指定された時間経過し、メジャーコンパクションが発生した際に
データを削除
  デフォルト値は、Ingteger.MAX_VALUEになっており、この設定の
際は、メジャーコンパクションが発生してもデータは削除されない
Schema Definition : Column Families

In-memory
   ブロックキャッシュのメモリロードの取得・設定
   デフォルトはFalseで、Trueに設定された場合、カラムファミリの全
てのブロックがメモリにロードされるかどうかは保証されない
   この設定はユーザテーブルのパスワードなど小さいカラムファイ
ミリには適する

Bloom filter
  Bloom filterの取得・設定
  デフォルトは[NONE]、[NONE][ROW][ROWCOL]が設定可能
  特定のアクセスパターンにおいて、データ参照時間が向上
  詳細は本のP.377を参照
Schema Definition : Column Families

Replication scope
  レプリケーションの有効化の取得・設定
  デフォルトは0で、レプリケーションしない
  レプリケーションの詳細は本のP.462参照

isLegalFamilyName
   カラムファミリ名のチェック
   ユーザがカラムファミリを入力するシステムの場合に、名前の正
当性を確認するのに利用
HBaseAdmin

HBaseAdmin
  管理系のタスクを実行するクライアントAPI
  RDBMSのDMLと類似した機能
  テーブル・カラムファミリの作成・存在確認・定義変更削除などの
操作が可能
HBaseAdmin : Basic Operations

クライアントAPIを利用するには、HBaseAdminクラスのインスタンス
を生成する必要がある
※このセクションのほとんどのメソッドはIOException(それと継承したExceptionを含
め)かInterruptedExceptionをThrowしますが、それは省略している。

既存のCofigurationインスタンスとAPIを用いれば、クライアントAPI
同様、クラスタの利用しているZookeeperの定数が分かる
HBaseAdminのインスタンスは不要になった場合、削除が必要
HBaseAdmin : Basic Operations

Abort
  強制中止の実行
  Frameworkから自動で呼ばれる為、ユーザが直接呼ぶべきでは
ない

getMaster
  マスタサーバに直接通信するRPCプロキシのインスタンスである
HMasterInterfaceを返却
  HBaseAdminクラスは、HMasterInterfaceのラッパーで提供する
機能は全て利用可能
 ※getMasterから返るHMasterInterfaceは直接利用せず、HbaseAdminクラスを利用
する。
HBaseAdmin : Basic Operations

isMasterRunning
  マスタサーバの稼働確認

getConnection
  本のP203にある、HConnectionインスタンスを返却

getConfiguration
  HBaseAdminインスタンスを生成する為のConfigurationインスタ
ンスを返却

close
   HBaseAdminのリソース解放とマスタサーバとの接続断
HBaseAdmin : Table Operations

CreateTable
  HTableDescriptorを用いて、テーブルを作成
  例にあるように、StartKey, EndKey, リージョン数を指定して
CreateTableを実行する事も可能
  StartKey, EndKeyは数値として解釈され、EndKeyはStartKeyよ
り大きい値を設定
  リージョン数は3以上を設定
  同様にSplitKeyを指定して、テーブルを作成する事も可能
  SplitKeyはByte列の配列で指定
HBaseAdmin : Table Operations

CreateTableAsync
  HTableDescriptorを用いて、非同期にテーブルを作成
 ※大半のテーブル関連の管理APIは非同期に実行される。
  同期メソッドも実際には、非同期のメソッドのラッパーで非同期メソッドの結果を
ループで待ち続けているだけである。
HBaseAdmin : Table Operations

TableExists
listTables
    テーブルの存在確認・一覧取得

deleteTable
  テーブルの削除
HBaseAdmin : Table Operations

disableTable
   テーブルを利用不可に設定
   テーブルの削除を行う前にこの操作を行う事が必要

enableTable
  利用不可にしたテーブルを再度利用可能に設定
HBaseAdmin : Table Operations

isTableEnabled
isTableDisabled
isTableAvailabled
   テーブルの利用可否や有効かどうかの確認
   EnableとAvailableの違いは、disable状態でも物理的に存在して
いて、ステータスに問題がなければavailable
HBaseAdmin : Table Operations

modifyTable
 テーブルの設定を変更
 HTableDescriptorを取得し、その設定を変更し、modifyTableに
てテーブルにHTableDescriptorを設定
 ※modifyTableは同期処理のメソッドはなく、必ず非同期で処理される。
  変更が全てのサーバに適用されたかは、getHTableDescriptorで取得したインタン
スとの比較で判断する。
HBaseAdmin : Schema Operations

HBaseAdminには、modifyTable以外にもテーブルスキーマの設定
を変更するメソッドがある。
ただし、modifyTableと同様に、テーブルの状態がDisabledに設定さ
れている必要がある。

addColumn
deleteColumn
modifyColumn
  カラムファミリの追加・削除・変更
HBaseAdmin : Cluster Operations

HBaseAdminのクラスタ関連のAPIは、ステータス確認・テーブルや
リージョンでのタスク実行
※多くの操作は、AdvancedUser向けなので利用には要注意

CheckHBaseAvailable
  利用しているクライアントアプリケーションが、リモートサーバと通
信できるか確認
  戻り値はvoidになっており、利用不可能な場合には、Exceptionが
Throwされ、利用可能時は正常終了
HBaseAdmin : Cluster Operations

getClusterStatus
  クラスターの情報取得
  クラスターの情報にアクセスする為のClusterStatusクラスに関し
ては後述

closeRegion
   リージョンサーバにデプロイされているリージョンを閉じる
   有効なテーブルのリージョンに対して、マスタから閲覧できない状
態にする
HBaseAdmin : Cluster Operations

flush
   リージョンサーバのMemStoreに保持されてflushされていない
データをflush

compact
  指定リージョン・テーブルでコンパクションを実行
  コンパクションは長い時間がかかる可能性がある為、必ず非同
期に実行
  テーブル名が指定された場合、該当テーブルの全リージョンでコ
ンパクションを実行
HBaseAdmin : Cluster Operations

majorCompact
 指定リージョン・テーブルでメジャーコンパクションを実行
 compactと同様、非同期で、テーブル名指定は、全リージョンが
対象

split
  指定リージョン・テーブルでスピリットを実行
  テーブル名が指定された場合、該当テーブルの全リージョンでス
ピリットを実行
  splitPointにて、RowKeyを指定する事が可能だが、不正な
RowKeyが指定された場合は、Exceptionが発生
HBaseAdmin : Cluster Operations

assign
unassign
  リージョンの設置・削除を実行
  forceオプションを付けると、既にassign/unassignを実行していて
も、さらに同じ操作を実行

move
 リージョンを指定したサーバへ移動
 destServerNameにNullを設定した場合は、ランダムなサーバへ
移動
HBaseAdmin : Cluster Operations

balanceSwitch
  バランサー機能のON/OFFを設定

balancer
  バランサー機能がONの時に実行されると、リージョンのバランシ
ングを実行
  バランシングに関しては、本のP.432を参照

shutDown
stopMaster
stopRegionServer
   クラス全体・マスタ・リージョンサーバを停止
HBaseAdmin : Cluster Status Information

getClusterStatusで取得した、ClusterStatusのインスタンスを利用
する事で、マスタサーバの保持するクラスタ情報を取得可能
setから始まるsetterメソッドも存在するが、ClusterStatusのインスタ
ンスのコピーでしかない為、変更する意味は特にない

ClusterStauts, ServerName, HServerLoad, RegionLoadクラスの
各メソッドで取得可能
バージョン・ID・名称・サイズなどの各種情報を取得可能

Weitere ähnliche Inhalte

Ähnlich wie H base chapter_5

Customization of DBIC::Schema::Loader
Customization of DBIC::Schema::LoaderCustomization of DBIC::Schema::Loader
Customization of DBIC::Schema::Loader
Toru Yamaguchi
 

Ähnlich wie H base chapter_5 (10)

Global Rule(変換・フィルターなど)の詳細
Global Rule(変換・フィルターなど)の詳細Global Rule(変換・フィルターなど)の詳細
Global Rule(変換・フィルターなど)の詳細
 
Apache Hive 紹介
Apache Hive 紹介Apache Hive 紹介
Apache Hive 紹介
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010
 
Qlik composeを利用したDWH構築の流れ
Qlik composeを利用したDWH構築の流れQlik composeを利用したDWH構築の流れ
Qlik composeを利用したDWH構築の流れ
 
Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)
 
svelte-ja.pdf
svelte-ja.pdfsvelte-ja.pdf
svelte-ja.pdf
 
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)
Qlik Replicateでのテーブル設定詳細(変換・フィルターなど)
 
SAP Application(DB)のソースエンドポイントとしての利用
SAP Application(DB)のソースエンドポイントとしての利用SAP Application(DB)のソースエンドポイントとしての利用
SAP Application(DB)のソースエンドポイントとしての利用
 
Customization of DBIC::Schema::Loader
Customization of DBIC::Schema::LoaderCustomization of DBIC::Schema::Loader
Customization of DBIC::Schema::Loader
 

Kürzlich hochgeladen

Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
Yasuyoshi Minehisa
 
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
Michael Rada
 

Kürzlich hochgeladen (8)

セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
 
company profile.pdf
company profile.pdfcompany profile.pdf
company profile.pdf
 
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
 
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
 
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
 
事例DBサービス紹介資料(Case Study DB service introduction)
事例DBサービス紹介資料(Case Study DB service introduction)事例DBサービス紹介資料(Case Study DB service introduction)
事例DBサービス紹介資料(Case Study DB service introduction)
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
 

H base chapter_5

  • 1. HBase The Definitive Guide 5.Client API : Administrative Features
  • 2. この章について  この章では、スキーマに関する説明と、実際にスキーマやデータを 操作する為のAPIに関して説明している。 ● Schema Definition ○ Tables ○ Table Properties ○ Column Families ● HBaseAdmin ○ Basic Operations ○ Table Operations ○ Schema Operations ○ Cluster Operations ○ Cluster Status Information
  • 3. Schema Definition : Tables HBaseのデータは全てテーブルに格納 テーブルはHTableDescriptorクラスを用いて操作 テーブルにはカラムファミリを定義 この章で説明する大半のクラス(APIを提供する)には、パラメータなしのコンストラクタ が存在する。 これは、HadoopのWritableインターフェースを実装する事に起因する。 リモート間の通信を行うRPCフレームワークはWritableインターフェースを利用してお り、write, readFieldsメソッドを実装している。 カスタムのHBaseのExtensionを作成する場合は、以下のルールを守る ● 送信/受信双方のRPC通信チャネルを利用可能にする。 ● Writableインターフェースのwrite(), readFields()を実装する。 ● パラメータのないコンストラクタを持つ。
  • 4. Schema Definition : Tables HTableDescriptor HtableDescriptorインスタンスかテーブル名から、テーブルを作 成 パラメータなしのコンストラクタは、デシリアライズ用なので直接利 用するべきではない テーブル名はファイルパスで利用される為、ファイルパスに利用 できる文字でのみ指定可能 カラム志向のHBaseでは、RDBMSのように多くのテーブルに分け ず、1つのテーブルにたくさんの詳細情報を詰める RDBMSの正規化はHBaseには当てはまらない
  • 5. Schema Definition : Table Properties Name テーブル名の取得・設定 ※テーブル名は[a-zA-Z_0-9-.]が利用可能だが、[.-]を最初にはできない。 Column families カラムファミリの追加・存在確認・取得・削除 カラムファミリはHColumnDescriptorを使って扱う HColumnDescriptorに関しては後述(本ではP.212)
  • 6. Schema Definition : Table Properties Maximum file size リージョンの最大ファイルサイズを取得・設定(バイト単位) ※「Maxmum file size」とあるが、実際には、カラムファミリ毎作成されるファイルサイ ズではなく、ストアのサイズを指定するので「maxStoreSize」の方が相応しい。 設定したサイズを超えるとリージョンのスピリットが発生 デフォルトは256MBになっているが、システム毎に適切なサイズ を検討する事が必要 Read-only テーブルの読込専用を設定・状態確認 デフォルトはfalse
  • 7. Schema Definition : Table Properties Memstore flush size データ書込時にディスクに描き込まず、メモリで処理するデータサ イズの取得・設定 デフォルトは64MB 容量を大きくすれば、パフォーマンスは良くなるが、 障害時にフ ラッシュされていないデータをWALから復旧する作業に時間がかか る。 Deferred log flush WALの遅延書き込みを利用するかの設定 デフォルトはfalse
  • 8. Schema Definition : Table Properties Miscellaneous option その他設定の取得・設定・削除 ByteかStringでデータは設定するが、内部的には ImmutableBytesWritableで保持  例えば、Coprocessorの読み込み設定などに利用
  • 9. Schema Definition : Column Families HColumnDescriptorを使って、カラムファミリに対しての設定を行う ※カラムファミリのパラメータを定義している為、HColumnDescriptorというよりは、 HColumnFamilyDescriptorの方が相応しい。 カラムファミリーへの設定は、それに含まれる全てのカラムに適用さ れる。 カラムは任意の数作成でき、以下のように「:」区切りでカラムファミ リとカラムクオリファイアを分割して表現する。 family:qualifier
  • 10. Schema Definition : Column Families カラムファミリは、ディレクトリパスに利用される為、表示可能な文字 列で指定しなければならない。 ※クオリファイアは省略して、カラムファミリだけで扱う事も可能です。  他のカラムと同様に読み書きが可能であるが、他と区別する為にそれ以外のカラム にはクオリファイア名を付ける必要がある。 HColumnDescriptorのインスタンスは、引数なし、カラムファミリ名、 カラムファミリの設定から作成する。
  • 11. Schema Definition : Column Families Name カラムファミリ名の取得 ※カラムファミリ名の変更はできない。  カラムファミリを変更したい場合は、カラムファミリを新規で追加し、データのコピー を行うのが一般的である。 ※カラムファミリ名には、[:/u0000-u001Fu007F-u009F]とISOに制御文字は利 用できず、[.-]を最初にはできない。 Maximum versions データを保持する世代数の取得・設定 デフォルト3で最小は1
  • 12. Schema Definition : Column Families Compression 圧縮アルゴリズムの設定・確認 圧縮アルゴリズムは、[NONE][GZ][LZO][SNAPPY]の4種類が設 定でき、デフォルトは[NONE]、[NONE]だと圧縮なし、それ以外は、 記載されている圧縮アルゴリズムが利用される。 圧縮の詳細は本のP.424参照
  • 13. Schema Definition : Column Families Block size ブロックサイズの取得・設定 HBaseの保存ファイルは、RDBMSのページ同様に細かいブロッ クに分割されて管理  デフォルトは64KBで、バイト単位で設定 ※HFileとHDFSのブロックサイズには重要な違いがある。  MapReduceは分散・並列処理の為に大きなサイズ(デフォルト64MB)を指定してい るが、HBaseのストレージファイルは効率的にロードし、ブロック操作のデータをキャッ シュする為に、細かいサイズ(デフォルト64KB)を指定する。
  • 14. Schema Definition : Column Families Block cache HBaseのブロックキャッシュを有効を取得・設定 HBaseは効率的なI/Oを行う為、一度読み込んだブロックを キャッシュとしてメモリに保持し、再度読みこむ際はキャッシュを利 用 デフォルトはtrueになっているが、特定のカラムファミリに対して、 シーケンシャルリードを行う場合には、設定をfalseにした方がよい。
  • 15. Schema Definition : Column Families Time-to-live データの生存期間の取得・設定 指定された時間経過し、メジャーコンパクションが発生した際に データを削除 デフォルト値は、Ingteger.MAX_VALUEになっており、この設定の 際は、メジャーコンパクションが発生してもデータは削除されない
  • 16. Schema Definition : Column Families In-memory ブロックキャッシュのメモリロードの取得・設定 デフォルトはFalseで、Trueに設定された場合、カラムファミリの全 てのブロックがメモリにロードされるかどうかは保証されない この設定はユーザテーブルのパスワードなど小さいカラムファイ ミリには適する Bloom filter Bloom filterの取得・設定 デフォルトは[NONE]、[NONE][ROW][ROWCOL]が設定可能 特定のアクセスパターンにおいて、データ参照時間が向上 詳細は本のP.377を参照
  • 17. Schema Definition : Column Families Replication scope レプリケーションの有効化の取得・設定 デフォルトは0で、レプリケーションしない レプリケーションの詳細は本のP.462参照 isLegalFamilyName カラムファミリ名のチェック ユーザがカラムファミリを入力するシステムの場合に、名前の正 当性を確認するのに利用
  • 18. HBaseAdmin HBaseAdmin 管理系のタスクを実行するクライアントAPI RDBMSのDMLと類似した機能 テーブル・カラムファミリの作成・存在確認・定義変更削除などの 操作が可能
  • 19. HBaseAdmin : Basic Operations クライアントAPIを利用するには、HBaseAdminクラスのインスタンス を生成する必要がある ※このセクションのほとんどのメソッドはIOException(それと継承したExceptionを含 め)かInterruptedExceptionをThrowしますが、それは省略している。 既存のCofigurationインスタンスとAPIを用いれば、クライアントAPI 同様、クラスタの利用しているZookeeperの定数が分かる HBaseAdminのインスタンスは不要になった場合、削除が必要
  • 20. HBaseAdmin : Basic Operations Abort 強制中止の実行 Frameworkから自動で呼ばれる為、ユーザが直接呼ぶべきでは ない getMaster マスタサーバに直接通信するRPCプロキシのインスタンスである HMasterInterfaceを返却 HBaseAdminクラスは、HMasterInterfaceのラッパーで提供する 機能は全て利用可能 ※getMasterから返るHMasterInterfaceは直接利用せず、HbaseAdminクラスを利用 する。
  • 21. HBaseAdmin : Basic Operations isMasterRunning マスタサーバの稼働確認 getConnection 本のP203にある、HConnectionインスタンスを返却 getConfiguration HBaseAdminインスタンスを生成する為のConfigurationインスタ ンスを返却 close HBaseAdminのリソース解放とマスタサーバとの接続断
  • 22. HBaseAdmin : Table Operations CreateTable HTableDescriptorを用いて、テーブルを作成 例にあるように、StartKey, EndKey, リージョン数を指定して CreateTableを実行する事も可能 StartKey, EndKeyは数値として解釈され、EndKeyはStartKeyよ り大きい値を設定 リージョン数は3以上を設定 同様にSplitKeyを指定して、テーブルを作成する事も可能 SplitKeyはByte列の配列で指定
  • 23. HBaseAdmin : Table Operations CreateTableAsync HTableDescriptorを用いて、非同期にテーブルを作成 ※大半のテーブル関連の管理APIは非同期に実行される。  同期メソッドも実際には、非同期のメソッドのラッパーで非同期メソッドの結果を ループで待ち続けているだけである。
  • 24. HBaseAdmin : Table Operations TableExists listTables テーブルの存在確認・一覧取得 deleteTable テーブルの削除
  • 25. HBaseAdmin : Table Operations disableTable テーブルを利用不可に設定 テーブルの削除を行う前にこの操作を行う事が必要 enableTable 利用不可にしたテーブルを再度利用可能に設定
  • 26. HBaseAdmin : Table Operations isTableEnabled isTableDisabled isTableAvailabled テーブルの利用可否や有効かどうかの確認 EnableとAvailableの違いは、disable状態でも物理的に存在して いて、ステータスに問題がなければavailable
  • 27. HBaseAdmin : Table Operations modifyTable テーブルの設定を変更 HTableDescriptorを取得し、その設定を変更し、modifyTableに てテーブルにHTableDescriptorを設定 ※modifyTableは同期処理のメソッドはなく、必ず非同期で処理される。  変更が全てのサーバに適用されたかは、getHTableDescriptorで取得したインタン スとの比較で判断する。
  • 28. HBaseAdmin : Schema Operations HBaseAdminには、modifyTable以外にもテーブルスキーマの設定 を変更するメソッドがある。 ただし、modifyTableと同様に、テーブルの状態がDisabledに設定さ れている必要がある。 addColumn deleteColumn modifyColumn カラムファミリの追加・削除・変更
  • 29. HBaseAdmin : Cluster Operations HBaseAdminのクラスタ関連のAPIは、ステータス確認・テーブルや リージョンでのタスク実行 ※多くの操作は、AdvancedUser向けなので利用には要注意 CheckHBaseAvailable 利用しているクライアントアプリケーションが、リモートサーバと通 信できるか確認 戻り値はvoidになっており、利用不可能な場合には、Exceptionが Throwされ、利用可能時は正常終了
  • 30. HBaseAdmin : Cluster Operations getClusterStatus クラスターの情報取得 クラスターの情報にアクセスする為のClusterStatusクラスに関し ては後述 closeRegion リージョンサーバにデプロイされているリージョンを閉じる 有効なテーブルのリージョンに対して、マスタから閲覧できない状 態にする
  • 31. HBaseAdmin : Cluster Operations flush リージョンサーバのMemStoreに保持されてflushされていない データをflush compact 指定リージョン・テーブルでコンパクションを実行 コンパクションは長い時間がかかる可能性がある為、必ず非同 期に実行 テーブル名が指定された場合、該当テーブルの全リージョンでコ ンパクションを実行
  • 32. HBaseAdmin : Cluster Operations majorCompact 指定リージョン・テーブルでメジャーコンパクションを実行 compactと同様、非同期で、テーブル名指定は、全リージョンが 対象 split 指定リージョン・テーブルでスピリットを実行 テーブル名が指定された場合、該当テーブルの全リージョンでス ピリットを実行 splitPointにて、RowKeyを指定する事が可能だが、不正な RowKeyが指定された場合は、Exceptionが発生
  • 33. HBaseAdmin : Cluster Operations assign unassign リージョンの設置・削除を実行 forceオプションを付けると、既にassign/unassignを実行していて も、さらに同じ操作を実行 move リージョンを指定したサーバへ移動 destServerNameにNullを設定した場合は、ランダムなサーバへ 移動
  • 34. HBaseAdmin : Cluster Operations balanceSwitch バランサー機能のON/OFFを設定 balancer バランサー機能がONの時に実行されると、リージョンのバランシ ングを実行 バランシングに関しては、本のP.432を参照 shutDown stopMaster stopRegionServer クラス全体・マスタ・リージョンサーバを停止
  • 35. HBaseAdmin : Cluster Status Information getClusterStatusで取得した、ClusterStatusのインスタンスを利用 する事で、マスタサーバの保持するクラスタ情報を取得可能 setから始まるsetterメソッドも存在するが、ClusterStatusのインスタ ンスのコピーでしかない為、変更する意味は特にない ClusterStauts, ServerName, HServerLoad, RegionLoadクラスの 各メソッドで取得可能 バージョン・ID・名称・サイズなどの各種情報を取得可能