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

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

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

サポートされている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 EMRAMIバージョン 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インスタンスで実行する必要がありますが、評価目的で 1 つのノードHBaseで実行できます。

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

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

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

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

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

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

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

フィールド アクション
Restore from backup Amazon S3 に保存されているデータでHBaseクラスターを事前ロードするかどうかを指定します。
Backup location 復元元のバックアップURIが Amazon S3 に存在する を指定します。
Backup version [Backup Location] で指定した場所にある、使用するバックアップのバージョン名を指定します(オプション)。このフィールドを空白のままにすると、Amazon EMRは Backup Location で最新のバックアップを使用して新しいHBaseクラスターを入力します。
Schedule Regular Backups 自動増分バックアップをスケジュールするかどうかを指定します。最初は完全バックアップによって、以降の差分バックアップのベースラインとなるバックアップが作成されます。
Consistent backup バックアップの整合性を確保するかどうかを指定します。バックアップの整合性とは、バックアップ処理の初期段階であるノード同期中に、書き込みオペレーションを一時停止することです。つまり、一時停止された書き込みオペレーションはすべてキューに置かれ、同期が完了したら再開されます。
Backup frequency スケジュールされたバックアップdays/hours/minutes間の数。
Backup location バックアップURIが保存されている Amazon S3。差分バックアップが正しく維持されるように、HBaseクラスターごとのバックアップ場所は異なる必要があります。
Backup start time 最初のバックアップの時間を指定します。これを に設定するとnow、クラスターの実行直後に最初のバックアップが開始されるか、 ISO 形式で日付と時刻を入力できます。例えば、2012-06-15T20:00Z では、開始時刻を 2012 年 6 月 15 日午後 8PM設定します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 プロンプトから実行すると、 は、 というテーブルに保存されているデータを参照する外部HBaseテーブルを作成しますinputTable。その後、Hive ステートメントinputTableで を参照して、HBaseクラスターに保存されているデータをクエリおよび変更できます。

注記

次の例では、2.3.3 で protobuf-java-2.4.0a.jar AMI を使用していますが、バージョンに合わせて例を変更する必要があります。使用しているプロトコルバッファのバージョンを確認するには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 つのブートストラップアクションスクリプトのいずれかを実行します。

  • configure-hbase-daemons— マスターデーモン、リージョンサーバーデーモン、および動物園キーパーデーモンのプロパティを設定します。これらのプロパティには、ヒープサイズと、デーモンの起動時に Java 仮想マシン (JVM) HBase に渡すオプションが含まれます。これらのプロパティは、ブートストラップアクションの引数として設定します。このブートストラップアクションは、HBaseクラスター上の /home/hadoop/conf/hbase-user-env.sh 設定ファイルを変更します。

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

注記

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

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

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

HBase デーモンを設定する

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

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

プロパティ 説明
hbase-master-opts がマスターデーモンJVMを実行する方法を制御するオプション。設定されている場合、これらはデフォルトの HBASE_MASTER_OPTS 変数を上書きします。
regionserver-opts がリージョンサーバーデーモンJVMを実行する方法を制御するオプション。設定されている場合、これらはデフォルトの HBASE_REGIONSERVER_OPTS 変数を上書きします。
zookeeper-opts がゾーンキーパーデーモンJVMを実行する方法を制御するオプション。設定されている場合、これらはデフォルトの 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-hbaseの設定を変更できますHBase。設定値 をブートストラップアクションの引数 one-by-oneとして設定することも、Amazon S3 XMLの設定ファイルの場所を指定することもできます。設定値の設定 one-by-oneは、いくつかの設定のみを必要とする場合に便利です。XML ファイルを使用して設定することは、変更が多い場合や、設定を再利用のために保存する場合に役立ちます。

注記

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

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

設定できるHBaseサイト設定の詳細については、HBaseドキュメントの「デフォルト設定」を参照してください。

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

