E-MapReduce (EMR) と Data Lake Formation (DLF) を組み合わせることで、Alibaba Cloud 上のデータレイクに対して、一元化・フルマネージドなメタデータおよび権限管理レイヤーを提供します。このソリューションにより、別途メタデータストアを管理することなく、複数のデータソースからデータを取り込み、さまざまなコンピュートエンジン間で統一的にクエリを実行できます。
本ガイドを完了すると、以下の状態が実現します:
DLF 統合メタデータをバックエンドとする、実行中の EMR DataLake クラスター
データレイク内に初期化されたメタデータおよびデータ
Spark SQL または Presto を用いたデータクエリ実行機能
(任意)細かい粒度での権限管理およびライフサイクルルールの設定
開始前に: ステップ 2 およびステップ 3 は、既存の EMR クラスターを利用するか、新規構築から始めるかによって複数の実施経路が存在します。作業を進める前に、ご自身の出発点を特定してください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
EMR および DLF のサービスが有効化された Alibaba Cloud アカウント
対象リージョンで Object Storage Service (OSS) が有効化されていること
EMR クラスターおよび DLF カタログの作成に十分な権限を保有していること
対応リージョンについては、「対応リージョンおよびエンドポイント」をご参照ください。課金に関する詳細は、「課金」をご参照ください。
仕組み
DLF は、従来の EMR Deployment でクラスター単位で使用されていた Hive メタストアに代わる、マルチエンジン対応・フルマネージドなメタデータサービスを提供します。主な機能は以下のとおりです。
| 機能 | 説明 |
|---|---|
| メタデータ管理 | 多バージョン履歴およびロールバック機能を備えた可視化管理 |
| メタデータ移行 | 既存の EMR クラスターからメタデータを移行 |
| 全文検索 | すべてのメタデータを対象とした検索 |
| データプロファイリング | ファイルサイズ、行数、アクセス頻度、small-file 数、人気スコア、有効ファイル数など |
| マルチエンジン対応 | オープンソースの EMR スタックに加え、MaxCompute、Flink、Hologres にも対応 |
| 権限管理 | カタログ、データベース、カラム、関数単位での細かい粒度の制御。Spark、Hive、Presto、Impala との統合対応 |
| ライフサイクル管理 | ファイルの人気スコアおよび更新時刻に基づき、自動的にデータをアーカイブし、OSS のストレージコストを削減 |
| ストレージ最適化 | Delta Lake フォーマット向けの自動最適化により、ストレージコストを削減 |
ステップ 1:EMR DataLake クラスターの作成
クラスター作成時に、メタデータ パラメーターに DLF 統合メタデータ を選択します。これにより、クラスターが DLF と連携されます。
EMR コンソール にログインします。左側ナビゲーションウィンドウで、ECS 上の EMR をクリックします。
ECS 上の EMR ページで、クラスターの作成 をクリックします。ECS 上の E-MapReduce ページで、以下のパラメーターを設定します。
パラメーター 値 ビジネスシナリオ データレイク オプションサービス(最低 1 つを選択) Hive(必須)。必要に応じて他のサービスを追加します。 メタデータ DLF 統合メタデータ DLF カタログ デフォルトカタログを使用するか、新規作成します。DLF がまだ有効化されていない場合は、まず有効化するよう促されます。 画面の指示に従って残りの手順を完了します。詳細については、「クラスターの作成」をご参照ください。
ステップ 2:メタデータの初期化
ご自身の出発点に合った経路を選択してください。
組み込み MySQL または ApsaraDB RDS にメタデータを保持する既存の EMR クラスターがある場合 — 続行前に、メタデータを DLF へ移行してください。「EMR メタデータの DLF への移行」をご参照ください。
過去のメタデータがない新規 EMR クラスターの場合 — 次のいずれかの方法でメタデータを作成します。
DLF コンソール(推奨): または、Hive または Spark SQL を使用してデータベースおよびテーブルを作成します。
DLF コンソール にログインします。上部ナビゲーションバーで、OSS が有効化されているリージョン(例:中国 (杭州))を選択します。
左側ナビゲーションウィンドウで、メタデータ > メタデータ を選択します。
データベース タブで、データベースの作成 をクリックします。
パラメーターを設定し、OK をクリックします。
メタデータディスカバリー(OSS に既にデータが格納されている場合) — メタデータディスカバリー 機能を用いて OSS をスキャンし、DLF にメタデータを自動登録します。手順付きの具体例については、「DLF データ探索 - 淘宝ユーザー行動分析」をご参照ください。
ステップ 3:データの初期化
データソースに応じた経路を選択してください。
| データソース | 方法 |
|---|---|
| 既存の EMR クラスター(HDFS データ) | Jindo DistCp を使用して、クラスターから OSS へデータを移行します。 |
| サービスシステム(RDS、MySQL、Apache Kafka) | Realtime Compute for Apache Flink を使用して、データを DLF へストリーミングします。「DLF カタログの管理」をご参照ください。 |
ステップ 4:Spark SQL または Presto を用いたデータクエリ
SSH で EMR クラスターのマスターノードに接続します。「クラスターへのログイン」をご参照ください。
Spark SQL を用いたクエリ
Spark SQL を起動します。
spark-sqlクエリを実行します。
SELECT * FROM <database>.<table>;
Presto を用いたクエリ
DLF は、3 レベルの名前空間を使用します: <catalog>.<database>.<table>。カタログは、データソースを識別します。利用可能なカタログを表示するには、Presto で show catalogs; を実行するか、EMR コンソールの Presto サービスページの [設定] タブを確認します。
Presto CLI を起動し、
master-1-1をマスターノードのホスト名に置き換えます:presto --server master-1-1:8889クエリを実行します。
SELECT * FROM <catalog>.<database>.<table>;たとえば、Hive の
testテーブルに対してクエリを実行する場合、defaultデータベースを使用します:SELECT * FROM hive.default.test;
(任意)ステップ 5:権限管理の有効化
厳格なアクセス制御を要するデータレイクでは、EMR クラスター内のすべてのデータに対して細かい粒度の権限を適用するために、DLF 権限管理を有効化します。有効化後は、ユーザーがデータにアクセスするには明示的な権限付与が必要になります。
お使いの EMR クラスターで DLF 権限管理を有効化します。詳細については、「DLF-Auth」をご参照ください。
DLF 内でデータカタログに対する権限を設定します。「権限の設定」をご参照ください。
ユーザーに権限を付与するには、「データの権限付与」をご参照ください。エンドツーエンドの手順については、「DLF および EMR を使用した権限管理」をご参照ください。
(任意)ステップ 6:ライフサイクル管理の設定
ライフサイクル管理では、データレイク内のデータベースおよびテーブルに対してデータ保持ルールを定義できます。DLF は、以下の 3 種類のルールに基づき、該当するデータの OSS ストレージクラスを変更します。
| ルールタイプ | 説明 |
|---|---|
| 作成時刻 | パーティションおよびテーブルの作成時刻に基づく |
| 最終更新時刻 | パーティションおよびテーブルの最終更新時刻に基づく |
| パーティションキーの値 | パーティションキーの値に基づく |
これにより、手動介入なしで長期的なストレージコストを削減できます。設定手順については、「ライフサイクル管理」をご参照ください。
次のステップ
メタデータディスカバリー機能を活用して、OSS データを DLF に自動的に登録します:DLF データ探索 - Taobao ユーザー行動分析
DLF および EMR を使用した権限の管理方法について学習します:DLF および EMR を使用して権限を管理する
DLF の課金の詳細を確認する: 課金