Amazon RDS でリモートデータベースと Hue を使用する - Amazon EMR

Amazon RDS でリモートデータベースと Hue を使用する

デフォルトでは、Hue のユーザー情報とクエリ履歴は、マスターノード上のローカルの MySQL データベースに保存されます。または、Amazon S3 に保存されている設定と、Amazon Relational Database Service(Amazon RDS) の MySQL データベースを使用して、Hue が有効な 1 つ以上のクラスターを作成することができます。こうすることで、Amazon EMR クラスターを実行し続けなくても、Hue によって作成されたユーザー情報とクエリ履歴を永続化できます。設定ファイルは、Amazon S3 サーバーサイド暗号化機能を使って保存することをお勧めします。

最初に、Hue のリモートデータベースを作成します。

外部の MySQL データベースを作成するには
  1. Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. [Launch a DB Instance (DB インスタンスの作成)] をクリックします。

  3. MySQL を選択し、[Select (選択)] をクリックします。

  4. [Multi-AZ Deployment and Provisioned IOPS Storage (マルチ AZ 配置とプロビジョンド IOPS ストレージ)] はデフォルトのままにして、[Next (次へ)] をクリックします。

  5. [Instance Specifications (インスタンスの仕様)] はデフォルトのままにして、[Settings (設定)] を指定し、[Next (次へ)] をクリックします。

  6. [Configure Advanced Settings] ページで、適切なセキュリティグループとデータベース名を選択します。使用するセキュリティグループは、少なくともクラスターのマスターノードからのポート 3306 に対するイングレス TCP アクセスを許可する必要があります。この時点でまだクラスターを作成していない場合、ポート 3306 への接続をすべてのホストに許可し、クラスターを起動した後にセキュリティグループを調整することができます。[Launch DB Instance (DB インスタンスの起動)] をクリックします。

  7. RDS ダッシュボードで、[Instances (インスタンス)] を選択し、先ほど作成したインスタンスを選択します。データベースが使用できる時、dbname、username、password、および RDS instance hostname をメモします。クラスターの作成および設定時に、この情報を使用します。

AWS CLI を使用してクラスターを起動するときに、Hue の外部 MySQL データベースを指定するには

AWS CLI を利用したクラスターの起動する際の Hue に使う外部の MySQL データベースを指定するには、RDS インスタンスを作成する際に設定した hue.ini ファイルの設定オブジェクトの情報を使用します。

注記

外部にある同一のデータベースを使用するが、各クラスターはクエリ履歴とユーザー情報を共有する複数のクラスターを作成できます。

  • AWS CLI で、作成した外部データベースを使って、また、設定ファイルとデータベースのプロパティを指定する Hue の設定分類を参照して、Hue がインストールされたクラスターを作成します。次の例では、データベース設定を指定する Amazon S3の設定ファイル myConfig.json を参照して、Hue がインストールされた状態でクラスターを作成します。

    注記

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

    aws emr create-cluster --release-label emr-5.36.1 --applications Name=Hue Name=Spark Name=Hive \ --instance-type m5.xlarge --instance-count 3 \ --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json --use-default-roles

    myConfig.json ファイルのコンテンツの例を以下に示します。dbnameusernamepassword、および RDS instance hostname は、先ほど RDS ダッシュボードでメモした値に置き換えます。

    [{ "Classification": "hue-ini", "Properties": {}, "Configurations": [ { "Classification": "desktop", "Properties": {}, "Configurations": [ { "Classification": "database", "Properties": { "name": "dbname", "user": "username", "password": "password", "host": "RDS instance hostname", "port": "3306", "engine": "mysql" }, "Configurations": [] } ] } ] }]

トラブルシューティング

Amazon RDS フェイルオーバーの場合

Hue データベースインスタンスが応答しなくなったり、フェイルオーバー処理の途中であるために、クエリの実行中に遅延が発生する可能性があります。この問題に関する情報とガイドラインを以下に示します。

  • Amazon RDS コンソールにログインすると、フェイルオーバーイベントを検索できます。たとえば、フェイルオーバーが処理中または発生したことが表示されたら、"Multi-AZ instance failover started" や "Multi-AZ instance failover completed" などのイベントを探します。

  • RDS インスタンスがフェイルオーバーを完了するのに、約 30 秒かかります。

  • Hue で、クエリの応答に通常より長い時間がかかっている場合は、クエリの再実行を試みます。