Amazon Web Services ブログ
既存の Amazon EMR クラスターから Hue データベースを移行する方法
Hadoop User Experience (Hue) は、Amazon EMR および Apache Hadoop で使用する、オープンソースでウェブベースのグラフィカルユーザーインターフェイスです。Hue データベースには、ユーザー、グループ、許認可、Apache Hive クエリ、Apache Oozie ワークフローなどが格納されています。
Hue データベースを新しい EMR クラスターに移行したいとしましょう。例えば、Amazon EMR AMI (Amazon Machine Image) の古いバージョンからアップグレードしたいとします。Hue アプリケーションとそのデータベースには、数多くのカスタマイズがあります。これらのユーザーエンティティの再作成は必要なく、さらに既存の Hue データベースまたは Amazon RDS のリモートデータベースを新しいクラスターに移行することで、Hue のクエリとワークフロー履歴を保持する必要もありません。
デフォルトでは、Hue のユーザー情報とクエリ履歴は、EMR クラスターのマスターノード上のローカル MySQL データベースに格納されます。ですが、Amazon S3 に格納されている構成とリモートの MySQL データベースを Amazon RDS で使用して、1 つ以上の Hue 対応クラスターを作成できます。これにより、Amazon EMR クラスターを稼動させずに、Hue で作成するユーザー情報とクエリ履歴を保持することが可能となります。
この記事では、既存の EMR クラスターから Hue データベースへ移行するための手順を、ステップバイステップで説明します。
注 : Amazon EMR は、異なる AMI releases では異なる Hue バージョンをサポートしています。この移行アクティビティでは、古いクラスターと新しいクラスター間での Hue のバージョンの互換性に注意してください。現在、Hue 3.xx バージョンは Hue 4.xx バージョンと互換性がないため、これら 2 つの Hue バージョン間の移行では問題が発生する可能性があります。加えて、Hue 3.10.0 はそれ以前の 3.xx バージョンと下位互換性がありません。
始める前に
まず次のように、既存の EMR クラスターの Hue に新しい testUser を作成します。
後でこれらの承認情報を使って、新しい EMR クラスターの Hue にログインし、Hue データベースを正常に移行したかどうかを検証します。
それでは、始めましょう。
移行の方法
次の手順に従って、データベースを新しい EMR クラスターに移行してから、移行プロセスを検証します。
1.) 既存の Hue データベースのバックアップを作成する。
次の図に示すように (Linux/Unix/macOS を使用している場合)、SSH を使用して古いクラスターのマスターノードに接続し、Hue データベースを JSON ファイルにダンプします。
Model フィールドに useradmin.userprofile があるすべての JSON オブジェクトを削除して、hue-mysql.json 出力ファイルを編集してから、ファイルを保存します。例えば、次のようにオブジェクトを削除します。
2.) hue-mysql.json ファイルを Amazon S3 のような永続的ストレージに保存します。
AWS CLI または Secure Copy (SCP) クライアントを使用して、古い EMR クラスターから Amazon S3 にファイルをコピーします。例えば、次の例では AWS CLI を使用しています。
3.) バックアップした Hue データベースを、新しい EMR クラスターにリカバリおよびリロードします。
a.) SSH を使用して新しい EMR クラスターのマスターノードに接続し、すでに実行中の Hue サービスを停止します。
b.) 次に示すように、クラスタの Hue データベース (ローカル MySQL データベースまたは Amazon RDS のリモートデータベース) に、mysql クライアントを使って接続します。
ローカル MySQL データベースの場合、マスターノードの /etc/hue/conf/hue.ini ファイルで、データベースに接続するためのホスト名、ユーザー名、およびパスワードを見つけることができます。
上記の構成例に基づき、サンプルコマンドは次のとおりです。(EMR クラスター設定に基づいて、ホスト、ユーザー、およびパスワードの詳細を置き換えます。)
c.) huedb という名前のついた既存の Hue データベースを MySQL サーバーから削除します。
d.) 同じ名前の新しい空のデータベースを作成します huedb。
e.) Hue をそのデータベースの huedb と同期させます。
(これで、新しい huedb に、必要なすべての Hue テーブルを追加します)。
f.) もう一度 MySQL にログインし、外部キーをクリーンなテーブルにドロップします。
次の例では、前の出力からの実際の値 <id value> に置き換えています。
g.) django_content_type のコンテンツを削除する
h.) バックアップした Hue データベースダンプを、Amazon S3 から新しい EMR クラスターにダウンロードし、それを Hue にロードします。
i.) MySQL では、外部キー content_type_id を追加し、auth_permission に戻ります。
j.) Hue サービスをもう一度開始します。
それでおしまいです! 次に、Hue UI に正常にアクセスできるかどうかを確認し、既存の testUser 認証情報を使用してログインします。
新しい EMR クラスターの Hue にログインに成功すると、次に示すようなユーザーがサインインした時に testUser が現れるような Hue のホームページが表示されるはずです。
結論
既存の Hue データベースを新しい Amazon EMR クラスターに移行し、移行プロセスを検証する方法を学びました。今後の記事で取り上げて欲しい Amazon EMR 管理に関するトピックがあれば、ぜひ下記のコメント欄でお知らせください。
その他の参考資料
この記事がお役に立ったのであれば、Anomaly Detection Using PySpark, Hive, and Hue on Amazon EMR と Dynamically Create Friendly URLs for Your Amazon EMR Web Interfaces もぜひ参照してください。