ApsaraDB for HBase は、コールドデータシナリオ向けの新しいストレージメディアを提供します。このメディアは、ストレージコストをウルトラディスクの3分の1に削減し、ウルトラディスクベースのホットストレージに匹敵する書き込みスループットを提供し、データが常に読み取り可能であることを保証します。
背景情報
ApsaraDB for HBase クラスターの購入時に、追加のストレージ領域としてコールドストレージをプロビジョニングできます。テーブル作成ステートメントを使用して、データをこのストレージ階層に格納します。ApsaraDB for HBase Performance-enhanced Edition は、単一テーブル内でのホットデータとコールドデータの自動分離も提供します。この機能は、アクセス頻度の高いデータを高性能なホットストレージに、アクセス頻度の低いデータを低コストのコールドストレージに自動的に移動して、コストを最適化します。

注意事項
-
コールドストレージは読み取り IOPS が低く、ノードあたり 25 という制限があります。したがって、コールドストレージは、クエリの頻度が低いシナリオにのみ適しています。
-
コールドストレージは、ウルトラディスクベースのホットストレージに匹敵する書き込みスループットを提供します。
-
コールドストレージは高同時実行の読み取り操作向けには設計されていないため、リクエストが失敗する可能性があります。
-
コールドストレージの容量が大きい場合は、チケットを起票して、より高い読み取り IOPS の上限をリクエストできます。
-
各コアノードが管理するコールドデータは、平均で 30 TB 以下にする必要があります。単一のコアノードでより大量のコールドデータを管理する必要がある場合は、チケットを起票して最適化に関するアドバイスを求めてください。
前提条件
コールドストレージは、ApsaraDB for HBase Performance-enhanced Edition V2.1.8 以降でのみサポートされます。お使いのクラスターがそれ以前のバージョンである場合、有効化の際、プラットフォームが自動的に最新バージョンにアップグレードします。クライアントの依存関係が AliHBase-Connector 1.0.7/2.0.7 以降、HBase Shell が alihbase-2.0.7-bin.tar.gz 以降であることを確認してください。
シナリオ
コールドストレージは、データアーカイブや、履歴データなどのアクセス頻度の低いデータの保存といったシナリオに最適です。
コールドストレージの有効化
方法1:ApsaraDB for HBase Performance-enhanced Edition クラスターを作成する際に、購入ページでコールドストレージを有効化し、その容量を設定できます。詳細については、「クラスターの作成」をご参照ください。
方法2:
-
ApsaraDB for HBase コンソールにログインします。
-
クラスター ページで、クラスター ID をクリックして詳細ページを開きます。
-
左側メニューで コールドストレージ をクリックします。
-
有効化 をクリックします。
-
有効化のプロセス中に、クラスターでサービスの揺らぎが短時間発生する場合があります。潜在的な影響を最小限に抑えるため、この操作はオフピーク時に実行してください。
-
コールドストレージは、ApsaraDB for HBase Performance-enhanced Edition V2.1.8 以降でのみサポートされます。お使いのクラスターがそれ以前のバージョンである場合、有効化の際、自動的に最新バージョンにアップグレードされます。
コールドストレージの使用
ApsaraDB for HBase Performance-enhanced Edition では、カラムファミリーレベルでストレージプロパティを設定できます。テーブル内の 1 つ、複数、またはすべてのカラムファミリーのストレージポリシーをコールドストレージに設定できます。設定後、指定されたカラムファミリーのデータはコールドストレージに保存され、クラスターの HDFS 領域を消費しません。このポリシーは、テーブルの作成時、または既存のカラムファミリーのプロパティを変更する際に指定できます。
Java API または HBase Shell を使用して、テーブルの作成やテーブルプロパティの変更ができます。Java API を使用する前に、「Java API を使用して性能強化版クラスターにアクセスする」の説明に従って Java SDK をインストールし、パラメーターを設定します。HBase Shell を使用する前に、「HBase Shell を使用して性能強化版クラスターにアクセスする」の説明に従ってダウンロードし、設定します。
テーブル作成時のコールドストレージの指定
HBase Shell
hbase(main):001:0> create 'coldTable', {NAME => 'f', STORAGE_POLICY => 'COLD'}
Java API
Admin admin = connection.getAdmin();
HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf("coldTable"));
HColumnDescriptor cf = new HColumnDescriptor("f");
cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_COLD);
descriptor.addFamily(cf);
admin.createTable(descriptor);
コールドストレージを使用するためのテーブルプロパティの変更
既存のテーブルでは、カラムファミリーのプロパティを変更してコールドストレージを使用できます。カラムファミリーにすでにデータが含まれている場合、データは次回のメジャーコンパクション後にのみコールドストレージに移動されます。
HBase Shell
hbase(main):011:0> alter 'coldTable', {NAME=>'f', STORAGE_POLICY => 'COLD'}
Java API
Admin admin = connection.getAdmin();
TableName tableName = TableName.valueOf("coldTable");
HTableDescriptor descriptor = admin.getTableDescriptor(tableName);
HColumnDescriptor cf = descriptor.getFamily("f".getBytes());
// カラムファミリーのストレージポリシーをコールドストレージに設定します。
cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_COLD);
admin.modifyTable(tableName, descriptor);
ホットストレージを使用するためのテーブルプロパティの変更
カラムファミリーが現在コールドストレージを使用している場合、プロパティを変更してホットストレージに戻すことができます。カラムファミリーにデータが含まれている場合、データは次回のメジャーコンパクション後にのみホットストレージに戻ります。
HBase Shell
hbase(main):014:0> alter 'coldTable', {NAME=>'f', STORAGE_POLICY => 'DEFAULT'}
Java API
// connection から Admin インスタンスを取得します。
Admin admin = connection.getAdmin();
TableName tableName = TableName.valueOf("coldTable");
HTableDescriptor descriptor = admin.getTableDescriptor(tableName);
HColumnDescriptor cf = descriptor.getFamily("f".getBytes());
// ストレージポリシーを、ホットストレージを使用する DEFAULT に設定します。
cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_DEFAULT);
admin.modifyTable(tableName, descriptor);
コールドストレージ使用状況の表示
コンソールの [Cold Storage] ページでは、コールドストレージの全体的な使用状況を表示できます。また、コールドストレージ拡張 をクリックして容量を増やすこともできます。
-
コールドストレージの使用容量が 95% を超えると、書き込み操作が失敗し、システムがクラスターをロックします。サービスの中断を防ぐために、コールドストレージの使用状況を注意深く監視してください。
-
[Message Center] にログインし、リスクに関する事前通告 を有効にすると、ストレージ容量に関するアラートを速やかに受信できます。
クラスター管理システム の [Tables] タブには、各テーブルが使用するコールドストレージとホットストレージの量が表示されます。