Amazon EMR の以前のバージョンの AMI に関する HBase アプリケーションの詳細 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EMR の以前のバージョンの AMI に関する HBase アプリケーションの詳細

サポートされる HBase バージョン

HBase バージョン AMI のバージョン AWS CLI 設定パラメータ HBase バージョンの詳細
0.94.18 3.1.0 以降

--ami-version 3.1

--ami-version 3.2

--ami-version 3.3

--applications Name=HBase

  • バグの修正と機能強化。

0.94.7 3.0-3.0.4

--ami-version 3.0

--applications Name=HBase

0.92 2.2 以降

--ami-version 2.2 or later

--applications Name=HBase

HBase クラスターの前提条件

Amazon EMR AMI バージョン 2.x および 3.x を使用して作成されたクラスターは、HBase の次の要件を満たす必要があります。

  • -AWS CLI(オプション)-コマンドラインを使用して HBase を操作するには、最新バージョンのをダウンロードしてインストールします。AWS CLI。詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interface のインストール」を参照してください。

  • 2 つ以上のインスタンス (オプション) – クラスターのマスターノードでは HBase マスターサーバーと Zookeeper、タスクノードでは HBase リージョンサーバーが実行されます。最大のパフォーマンスを確保するには、HBase クラスターが 2 つ以上の EC2 インスタンスを実行する必要がありますが、評価目的の場合は HBase を単一ノードで実行できます。

  • 長時間稼働クラスター — HBase は長時間稼働クラスター上でのみ実行されます。デフォルトでは、CLI および Amazon EMR コンソールは長時間稼働クラスターを作成します。

  • Amazon EC2 key pair (推奨) — マスターノードと接続し、HBase シェルコマンドを実行するために Secure Shell (SSH) ネットワークプロトコルを使用するには、クラスターを作成するときに Amazon EC2 key pair を使用する必要があります。

  • 正しい AMI および Hadoop バージョン — HBase クラスターは、現在 Hadoop 20.205 以降でのみサポートされています。

  • Ganglia (オプション) — HBase パフォーマンスメトリクスを監視するには、クラスターを作成するときに Ganglia をインストールします。

  • ログ用 Amazon S3 バケット(オプション)— HBase 用ログはマスターノードで使用できます。これらのログを Amazon S3 にコピーするには、クラスターを作成するときに、ログファイルを受け取るための S3 バケットを指定します。

HBase を使用したクラスターの作成

次の表に、コンソールを使用して Amazon EMR AMI リリースバージョンを使用して HBase を使用してクラスターを作成する際に使用できるオプションを示します。

フィールド アクション
Restore from backup Amazon S3 に保存されているデータで HBase クラスターを事前にロードするかどうかを指定します。
Backup location Amazon S3 で、復元するバックアップがある場所の URI を指定します。
Backup version [Backup Location] で指定した場所にある、使用するバックアップのバージョン名を指定します(オプション)。このフィールドに何も指定しない場合、Amazon EMR はBackup locationをクリックして、新しい HBase クラスターを設定します。
Schedule Regular Backups 自動増分バックアップをスケジュールするかどうかを指定します。最初は完全バックアップによって、以降の差分バックアップのベースラインとなるバックアップが作成されます。
Consistent backup バックアップの整合性を確保するかどうかを指定します。バックアップの整合性とは、バックアップ処理の初期段階であるノード同期中に、書き込みオペレーションを一時停止することです。つまり、一時停止された書き込みオペレーションはすべてキューに置かれ、同期が完了したら再開されます。
Backup frequency スケジュールされたバックアップの頻度 (日/時間/分単位)。
Backup location バックアップが保存される Amazon S3 URI。差分バックアップの正確性を確保するために、バックアップは、HBase クラスターごとにそれぞれ異なる場所に格納する必要があります。
Backup start time 最初のバックアップの時間を指定します。これを now に設定した場合、クラスターが実行されると直ちに最初のバックアップが行われます。または、日付と時刻を ISO 形式で入力します。たとえば、2012-06-15T20:00Z を入力すると、2012 年 6 月 15 日午後 8 時 (UTC) に設定されます。

次の AWS CLI コマンドの例では、HBase などのアプリケーションでクラスターを起動します。

注記

Linux の行継続文字 (\) は、読みやすくするために含まれています。これらは、削除したり、Linux コマンドで使用することができます。Windows の場合、削除するか、キャレット (^) に置き換えます。