を使用して個々のHBaseサイト設定を指定するには AWS CLI
  • hbase.hregion.max.filesize 設定を変更するには、次のコマンドを入力して置き換えます。myKey Amazon EC2キーペアの名前。

    注記

    読みやすくするために、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"]
を使用してXMLファイルでHBaseサイト設定を指定するには AWS CLI
  1. カスタムバージョンの hbase-site.xml を作成します。カスタムファイルは有効な である必要がありますXML。エラーが発生する可能性を減らすには、 の Amazon EMRHBaseマスターノードにある hbase-site.xmlのデフォルトコピーから開始し/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://amzn-s3-demo-bucket/my-hbase-site.xml。次のコマンドを入力し、置き換えます。myKey EC2 キーペアの名前に置き換えます。amzn-s3-demo-bucket Amazon 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://amzn-s3-demo-bucket/config.xml"]

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

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

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

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

バックアップと復元 HBase

Amazon EMRでは、手動で、または自動スケジュールでHBaseデータを Amazon S3 にバックアップできます。完全バックアップと増分バックアップの両方を実行できます。バックアップされたバージョンのHBaseデータを取得したら、そのバージョンをHBaseクラスターに復元できます。現在実行中のHBaseクラスターに復元することも、バックアップされたデータが事前入力された新しいクラスターを起動することもできます。

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

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

HBase データをバックアップするときは、クラスターごとに異なるバックアップディレクトリを指定する必要があります。これを簡単に行うには、クラスター識別子を、バックアップディレクトリに指定されたパスの一部として使用します。例えば、s3://amzn-s3-demo-bucket/backups/j-3AEXXXXXX16F2 と指定します。これにより、今後の増分バックアップで正しいHBaseクラスターを参照できます。

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

HBase バックアッププロセスでは、コピーオペレーションに S3DistCp を使用します。これには、一時的なファイルストレージ領域に関する特定の制限があります。

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

コンソールでは、新しいクラスターを起動し、以前のHBaseバックアップのデータを入力できます。また、HBaseデータの定期的な増分バックアップをスケジュールすることもできます。既に実行されているクラスターへのデータの復元、手動バックアップの実行、自動フルバックアップのスケジュールなどの追加のバックアップおよび復元機能は、 を使用して使用できますCLI。

コンソールを使用してアーカイブされたHBaseデータを新しいクラスターに入力するには
  1. 新しい Amazon EMRコンソールに移動し、サイドナビゲーションから古いコンソールに切り替えるを選択します。古いコンソールに切り替えたときの動作の詳細については、「Using the old console」を参照してください。

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

  3. ソフトウェア設定セクションで、追加のアプリケーション でHBase「」を選択し、「」を設定して追加します

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

  5. Backup Location では、新しいHBaseクラスターにロードするバックアップ yto の場所を指定します。これは、 URL形式の Amazon S3 である必要がありますs3://myawsbucket/backups/

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

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

コンソールを使用してHBaseデータの自動バックアップをスケジュールするには
  1. ソフトウェア設定セクションで、追加のアプリケーション で、 HBaseの設定と追加を選択します。

  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 日午後 8PMに設定しますUTC。

  7. [追加] を選択します。

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

HBase でモニタリングする CloudWatch

Amazon CloudWatch は、HBaseバックアップのモニタリングに使用できる 3 つのメトリクスを にEMRレポートします。これらのメトリクスは CloudWatch 5 分間隔で にプッシュされ、無料で提供されます。

メトリクス 説明
HBaseBackupFailed

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

ユースケース: HBaseバックアップをモニタリングする

単位: Count

HBaseMostRecentBackupDuration

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

ユースケース: HBaseバックアップのモニタリング

単位: Minutes

HBaseTimeSinceLastSuccessfulBackup

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

ユースケース: HBaseバックアップをモニタリングする

単位: Minutes

の Ganglia を設定する HBase

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

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

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

Ganglia for でクラスターを起動するにはHBase、次の例に示すように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 のグラフやレポートにアクセスできます。