E-MapReduce (EMR) DataLake クラスターを DataWorks ワークスペースに登録し、EMR ノード (EMR Hive、EMR MR、EMR Presto、EMR Spark SQL) を実行する場合、デフォルトのコンポーネント設定では本番環境のワークロードに対応できないことがよくあります。このトピックでは、Kyuubi、Spark、および Hadoop 分散ファイルシステム (HDFS) の推奨メモリ構成について説明し、開発環境と本番環境の間でメタデータを隔離する方法についても解説します。
EMR コンポーネントの構成
Kyuubi
本番環境では、次の JVM メモリパラメーターを設定します。
| パラメーター | 推奨値 | 説明 |
|---|---|---|
kyuubi_java_opts |
10g 以上 | Kyuubi サーバー JVM のヒープサイズ。ヒープを大きくすると、同時クエリ負荷時のガベージコレクション (GC) のプレッシャーが軽減されます。 |
kyuubit_beeline_opts |
2g 以上 | Beeline クライアントのヒープサイズ。クエリが大きな結果セットを返す場合は、この値を増やしてください。 |
Spark
Spark のデフォルトのメモリ割り当ては控えめです。クラスターのサイズとワークロードに基づいて、次のパラメーターを調整してください。
| パラメーター | スコープ | 説明 |
|---|---|---|
spark.driver.memory |
ドライバー | Spark ドライバーのヒープサイズ。ドライバーが大きなブロードキャスト変数を処理したり、大量のデータを収集したりする場合は、この値を増やしてください。 |
spark.driver.memoryOverhead |
ドライバー | ドライバー JVM 用に予約されるオフヒープメモリ。クラスターの規模とワークロードに基づいて調整します。 |
spark.executor.memory |
エグゼキュータ | 各エグゼキュータのヒープサイズ。これは、エグゼキュータのパフォーマンスを調整するための主要なパラメーターです。 |
これらのパラメーターを spark-submit 経由で渡すことで、クラスター上の他のワークロードに影響を与えることなく、ジョブレベルで適用できます。
spark-submit \
--conf spark.driver.memory=4g \
--conf spark.driver.memoryOverhead=512m \
--conf spark.executor.memory=8g \
...
Spark のメモリ構成オプションの完全なリストについては、「Spark のメモリ管理」をご参照ください。
データリネージのサポート
DataWorks のすべての EMR ノードタイプがリネージデータを生成するわけではありません。リネージに依存するパイプラインを設計する前に、以下の制約を確認してください。
| ノードタイプ | テーブルレベルのリネージ | 列レベルのリネージ |
|---|---|---|
| EMR Hive | サポート済み | サポート済み |
| EMR Spark | サポート済み (Spark 2.x のみ) | 非サポート |
| EMR Spark SQL | サポート済み (Spark 2.x のみ) | 非サポート |
| EMR MR | 非サポート | 非サポート |
| EMR Presto | 非サポート | 非サポート |
HDFS
HDFS デーモンのメモリは、次のパラメーターによって制御されます。クラスターのサイズに基づいてこれらを調整してください。データノードが多く、名前空間の負荷が高い大規模なクラスターでは、より多くのヒープが必要になります。
| パラメーター | コンポーネント | 説明 |
|---|---|---|
hadoop_namenode_heapsize |
NameNode | NameNode JVM のヒープサイズ。ファイルとブロックの数が多いクラスターでは、この値を増やしてください。 |
hadoop_datanode_heapsize |
DataNode | 各 DataNode JVM のヒープサイズ。 |
hadoop_secondary_namenode_heapsize |
Secondary NameNode | 定期的なチェックポイント処理を担う Secondary NameNode のヒープサイズ。 |
hadoop_namenode_opts |
NameNode | GC チューニングフラグなど、NameNode の追加の JVM オプション。 |
環境間のメタデータ隔離
DataWorks ワークスペースが標準モードで実行されている場合、開発環境用と本番環境用に 2 つの個別の EMR クラスターを登録する必要があります。両方とも [設定センター] の [データソース] ページで登録します。
データ隔離の要件を満たすには、各クラスターのメタデータを個別の ApsaraDB RDS データベースでバックアップします。両方の環境に単一のデータベースを使用すると、開発環境の変更が本番環境のメタデータに影響を及ぼす可能性があり、環境の隔離という目的が損なわれます。
設定手順とその他の注意事項については、「DataWorks での EMR タスク開発に関する注意事項」をご参照ください。