aws emr create-cluster --name "Test cluster" --ami-version 3.3 \ --applications Name=Hue Name=Hive Name=Pig Name=HBase \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type c1.xlarge --instance-count 3 --termination-protected

Hive クラスターと HBase クラスターの間の接続が確立されたら(前述の手順を参照)、Hive に外部テーブルを作成することで、HBase クラスターに格納されているデータにアクセスできます。

次の例では、Hive プロンプトからの実行時に、inputTable という HBase テーブルに格納されているデータを参照する外部テーブルを作成しています。その後、Hive ステートメントで inputTable を参照し、HBase クラスターに格納されているデータに対してクエリを実行したり、そのデータを変更したりできます。

注記

以下の例では、AMI 2.3.3 で protobuf-java-2.4.0a.jar を使用しますが、サンプルをご自分のバージョンに合わせてお使いください。お持ちの Protocol Buffers の JAR のバージョンをチェックするには、Hive コマンドプロンプトでコマンドを実行します: ! ls /home/hadoop/lib;.

add jar lib/emr-metrics-1.0.jar ; add jar lib/protobuf-java-2.4.0a.jar ; set hbase.zookeeper.quorum=ec2-107-21-163-157.compute-1.amazonaws.com ; create external table inputTable (key string, value string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping" = ":key,f1:col1") tblproperties ("hbase.table.name" = "t1"); select count(*) from inputTable ;

HBase 設定のカスタマイズ

デフォルトの設定はほとんどのアプリケーションで動作しますが、HBase 設定を変更する柔軟性も確保されています。これを行うには、次の 2 つのブートストラップアクションスクリプトのいずれかを実行します。

  • 設定-hbase デーモン-マスター、regionserver、および zookeeper デーモンのプロパティを設定します。これらのプロパティには、HBase デーモンの開始時に Java Virtual Machine(JVM)に渡すヒープサイズおよびオプションが含まれます。これらのプロパティは、ブートストラップアクションの引数として設定します。このブートストラップアクションでは、HBase クラスターの /home/hadoop/conf/hbase-user-env.sh 設定ファイルが変更されます。

  • 設定-HBase-HBase マスターノードのバインド先ポート、CLI クライアントがアクションを再試行する最大回数など、HBase サイト固有の設定を指定します。これらはブートストラップアクションで引数として 1 つずつ設定するか、Amazon S3 で XML 設定ファイルの場所を指定します。このブートストラップアクションでは、HBase クラスターの /home/hadoop/conf/hbase-site.xml 設定ファイルが変更されます。

注記

これらのスクリプトを実行できるのは、他のブートストラップアクションの場合と同様、クラスターの作成時のみです。このスクリプトを使用して、現在実行中の HBase クラスターの設定を変更することはできません。

configure-hbase または configure-hbase-daemons ブートストラップアクションを実行すると、指定した値によってデフォルトの値が上書きされます。明示的に設定しなかった値には、デフォルト値が設定されます。

これらのブートストラップアクションを使用して HBase を設定することは、Amazon EMR でブートストラップアクションを使用して Hadoop 設定と Hadoop デーモンのプロパティを設定するのと似ています。異なるのは、HBase にはプロセスごとのメモリオプションがないという点です。メモリオプションは、--daemon-opts 引数を使用して設定されます。daemon は、設定するデーモンの名前に置き換えてください。

HBase デーモンを設定する

Amazon EMR は、ブートストラップアクションs3://region.elasticmapreduce/bootstrap-actions/configure-hbase-daemonsで、HBase デーモンの設定を変更するために使用できます。ここで、リージョンは、HBase クラスターを起動するリージョン。

AWS CLI を使用して HBase デーモンを設定するには、クラスターを起動して 1 つ以上の HBase デーモンを設定するときに、ブートストラップアクション configure-hbase-daemons を追加します。以下のプロパティを設定できます。

プロパティ 説明
hbase-master-opts JVM によるマスターデーモンの実行方法をコントロールするオプション。設定されている場合は、これらによってデフォルトの HBASE_MASTER_OPTS 変数が上書きされます。
regionserver-opts JVM によるリージョンサーバーデーモンの実行方法をコントロールするオプション。設定されている場合は、これらによってデフォルトの HBASE_REGIONSERVER_OPTS 変数が上書きされます。
zookeeper-opts JVM による zookeeper デーモンの実行方法をコントロールするオプション。設定されている場合は、これらによってデフォルトの HBASE_ZOOKEEPER_OPTS 変数が上書きされます。

これらのオプションの詳細については、HBase ドキュメントの「hbase-env.sh」を参照してください。

zookeeper-opts および hbase-master-opts の値を設定するためのブートストラップアクションを次の例に示します。

注記

Linux の行継続文字 (\) は、読みやすくするために含まれています。これらは、削除したり、Linux コマンドで使用することができます。Windows の場合、削除するか、キャレット (^) に置き換えます。

aws emr create-cluster --name "Test cluster" --ami-version 3.3 \ --applications Name=Hue Name=Hive Name=Pig Name=HBase \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type c1.xlarge --instance-count 3 --termination-protected \ --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hbase-daemons,\ Args=["--hbase-zookeeper-opts=-Xmx1024m -XX:GCTimeRatio=19","--hbase-master-opts=-Xmx2048m","--hbase-regionserver-opts=-Xmx4096m"]

HBase サイト設定の設定

Amazon EMR は、ブートストラップアクションs3://elasticmapreduce/bootstrap-actions/configure-hbaseHBase の設定を変更するために使用できます。設定値はブートストラップアクションで引数として 1 つずつ設定するか、Amazon S3 で XML 設定ファイルの場所を指定します。少しの設定を行えばいいだけの場合は、設定値を 1 つずつ設定する方が便利です。追加する変更が多数ある場合、または再利用できるよう設定を保存したい場合は、XML ファイルを使用して設定することをお勧めします。

注記

Amazon S3 バケット名には、リージョンプレフィックスを付けることができます (s3://region.elasticmapreduce/bootstrap-actions/configure-hbaseとなる。ここでリージョンは、HBase クラスターを起動するリージョン。

このブートストラップアクションでは、HBase クラスターの /home/hadoop/conf/hbase-site.xml 設定ファイルが変更されます。ブートストラップアクションは、HBase クラスターの起動時にのみ実行できます。

設定可能な HBase サイト設定の詳細については、以下を参照してください。デフォルト設定HBase のドキュメントを参照してください。

HBase クラスターの起動時に configure-hbase ブートストラップアクションを設定し、hbase-site.xml で変更する値を指定します。

AWS CLI を使用して個別の HBase のサイト設定を指定するには

  • 変更するにはhbase.hregion.max.filesize設定では、次のコマンドを入力し、myKeyAmazon EC2 のkey pair 名前を使用した。

    注記

    Linux の行継続文字 (\) は、読みやすくするために含まれています。これらは、削除したり、Linux コマンドで使用することができます。Windows の場合、削除するか、キャレット (^) に置き換えます。

    aws emr create-cluster --name "Test cluster" --ami-version 3.3 \ --applications Name=Hue Name=Hive Name=Pig Name=HBase \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type c1.xlarge --instance-count 3 --termination-protected \ --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hbase,Args=["-s","hbase.hregion.max.filesize=52428800"]

AWS CLI を使用して XML ファイルで HBase サイト設定を指定するには

  1. カスタムバージョンの hbase-site.xml を作成します。カスタムファイルは有効な XML である必要があります。エラーを発生させる可能性を減らすには、hbase-site.xmlは、Amazon EMR HBase マスターノード/home/hadoop/conf/hbase-site.xmlからファイルを作成するのではなく、そのファイルのコピーを編集します。新しいファイルに新しい名前を付けるか、hbase-site.xml をそのまま使用します。

  2. カスタム設定をアップロードするhbase-site.xmlファイルを Amazon S3 バケットに読み込む。パーミッションが設定されていなければならないので、AWSアカウントは、ファイルにアクセスできます。そのファイルにAWSさらに、クラスターを起動するアカウントが Amazon S3 バケットを所有している場合は、アクセス権が付与されます。

  3. HBase クラスターの起動時に configure-hbase ブートストラップアクションを設定し、カスタム hbase-site.xml ファイルの場所を含めます。次の例では、HBase サイト設定の値を、s3://mybucket/my-hbase-site.xml で指定した値に設定しています。次のコマンドを入力し、myKeyを EC2 key pair 名前に置き換え、mybucketAmazon S3 バケットの名前を使用した 。

    注記

    Linux の行継続文字 (\) は、読みやすくするために含まれています。これらは、削除したり、Linux コマンドで使用することができます。Windows の場合、削除するか、キャレット (^) に置き換えます。

    aws emr create-cluster --name "Test cluster" --ami-version 3.3 \ --applications Name=Hue Name=Hive Name=Pig Name=HBase \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type c1.xlarge --instance-count 3 --termination-protected \ --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hbase,Args=["--site-config-file","s3://mybucket/config.xml"]

    複数のオプションを指定して HBase オペレーションをカスタマイズする場合は、次の例に示すように、各キーと値のペアの前に -s オプションスイッチを追加する必要があります。

    --bootstrap-actions s3://elasticmapreduce/bootstrap-actions/configure-hbase,Args=["-s","zookeeper.session.timeout=60000"]

プロキシセットと SSH 接続が開いている場合、HBase UI を表示するには、ブラウザウィンドウで http://master-public-dns-name:60010/master-status を開きます。master-public-dns-name は、HBase クラスターのマスターノードのパブリック DNS アドレスです。

現在の HBase ログを表示するには、SSH を使用してマスターノードに接続し、mnt/var/log/hbase ディレクトリに移動します。これらのログは、クラスターの起動時に Amazon S3 へのログを有効にしない限り、クラスター終了後に使用できなくなります。

HBase のバックアップと復元

Amazon EMR には、手動で、または自動化されたスケジュールに従って、HBase データを Amazon S3 にバックアップする機能が用意されています。完全バックアップと増分バックアップの両方を実行できます。HBase データのバックアップバージョンを作成した後、そのバージョンを HBase クラスターに復元できます。復元は現在実行中の HBase クラスターに対して行うことができます。また、バックアップされたデータが設定されたクラスターを新しく作成することもできます。

バックアップ処理中も、HBase は書き込みコマンドを実行し続けます。これにより、バックアップ中もクラスターを使用し続けることができますが、バックアップ中のデータと、並行して実行されている書き込みオペレーションとの間に不整合が発生するリスクがあります。発生する可能性がある不整合について理解するには、HBase では、書き込みオペレーションがクラスター内のノード全体に分散されるという点を考慮する必要があります。特定のノードがポーリングされた後、書き込みオペレーションが発生すると、そのデータはバックアップアーカイブに保存されません。HBase クラスターへの以前の書き込み(既にポーリングされたノードに送信された書き込み)がバックアップアーカイブに含まれない可能性がある一方で、それより後の書き込み(ポーリングされる前のノードに送信された書き込み)がアーカイブに保存されることもあります。

整合性のあるバックアップが必要な場合は、バックアップ処理の初期段階であるノード同期中に、HBase への書き込みを一時停止する必要があります。これを行うには、バックアップをリクエストするときに --consistent パラメータを指定します。このパラメータが指定されている場合は、この期間中の書き込みがキューに入れられ、同期が完了するとすぐに実行されます。定期バックアップをスケジュールすることもできます。これにより徐々に発生する不整合が解決されます。あるバックアップパスで逃したデータが、次のパスでバックアップされるからです。

HBase データをバックアップするときに、クラスターごとにさまざまなバックアップディレクトリを指定する必要があります。これを簡単に行うには、クラスター識別子を、バックアップディレクトリに指定されたパスの一部として使用します。たとえば、s3://mybucket/backups/j-3AEXXXXXX16F2 と指定します。これにより、以降のすべての差分バックアップが適切な HBase クラスターを参照するようになります。

不要になった古いバックアップファイルを削除する準備ができたら、まず HBase データの完全バックアップを行うことをお勧めします。これによりすべてのデータが保存されます。このデータは、その後の差分バックアップのベースとして使用できます。完全バックアップが完了した後、バックアップの場所に移動し、古いバックアップファイルを手動で削除できます。

HBase バックアップ処理では、一時ファイルの格納スペースに特定の制限がある S3DistCp をコピー操作に使用します。

コンソールを使用した HBase のバックアップと復元

コンソールを使用すると、新しいクラスターを起動して、以前の HBase バックアップのデータを入力することができます。また、HBase データの定期差分バックアップをスケジュールすることもできます。追加のバックアップおよび復元機能、たとえば、既に実行中のクラスターにデータを復元したり、手動バックアップを行ったり、自動完全バックアップをスケジュールしたりする機能は、CLI で使用できます。

コンソールを使用して、アーカイブされた HBase データを新しいクラスターに指定するには

  1. Amazon EMR コンソール (https://console.aws.amazon.com/elasticmapreduce/) を開きます。

  2. [クラスターの作成] を選択します。

  3. [Software Configuration] セクションの [Additional Applications] で、[HBase] と [Configure and add] を選択します。

  4. [Add Application] ダイアログボックスで、[Restore From Backup] チェックボックスをオンにします。

  5. [Backup Location] (バックアップの場所) で、新しい HBase クラスターにロードするバックアップの場所を指定します。これは Amazon S3 URL ですs3://myawsbucket/backups/

  6. [Backup Version] では、値を設定して、ロードするバックアップバージョンの名前を指定するオプションがあります。値を設定しない場合Backup のバージョンを選択した場合、Amazon EMR は、指定した場所にある最新のバックアップをロードします。

  7. [Add] を選択して、必要に応じたオプションによるクラスターの作成に進みます。

コンソールを使用して HBase データの自動バックアップをスケジュールするには

  1. [Software Configuration] セクションの [Additional Applications] で、[HBase] と [Configure and add] を選択します。

  2. [Schedule Regular Backups] を選択します。

  3. バックアップの整合性を確保するかどうかを指定します。バックアップの整合性とは、バックアップ処理の初期段階であるノード同期中に、書き込みオペレーションを一時停止することです。つまり、一時停止された書き込みオペレーションはすべてキューに置かれ、同期が完了したら再開されます。

  4. バックアップの頻度を設定します。それには、[Backup Frequency] に数値を入力し、[Days]、[Hours]、または [Minutes] を選択します。最初に実行される自動バックアップは完全バックアップです。その後、Amazon EMR は、指定したスケジュールに基づいて、差分バックアップを保存します。

  5. バックアップを格納する Amazon S3 内の場所を指定します。差分バックアップが適切に判断されるように、HBase クラスターはそれぞれ Amazon S3 内の個別の場所にバックアップする必要があります。

  6. [Backup Start Time] で、バックアップを最初に行うタイミングの値を指定します。これを now に設定した場合、クラスターが実行されると直ちに最初のバックアップが行われます。または、日付と時刻を ISO 形式で入力します。たとえば、「2013-09-26T20:00Z」と入力すると、開始時間が 2013 年 9 月 26 日午後 8 時 (UTC) に設定されます。

  7. [Add] を選択します。

  8. 必要に応じて他のオプションを指定し、クラスターの作成を進めます。

CloudWatch で HBase を監視する

Amazon EMR は、HBase バックアップのモニタリングに使用できる 3 つのメトリクスを CloudWatch に報告します。これらのメトリクスは CloudWatch に 5 分間隔でプッシュされ、料金はかかりません。

メトリクス 説明
HBaseBackupFailed

前回のバックアップに失敗したかどうか。デフォルトでは 0 に設定されており、前回のバックアップが失敗した場合は 1 に更新されます。このメトリクスは、HBase クラスターについてのみ報告されます。

ユースケース: HBase バックアップを監視する

単位: カウント

HBaseMostRecentBackupDuration

前回のバックアップが完了するのにかかった時間。このメトリクスは、前回完了したバックアップが成功したか失敗したかに関係なく設定され、このメトリクスは、バックアップの進行中に、バックアップが開始してからの分数を返します。このメトリクスは、HBase クラスターについてのみ報告されます。

ユースケース: HBase バックアップの監視

単位:

HBaseTimeSinceLastSuccessfulBackup

クラスターで前回成功した HBase バックアップが開始してから経過した分数。このメトリクスは、HBase クラスターについてのみ報告されます。

ユースケース: HBase バックアップを監視する

単位:

HBase の Ganglia の設定

configure-hbase-for-ganglia ブートストラップアクションを使用して、HBase に対して Ganglia を設定できます。このブートストラップアクションは、Ganglia にメトリクスを発行するように HBase を設定します。

クラスターを起動するときは、HBase と Ganglia を設定する必要があります。Ganglia のレポートを、実行中のクラスターに追加することはできません。

Ganglia では、/mnt/var/log/ganglia/rrds のサーバーにもログファイルを格納します。ログファイルが Amazon S3 バケットに保存されるようにクラスターを設定した場合は、Ganglia ログファイルも同様に同じ場所に保存されます。

HBase の Ganglia でクラスターを起動するには、次の例に示すように、[configure-hbase-for-ganglia] ブートストラップアクションを使用します。

注記

Linux の行継続文字 (\) は、読みやすくするために含まれています。これらは、削除したり、Linux コマンドで使用することができます。Windows の場合、削除するか、キャレット (^) に置き換えます。

aws emr create-cluster --name "Test cluster" --ami-version 3.3 \ --applications Name=Hue Name=Hive Name=Pig Name=HBase Name=Ganglia \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type c1.xlarge --instance-count 3 --termination-protected \ --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hbase-for-ganglia

Ganglia を設定してクラスターを起動した後は、マスターノードで実行中のグラフィカルインターフェイスを使用して、Ganglia のグラフやレポートにアクセスできます。